%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/vendor/async-aws/core/src/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/vendor/async-aws/core/src/Request.php |
<?php
namespace AsyncAws\Core;
use AsyncAws\Core\Exception\LogicException;
use AsyncAws\Core\Stream\RequestStream;
/**
* Representation of an HTTP Request.
*
* @author Jérémy Derussé <jeremy@derusse.com>
*
* @internal
*/
class Request
{
private $method;
private $uri;
private $headers;
private $body;
private $query;
private $endpoint;
private $parsed;
/**
* @param string[] $query
* @param string[] $headers
*/
public function __construct(string $method, string $uri, array $query, array $headers, RequestStream $body)
{
$this->method = $method;
$this->uri = $uri;
$this->headers = [];
foreach ($headers as $key => $value) {
$this->headers[strtolower($key)] = (string) $value;
}
$this->body = $body;
$this->query = $query;
$this->endpoint = '';
}
public function getMethod(): string
{
return $this->method;
}
public function setMethod(string $method): void
{
$this->method = $method;
}
public function getUri(): string
{
return $this->uri;
}
public function hasHeader($name): bool
{
return \array_key_exists(strtolower($name), $this->headers);
}
public function setHeader($name, ?string $value): void
{
$this->headers[strtolower($name)] = $value;
}
public function getHeaders(): array
{
return $this->headers;
}
public function getHeader(string $name): ?string
{
return $this->headers[strtolower($name)] ?? null;
}
public function removeHeader(string $name): void
{
unset($this->headers[strtolower($name)]);
}
public function getBody(): RequestStream
{
return $this->body;
}
public function setBody(RequestStream $body)
{
$this->body = $body;
}
public function hasQueryAttribute($name): bool
{
return \array_key_exists($name, $this->query);
}
public function removeQueryAttribute($name): void
{
unset($this->query[$name]);
$this->endpoint = '';
}
public function setQueryAttribute($name, $value): void
{
$this->query[$name] = $value;
$this->endpoint = '';
}
public function getQueryAttribute(string $name): ?string
{
return $this->query[$name] ?? null;
}
public function getQuery(): array
{
return $this->query;
}
public function getEndpoint(): string
{
if (empty($this->endpoint)) {
$this->endpoint = $this->parsed['scheme'] . '://' . $this->parsed['host'] . (isset($this->parsed['port']) ? ':' . $this->parsed['port'] : '') . $this->uri . ($this->query ? (false === strpos($this->uri, '?') ? '?' : '&') . http_build_query($this->query) : '');
}
return $this->endpoint;
}
public function setEndpoint(string $endpoint): void
{
if (!empty($this->endpoint)) {
throw new LogicException('Request::$endpoint cannot be changed after it has a value.');
}
$this->endpoint = $endpoint;
$this->parsed = parse_url($this->endpoint);
parse_str($this->parsed['query'] ?? '', $this->query);
$this->uri = $this->parsed['path'] ?? '/';
}
}