PluginProbe
AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI / 6.0.4
AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI v6.0.4
6.0.4 6.0.3 6.0.2 6.0.1 6.0.0 5.8.6 5.8.5 5.8.4 5.8.3 5.8.2 5.8.1 5.8.0 5.7.9.2 5.7.9.1 5.7.8 5.7.9 5.7.6 5.7.7 5.7.5 5.7.4 5.7.3 5.7.2 5.7.1 trunk 5.6.0 All 35 releases
← All changes | integrations/mailchimp/vendor/guzzlehttp/psr7/src/Request.php +159 -0 5.7.6 → 6.0.4 View file →
@@ -1,0 +1,159 @@
1 +<?php
2 +
3 +declare(strict_types=1);
4 +
5 +namespace GuzzleHttp\Psr7;
6 +
7 +use InvalidArgumentException;
8 +use Psr\Http\Message\RequestInterface;
9 +use Psr\Http\Message\StreamInterface;
10 +use Psr\Http\Message\UriInterface;
11 +
12 +/**
13 + * PSR-7 request implementation.
14 + */
15 +class Request implements RequestInterface
16 +{
17 + use MessageTrait;
18 +
19 + /** @var string */
20 + private $method;
21 +
22 + /** @var string|null */
23 + private $requestTarget;
24 +
25 + /** @var UriInterface */
26 + private $uri;
27 +
28 + /**
29 + * @param string $method HTTP method
30 + * @param string|UriInterface $uri URI
31 + * @param (string|string[])[] $headers Request headers
32 + * @param string|resource|StreamInterface|null $body Request body
33 + * @param string $version Protocol version
34 + */
35 + public function __construct(
36 + string $method,
37 + $uri,
38 + array $headers = [],
39 + $body = null,
40 + string $version = '1.1'
41 + ) {
42 + $this->assertMethod($method);
43 + if (!$uri instanceof UriInterface) {
44 + $uri = new Uri($uri);
45 + }
46 +
47 + $this->method = strtoupper($method);
48 + $this->uri = $uri;
49 + $this->setHeaders($headers);
50 + $this->protocol = $version;
51 +
52 + if (!isset($this->headerNames['host'])) {
53 + $this->updateHostFromUri();
54 + }
55 +
56 + if ($body !== '' && $body !== null) {
57 + $this->stream = Utils::streamFor($body);
58 + }
59 + }
60 +
61 + public function getRequestTarget(): string
62 + {
63 + if ($this->requestTarget !== null) {
64 + return $this->requestTarget;
65 + }
66 +
67 + $target = $this->uri->getPath();
68 + if ($target === '') {
69 + $target = '/';
70 + }
71 + if ($this->uri->getQuery() != '') {
72 + $target .= '?'.$this->uri->getQuery();
73 + }
74 +
75 + return $target;
76 + }
77 +
78 + public function withRequestTarget($requestTarget): RequestInterface
79 + {
80 + if (preg_match('#\s#', $requestTarget)) {
81 + throw new InvalidArgumentException(
82 + 'Invalid request target provided; cannot contain whitespace'
83 + );
84 + }
85 +
86 + $new = clone $this;
87 + $new->requestTarget = $requestTarget;
88 +
89 + return $new;
90 + }
91 +
92 + public function getMethod(): string
93 + {
94 + return $this->method;
95 + }
96 +
97 + public function withMethod($method): RequestInterface
98 + {
99 + $this->assertMethod($method);
100 + $new = clone $this;
101 + $new->method = strtoupper($method);
102 +
103 + return $new;
104 + }
105 +
106 + public function getUri(): UriInterface
107 + {
108 + return $this->uri;
109 + }
110 +
111 + public function withUri(UriInterface $uri, $preserveHost = false): RequestInterface
112 + {
113 + if ($uri === $this->uri) {
114 + return $this;
115 + }
116 +
117 + $new = clone $this;
118 + $new->uri = $uri;
119 +
120 + if (!$preserveHost || !isset($this->headerNames['host'])) {
121 + $new->updateHostFromUri();
122 + }
123 +
124 + return $new;
125 + }
126 +
127 + private function updateHostFromUri(): void
128 + {
129 + $host = $this->uri->getHost();
130 +
131 + if ($host == '') {
132 + return;
133 + }
134 +
135 + if (($port = $this->uri->getPort()) !== null) {
136 + $host .= ':'.$port;
137 + }
138 +
139 + if (isset($this->headerNames['host'])) {
140 + $header = $this->headerNames['host'];
141 + } else {
142 + $header = 'Host';
143 + $this->headerNames['host'] = 'Host';
144 + }
145 + // Ensure Host is the first header.
146 + // See: https://datatracker.ietf.org/doc/html/rfc7230#section-5.4
147 + $this->headers = [$header => [$host]] + $this->headers;
148 + }
149 +
150 + /**
151 + * @param mixed $method
152 + */
153 + private function assertMethod($method): void
154 + {
155 + if (!is_string($method) || $method === '') {
156 + throw new InvalidArgumentException('Method must be a non-empty string.');
157 + }
158 + }
159 +}