[COMPOSER] Added predis/predis and updated packages
This commit is contained in:
148
vendor/php-http/message/src/Builder/ResponseBuilder.php
vendored
Normal file
148
vendor/php-http/message/src/Builder/ResponseBuilder.php
vendored
Normal file
@@ -0,0 +1,148 @@
|
||||
<?php
|
||||
|
||||
namespace Http\Message\Builder;
|
||||
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
|
||||
/**
|
||||
* Fills response object with values.
|
||||
*/
|
||||
class ResponseBuilder
|
||||
{
|
||||
/**
|
||||
* The response to be built.
|
||||
*
|
||||
* @var ResponseInterface
|
||||
*/
|
||||
protected $response;
|
||||
|
||||
/**
|
||||
* Create builder for the given response.
|
||||
*
|
||||
* @param ResponseInterface $response
|
||||
*/
|
||||
public function __construct(ResponseInterface $response)
|
||||
{
|
||||
$this->response = $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return response.
|
||||
*
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
public function getResponse()
|
||||
{
|
||||
return $this->response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add headers represented by an array of header lines.
|
||||
*
|
||||
* @param string[] $headers Response headers as array of header lines.
|
||||
*
|
||||
* @return $this
|
||||
*
|
||||
* @throws \UnexpectedValueException For invalid header values.
|
||||
* @throws \InvalidArgumentException For invalid status code arguments.
|
||||
*/
|
||||
public function setHeadersFromArray(array $headers)
|
||||
{
|
||||
$status = array_shift($headers);
|
||||
$this->setStatus($status);
|
||||
|
||||
foreach ($headers as $headerLine) {
|
||||
$headerLine = trim($headerLine);
|
||||
if ('' === $headerLine) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$this->addHeader($headerLine);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add headers represented by a single string.
|
||||
*
|
||||
* @param string $headers Response headers as single string.
|
||||
*
|
||||
* @return $this
|
||||
*
|
||||
* @throws \InvalidArgumentException if $headers is not a string on object with __toString()
|
||||
* @throws \UnexpectedValueException For invalid header values.
|
||||
*/
|
||||
public function setHeadersFromString($headers)
|
||||
{
|
||||
if (!(is_string($headers)
|
||||
|| (is_object($headers) && method_exists($headers, '__toString')))
|
||||
) {
|
||||
throw new \InvalidArgumentException(
|
||||
sprintf(
|
||||
'%s expects parameter 1 to be a string, %s given',
|
||||
__METHOD__,
|
||||
is_object($headers) ? get_class($headers) : gettype($headers)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
$this->setHeadersFromArray(explode("\r\n", $headers));
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set response status from a status string.
|
||||
*
|
||||
* @param string $statusLine Response status as a string.
|
||||
*
|
||||
* @return $this
|
||||
*
|
||||
* @throws \InvalidArgumentException For invalid status line.
|
||||
*/
|
||||
public function setStatus($statusLine)
|
||||
{
|
||||
$parts = explode(' ', $statusLine, 3);
|
||||
if (count($parts) < 2 || 0 !== strpos(strtolower($parts[0]), 'http/')) {
|
||||
throw new \InvalidArgumentException(
|
||||
sprintf('"%s" is not a valid HTTP status line', $statusLine)
|
||||
);
|
||||
}
|
||||
|
||||
$reasonPhrase = count($parts) > 2 ? $parts[2] : '';
|
||||
$this->response = $this->response
|
||||
->withStatus((int) $parts[1], $reasonPhrase)
|
||||
->withProtocolVersion(substr($parts[0], 5));
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add header represented by a string.
|
||||
*
|
||||
* @param string $headerLine Response header as a string.
|
||||
*
|
||||
* @return $this
|
||||
*
|
||||
* @throws \InvalidArgumentException For invalid header names or values.
|
||||
*/
|
||||
public function addHeader($headerLine)
|
||||
{
|
||||
$parts = explode(':', $headerLine, 2);
|
||||
if (2 !== count($parts)) {
|
||||
throw new \InvalidArgumentException(
|
||||
sprintf('"%s" is not a valid HTTP header line', $headerLine)
|
||||
);
|
||||
}
|
||||
$name = trim($parts[0]);
|
||||
$value = trim($parts[1]);
|
||||
if ($this->response->hasHeader($name)) {
|
||||
$this->response = $this->response->withAddedHeader($name, $value);
|
||||
} else {
|
||||
$this->response = $this->response->withHeader($name, $value);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user