Proyectos de Subversion Moodle

Rev

Rev 1 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 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
 */
1441 ariadna 26
final class HttpFactory implements RequestFactoryInterface, ResponseFactoryInterface, ServerRequestFactoryInterface, StreamFactoryInterface, UploadedFileFactoryInterface, UriFactoryInterface
1 efrain 27
{
28
    public function createUploadedFile(
29
        StreamInterface $stream,
1441 ariadna 30
        ?int $size = null,
1 efrain 31
        int $error = \UPLOAD_ERR_OK,
1441 ariadna 32
        ?string $clientFilename = null,
33
        ?string $clientMediaType = null
1 efrain 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
}