source: vendor/guzzlehttp/psr7/src/HttpFactory.php@ e3d4e0a

Last change on this file since e3d4e0a was e3d4e0a, checked in by Vlado 222039 <vlado.popovski@…>, 7 days ago

Upload project files

  • Property mode set to 100644
File size: 3.0 KB
RevLine 
[e3d4e0a]1<?php
2
3declare(strict_types=1);
4
5namespace GuzzleHttp\Psr7;
6
7use Psr\Http\Message\RequestFactoryInterface;
8use Psr\Http\Message\RequestInterface;
9use Psr\Http\Message\ResponseFactoryInterface;
10use Psr\Http\Message\ResponseInterface;
11use Psr\Http\Message\ServerRequestFactoryInterface;
12use Psr\Http\Message\ServerRequestInterface;
13use Psr\Http\Message\StreamFactoryInterface;
14use Psr\Http\Message\StreamInterface;
15use Psr\Http\Message\UploadedFileFactoryInterface;
16use Psr\Http\Message\UploadedFileInterface;
17use Psr\Http\Message\UriFactoryInterface;
18use 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 */
26final class HttpFactory implements RequestFactoryInterface, ResponseFactoryInterface, ServerRequestFactoryInterface, StreamFactoryInterface, UploadedFileFactoryInterface, UriFactoryInterface
27{
28 public function createUploadedFile(
29 StreamInterface $stream,
30 ?int $size = null,
31 int $error = \UPLOAD_ERR_OK,
32 ?string $clientFilename = null,
33 ?string $clientMediaType = null
34 ): UploadedFileInterface {
35 if ($size === null) {
36 $size = $stream->getSize();
37 }
38
39 return new UploadedFile($stream, $size, $error, $clientFilename, $clientMediaType);
40 }
41
42 public function createStream(string $content = ''): StreamInterface
43 {
44 return Utils::streamFor($content);
45 }
46
47 public function createStreamFromFile(string $file, string $mode = 'r'): StreamInterface
48 {
49 try {
50 $resource = Utils::tryFopen($file, $mode);
51 } catch (\RuntimeException $e) {
52 if ('' === $mode || false === \in_array($mode[0], ['r', 'w', 'a', 'x', 'c'], true)) {
53 throw new \InvalidArgumentException(sprintf('Invalid file opening mode "%s"', $mode), 0, $e);
54 }
55
56 throw $e;
57 }
58
59 return Utils::streamFor($resource);
60 }
61
62 public function createStreamFromResource($resource): StreamInterface
63 {
64 return Utils::streamFor($resource);
65 }
66
67 public function createServerRequest(string $method, $uri, array $serverParams = []): ServerRequestInterface
68 {
69 if (empty($method)) {
70 if (!empty($serverParams['REQUEST_METHOD'])) {
71 $method = $serverParams['REQUEST_METHOD'];
72 } else {
73 throw new \InvalidArgumentException('Cannot determine HTTP method');
74 }
75 }
76
77 return new ServerRequest($method, $uri, [], null, '1.1', $serverParams);
78 }
79
80 public function createResponse(int $code = 200, string $reasonPhrase = ''): ResponseInterface
81 {
82 return new Response($code, [], null, '1.1', $reasonPhrase);
83 }
84
85 public function createRequest(string $method, $uri): RequestInterface
86 {
87 return new Request($method, $uri);
88 }
89
90 public function createUri(string $uri = ''): UriInterface
91 {
92 return new Uri($uri);
93 }
94}
Note: See TracBrowser for help on using the repository browser.