PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 2.4.6
Booking for Appointments and Events Calendar – Amelia v2.4.6
2.4.7 2.4.6 2.4.5 2.4.4 2.4.3 2.4.2 2.4.1 2.4 trunk 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.32 1.2.33 1.2.34 1.2.35 1.2.36 1.2.37 1.2.38 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.3
ameliabooking / vendor / slim / psr7 / src / Factory / UriFactory.php
ameliabooking / vendor / slim / psr7 / src / Factory Last commit date
RequestFactory.php 2 months ago ResponseFactory.php 2 months ago ServerRequestFactory.php 2 months ago StreamFactory.php 2 months ago UploadedFileFactory.php 2 months ago UriFactory.php 2 months ago
UriFactory.php
114 lines
1 <?php
2
3 /**
4 * Slim Framework (https://slimframework.com)
5 *
6 * @license https://github.com/slimphp/Slim-Psr7/blob/master/LICENSE.md (MIT License)
7 */
8
9 declare(strict_types=1);
10
11 namespace Slim\Psr7\Factory;
12
13 use InvalidArgumentException;
14 use AmeliaVendor\Psr\Http\Message\UriFactoryInterface;
15 use AmeliaVendor\Psr\Http\Message\UriInterface;
16 use Slim\Psr7\Uri;
17
18 use function count;
19 use function explode;
20 use function parse_url;
21 use function preg_match;
22 use function strpos;
23 use function strstr;
24 use function substr;
25
26 use const PHP_URL_QUERY;
27
28 class UriFactory implements UriFactoryInterface
29 {
30 /**
31 * {@inheritdoc}
32 */
33 public function createUri(string $uri = ''): UriInterface
34 {
35 $parts = parse_url($uri);
36
37 if ($parts === false) {
38 throw new InvalidArgumentException('URI cannot be parsed');
39 }
40
41 $scheme = $parts['scheme'] ?? '';
42 $user = $parts['user'] ?? '';
43 $pass = $parts['pass'] ?? '';
44 $host = $parts['host'] ?? '';
45 $port = $parts['port'] ?? null;
46 $path = $parts['path'] ?? '';
47 $query = $parts['query'] ?? '';
48 $fragment = $parts['fragment'] ?? '';
49
50 return new Uri($scheme, $host, $port, $path, $query, $fragment, $user, $pass);
51 }
52
53 /**
54 * Create new Uri from environment.
55 *
56 * @internal This method is not part of PSR-17
57 *
58 * @param array $globals The global server variables.
59 *
60 * @return Uri
61 */
62 public function createFromGlobals(array $globals): Uri
63 {
64 // Scheme
65 $https = $globals['HTTPS'] ?? false;
66 $scheme = !$https || $https === 'off' ? 'http' : 'https';
67
68 // Authority: Username and password
69 $username = $globals['PHP_AUTH_USER'] ?? '';
70 $password = $globals['PHP_AUTH_PW'] ?? '';
71
72 // Authority: Host
73 $host = '';
74 if (isset($globals['HTTP_HOST'])) {
75 $host = $globals['HTTP_HOST'];
76 } elseif (isset($globals['SERVER_NAME'])) {
77 $host = $globals['SERVER_NAME'];
78 }
79
80 // Authority: Port
81 $port = !empty($globals['SERVER_PORT']) ? (int)$globals['SERVER_PORT'] : ($scheme === 'https' ? 443 : 80);
82 if (preg_match('/^(\[[a-fA-F0-9:.]+])(:\d+)?\z/', $host, $matches)) {
83 $host = $matches[1];
84
85 if (isset($matches[2])) {
86 $port = (int) substr($matches[2], 1);
87 }
88 } else {
89 $pos = strpos($host, ':');
90 if ($pos !== false) {
91 $port = (int) substr($host, $pos + 1);
92 $host = strstr($host, ':', true);
93 }
94 }
95
96 // Query string
97 $queryString = $globals['QUERY_STRING'] ?? '';
98
99 // Request URI
100 $requestUri = '';
101 if (isset($globals['REQUEST_URI'])) {
102 $uriFragments = explode('?', $globals['REQUEST_URI']);
103 $requestUri = $uriFragments[0];
104
105 if ($queryString === '' && count($uriFragments) > 1) {
106 $queryString = parse_url('https://www.example.com' . $globals['REQUEST_URI'], PHP_URL_QUERY) ?? '';
107 }
108 }
109
110 // Build Uri and return
111 return new Uri($scheme, $host, $port, $requestUri, $queryString, '', $username, $password);
112 }
113 }
114