1 <?php 2 3 declare(strict_types=1); 4 5 namespace GuzzleHttp\Psr7; 6 7 use Psr\Http\Message\RequestFactoryInterface; 8 use Psr\Http\Message\RequestInterface; 9 use Psr\Http\Message\ResponseFactoryInterface; 10 use Psr\Http\Message\ResponseInterface; 11 use Psr\Http\Message\ServerRequestFactoryInterface; 12 use Psr\Http\Message\ServerRequestInterface; 13 use Psr\Http\Message\StreamFactoryInterface; 14 use Psr\Http\Message\StreamInterface; 15 use Psr\Http\Message\UploadedFileFactoryInterface; 16 use Psr\Http\Message\UploadedFileInterface; 17 use Psr\Http\Message\UriFactoryInterface; 18 use Psr\Http\Message\UriInterface; 19 20 /** 21 * Implements all of the PSR-17 interfaces. 22 * 23 * Note: in consuming code it is recommended to require the implemented interfaces 24 * and inject the instance of this class multiple times. 25 */ 26 final class HttpFactory implements 27 RequestFactoryInterface, 28 ResponseFactoryInterface, 29 ServerRequestFactoryInterface, 30 StreamFactoryInterface, 31 UploadedFileFactoryInterface, 32 UriFactoryInterface 33 { 34 public function createUploadedFile( 35 StreamInterface $stream, 36 int $size = null, 37 int $error = \UPLOAD_ERR_OK, 38 string $clientFilename = null, 39 string $clientMediaType = null 40 ): UploadedFileInterface { 41 if ($size === null) { 42 $size = $stream->getSize(); 43 } 44 45 return new UploadedFile($stream, $size, $error, $clientFilename, $clientMediaType); 46 } 47 48 public function createStream(string $content = ''): StreamInterface 49 { 50 return Utils::streamFor($content); 51 } 52 53 public function createStreamFromFile(string $file, string $mode = 'r'): StreamInterface 54 { 55 try { 56 $resource = Utils::tryFopen($file, $mode); 57 } catch (\RuntimeException $e) { 58 if ('' === $mode || false === \in_array($mode[0], ['r', 'w', 'a', 'x', 'c'], true)) { 59 throw new \InvalidArgumentException(sprintf('Invalid file opening mode "%s"', $mode), 0, $e); 60 } 61 62 throw $e; 63 } 64 65 return Utils::streamFor($resource); 66 } 67 68 public function createStreamFromResource($resource): StreamInterface 69 { 70 return Utils::streamFor($resource); 71 } 72 73 public function createServerRequest(string $method, $uri, array $serverParams = []): ServerRequestInterface 74 { 75 if (empty($method)) { 76 if (!empty($serverParams['REQUEST_METHOD'])) { 77 $method = $serverParams['REQUEST_METHOD']; 78 } else { 79 throw new \InvalidArgumentException('Cannot determine HTTP method'); 80 } 81 } 82 83 return new ServerRequest($method, $uri, [], null, '1.1', $serverParams); 84 } 85 86 public function createResponse(int $code = 200, string $reasonPhrase = ''): ResponseInterface 87 { 88 return new Response($code, [], null, '1.1', $reasonPhrase); 89 } 90 91 public function createRequest(string $method, $uri): RequestInterface 92 { 93 return new Request($method, $uri); 94 } 95 96 public function createUri(string $uri = ''): UriInterface 97 { 98 return new Uri($uri); 99 } 100 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body