summaryrefslogtreecommitdiffstats
path: root/library/vendor/iplx/Http/Request.php
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 12:44:18 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 12:44:18 +0000
commit23be945fd2810ee82e3a23cbcd2352c9bda43d4f (patch)
treedd511b321f308264952cffb005a4288ea4e478e6 /library/vendor/iplx/Http/Request.php
parentInitial commit. (diff)
downloadicingaweb2-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.php143
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];
+ }
+}