You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
3.0 KiB
94 lines
3.0 KiB
<?php |
|
|
|
declare(strict_types=1); |
|
|
|
namespace GuzzleHttp\Psr7; |
|
|
|
use Psr\Http\Message\RequestFactoryInterface; |
|
use Psr\Http\Message\RequestInterface; |
|
use Psr\Http\Message\ResponseFactoryInterface; |
|
use Psr\Http\Message\ResponseInterface; |
|
use Psr\Http\Message\ServerRequestFactoryInterface; |
|
use Psr\Http\Message\ServerRequestInterface; |
|
use Psr\Http\Message\StreamFactoryInterface; |
|
use Psr\Http\Message\StreamInterface; |
|
use Psr\Http\Message\UploadedFileFactoryInterface; |
|
use Psr\Http\Message\UploadedFileInterface; |
|
use Psr\Http\Message\UriFactoryInterface; |
|
use Psr\Http\Message\UriInterface; |
|
|
|
/** |
|
* Implements all of the PSR-17 interfaces. |
|
* |
|
* Note: in consuming code it is recommended to require the implemented interfaces |
|
* and inject the instance of this class multiple times. |
|
*/ |
|
final class HttpFactory implements RequestFactoryInterface, ResponseFactoryInterface, ServerRequestFactoryInterface, StreamFactoryInterface, UploadedFileFactoryInterface, UriFactoryInterface |
|
{ |
|
public function createUploadedFile( |
|
StreamInterface $stream, |
|
int $size = null, |
|
int $error = \UPLOAD_ERR_OK, |
|
string $clientFilename = null, |
|
string $clientMediaType = null |
|
): UploadedFileInterface { |
|
if ($size === null) { |
|
$size = $stream->getSize(); |
|
} |
|
|
|
return new UploadedFile($stream, $size, $error, $clientFilename, $clientMediaType); |
|
} |
|
|
|
public function createStream(string $content = ''): StreamInterface |
|
{ |
|
return Utils::streamFor($content); |
|
} |
|
|
|
public function createStreamFromFile(string $file, string $mode = 'r'): StreamInterface |
|
{ |
|
try { |
|
$resource = Utils::tryFopen($file, $mode); |
|
} catch (\RuntimeException $e) { |
|
if ('' === $mode || false === \in_array($mode[0], ['r', 'w', 'a', 'x', 'c'], true)) { |
|
throw new \InvalidArgumentException(sprintf('Invalid file opening mode "%s"', $mode), 0, $e); |
|
} |
|
|
|
throw $e; |
|
} |
|
|
|
return Utils::streamFor($resource); |
|
} |
|
|
|
public function createStreamFromResource($resource): StreamInterface |
|
{ |
|
return Utils::streamFor($resource); |
|
} |
|
|
|
public function createServerRequest(string $method, $uri, array $serverParams = []): ServerRequestInterface |
|
{ |
|
if (empty($method)) { |
|
if (!empty($serverParams['REQUEST_METHOD'])) { |
|
$method = $serverParams['REQUEST_METHOD']; |
|
} else { |
|
throw new \InvalidArgumentException('Cannot determine HTTP method'); |
|
} |
|
} |
|
|
|
return new ServerRequest($method, $uri, [], null, '1.1', $serverParams); |
|
} |
|
|
|
public function createResponse(int $code = 200, string $reasonPhrase = ''): ResponseInterface |
|
{ |
|
return new Response($code, [], null, '1.1', $reasonPhrase); |
|
} |
|
|
|
public function createRequest(string $method, $uri): RequestInterface |
|
{ |
|
return new Request($method, $uri); |
|
} |
|
|
|
public function createUri(string $uri = ''): UriInterface |
|
{ |
|
return new Uri($uri); |
|
} |
|
}
|
|
|