1<?php
2/**
3 * Port utilities for Requests
4 *
5 * @package Requests\Utilities
6 * @since 2.0.0
7 */
8
9namespace WpOrg\Requests;
10
11use WpOrg\Requests\Exception;
12use WpOrg\Requests\Exception\InvalidArgument;
13
14/**
15 * Find the correct port depending on the Request type.
16 *
17 * @package Requests\Utilities
18 * @since 2.0.0
19 */
20final class Port {
21
22 /**
23 * Port to use with Acap requests.
24 *
25 * @var int
26 */
27 const ACAP = 674;
28
29 /**
30 * Port to use with Dictionary requests.
31 *
32 * @var int
33 */
34 const DICT = 2628;
35
36 /**
37 * Port to use with HTTP requests.
38 *
39 * @var int
40 */
41 const HTTP = 80;
42
43 /**
44 * Port to use with HTTP over SSL requests.
45 *
46 * @var int
47 */
48 const HTTPS = 443;
49
50 /**
51 * Retrieve the port number to use.
52 *
53 * @param string $type Request type.
54 * The following requests types are supported:
55 * 'acap', 'dict', 'http' and 'https'.
56 *
57 * @return int
58 *
59 * @throws \WpOrg\Requests\Exception\InvalidArgument When a non-string input has been passed.
60 * @throws \WpOrg\Requests\Exception When a non-supported port is requested ('portnotsupported').
61 */
62 public static function get($type) {
63 if (!is_string($type)) {
64 throw InvalidArgument::create(1, '$type', 'string', gettype($type));
65 }
66
67 $type = strtoupper($type);
68 if (!defined("self::{$type}")) {
69 $message = sprintf('Invalid port type (%s) passed', $type);
70 throw new Exception($message, 'portnotsupported');
71 }
72
73 return constant("self::{$type}");
74 }
75}
76