diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 12:44:18 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 12:44:18 +0000 |
commit | 23be945fd2810ee82e3a23cbcd2352c9bda43d4f (patch) | |
tree | dd511b321f308264952cffb005a4288ea4e478e6 /library/vendor/iplx/Http/Request.php | |
parent | Initial commit. (diff) | |
download | icingaweb2-module-graphite-upstream.tar.xz icingaweb2-module-graphite-upstream.zip |
Adding upstream version 1.2.2.upstream/1.2.2upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'library/vendor/iplx/Http/Request.php')
-rw-r--r-- | library/vendor/iplx/Http/Request.php | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/library/vendor/iplx/Http/Request.php b/library/vendor/iplx/Http/Request.php new file mode 100644 index 0000000..b9fae7d --- /dev/null +++ b/library/vendor/iplx/Http/Request.php @@ -0,0 +1,143 @@ +<?php + +namespace iplx\Http; + +use Psr\Http\Message\RequestInterface; +use Psr\Http\Message\UriInterface; + +/** + * A HTTP request + */ +class Request implements RequestInterface +{ + use MessageTrait; + + /** + * HTTP method of the request + * + * @var string + */ + protected $method; + + /** + * The request target + * + * @var string|null + */ + protected $requestTarget; + + /** + * URI of the request + * + * @var UriInterface + */ + protected $uri; + + /** + * Create a new HTTP request + * + * @param string $method HTTP method + * @param string $uri URI + * @param array $headers Request headers + * @param string $body Request body + * @param string $protocolVersion Protocol version + */ + public function __construct($method, $uri, array $headers = [], $body = null, $protocolVersion = '1.1') + { + $this->method = $method; + $this->uri = new Uri($uri); + $this->setHeaders($headers); + $this->body = Stream::create($body); + $this->protocolVersion = $protocolVersion; + + $this->provideHostHeader(); + } + + public function getRequestTarget() + { + if ($this->requestTarget !== null) { + return $this->requestTarget; + } + + $requestTarget = $this->uri->getPath(); + + // Weak type checks to also check null + + if ($requestTarget == '') { + $requestTarget = '/'; + } + + if ($this->uri->getQuery() != '') { + $requestTarget .= '?' . $this->uri->getQuery(); + } + + return $requestTarget; + } + + public function withRequestTarget($requestTarget) + { + $request = clone $this; + $request->requestTarget = $requestTarget; + + return $request; + } + + public function getMethod() + { + return $this->method; + } + + public function withMethod($method) + { + $request = clone $this; + $request->method = $method; + + return $this; + } + + public function getUri() + { + return $this->uri; + } + + public function withUri(UriInterface $uri, $preserveHost = false) + { + $request = clone $this; + $request->uri = $uri; + + if (! $preserveHost) { + $this->provideHostHeader(true); + } + + return $this; + } + + protected function provideHostHeader($force = false) + { + if ($this->hasHeader('host')) { + if (! $force) { + return; + } + + $header = $this->headerNames['host']; + } else { + $header = 'Host'; + } + + $host = $this->uri->getHost(); + + // Weak type check to also check null + if ($host == '') { + $host = ''; + } else { + $port = $this->uri->getPort(); + + if ($port !== null) { + $host .= ":$port"; + } + } + + $this->headerNames['host'] = $header; + $this->headerValues['host'] = [$host]; + } +} |