Initial Commit
This commit is contained in:
103
dependencies/nyholm/psr7/src/RequestTrait.php
vendored
Normal file
103
dependencies/nyholm/psr7/src/RequestTrait.php
vendored
Normal file
@ -0,0 +1,103 @@
|
||||
<?php
|
||||
|
||||
declare (strict_types=1);
|
||||
namespace WP_Ultimo\Dependencies\Nyholm\Psr7;
|
||||
|
||||
use WP_Ultimo\Dependencies\Psr\Http\Message\RequestInterface;
|
||||
use WP_Ultimo\Dependencies\Psr\Http\Message\UriInterface;
|
||||
/**
|
||||
* @author Michael Dowling and contributors to guzzlehttp/psr7
|
||||
* @author Tobias Nyholm <tobias.nyholm@gmail.com>
|
||||
* @author Martijn van der Ven <martijn@vanderven.se>
|
||||
*
|
||||
* @internal should not be used outside of Nyholm/Psr7 as it does not fall under our BC promise
|
||||
*/
|
||||
trait RequestTrait
|
||||
{
|
||||
/** @var string */
|
||||
private $method;
|
||||
/** @var string|null */
|
||||
private $requestTarget;
|
||||
/** @var UriInterface|null */
|
||||
private $uri;
|
||||
public function getRequestTarget() : string
|
||||
{
|
||||
if (null !== $this->requestTarget) {
|
||||
return $this->requestTarget;
|
||||
}
|
||||
if ('' === ($target = $this->uri->getPath())) {
|
||||
$target = '/';
|
||||
}
|
||||
if ('' !== $this->uri->getQuery()) {
|
||||
$target .= '?' . $this->uri->getQuery();
|
||||
}
|
||||
return $target;
|
||||
}
|
||||
/**
|
||||
* @return static
|
||||
*/
|
||||
public function withRequestTarget($requestTarget) : RequestInterface
|
||||
{
|
||||
if (!\is_string($requestTarget)) {
|
||||
throw new \InvalidArgumentException('Request target must be a string');
|
||||
}
|
||||
if (\preg_match('#\\s#', $requestTarget)) {
|
||||
throw new \InvalidArgumentException('Invalid request target provided; cannot contain whitespace');
|
||||
}
|
||||
$new = clone $this;
|
||||
$new->requestTarget = $requestTarget;
|
||||
return $new;
|
||||
}
|
||||
public function getMethod() : string
|
||||
{
|
||||
return $this->method;
|
||||
}
|
||||
/**
|
||||
* @return static
|
||||
*/
|
||||
public function withMethod($method) : RequestInterface
|
||||
{
|
||||
if (!\is_string($method)) {
|
||||
throw new \InvalidArgumentException('Method must be a string');
|
||||
}
|
||||
$new = clone $this;
|
||||
$new->method = $method;
|
||||
return $new;
|
||||
}
|
||||
public function getUri() : UriInterface
|
||||
{
|
||||
return $this->uri;
|
||||
}
|
||||
/**
|
||||
* @return static
|
||||
*/
|
||||
public function withUri(UriInterface $uri, $preserveHost = \false) : RequestInterface
|
||||
{
|
||||
if ($uri === $this->uri) {
|
||||
return $this;
|
||||
}
|
||||
$new = clone $this;
|
||||
$new->uri = $uri;
|
||||
if (!$preserveHost || !$this->hasHeader('Host')) {
|
||||
$new->updateHostFromUri();
|
||||
}
|
||||
return $new;
|
||||
}
|
||||
private function updateHostFromUri() : void
|
||||
{
|
||||
if ('' === ($host = $this->uri->getHost())) {
|
||||
return;
|
||||
}
|
||||
if (null !== ($port = $this->uri->getPort())) {
|
||||
$host .= ':' . $port;
|
||||
}
|
||||
if (isset($this->headerNames['host'])) {
|
||||
$header = $this->headerNames['host'];
|
||||
} else {
|
||||
$this->headerNames['host'] = $header = 'Host';
|
||||
}
|
||||
// Ensure Host is the first header.
|
||||
// See: http://tools.ietf.org/html/rfc7230#section-5.4
|
||||
$this->headers = [$header => [$host]] + $this->headers;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user