Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
 
3
namespace GuzzleHttp;
4
 
5
use Psr\Http\Message\RequestInterface;
6
use Psr\Http\Message\ResponseInterface;
7
use Psr\Http\Message\UriInterface;
8
 
9
/**
10
 * Represents data at the point after it was transferred either successfully
11
 * or after a network error.
12
 */
13
final class TransferStats
14
{
15
    /**
16
     * @var RequestInterface
17
     */
18
    private $request;
19
 
20
    /**
21
     * @var ResponseInterface|null
22
     */
23
    private $response;
24
 
25
    /**
26
     * @var float|null
27
     */
28
    private $transferTime;
29
 
30
    /**
31
     * @var array
32
     */
33
    private $handlerStats;
34
 
35
    /**
36
     * @var mixed|null
37
     */
38
    private $handlerErrorData;
39
 
40
    /**
41
     * @param RequestInterface       $request          Request that was sent.
42
     * @param ResponseInterface|null $response         Response received (if any)
43
     * @param float|null             $transferTime     Total handler transfer time.
44
     * @param mixed                  $handlerErrorData Handler error data.
45
     * @param array                  $handlerStats     Handler specific stats.
46
     */
47
    public function __construct(
48
        RequestInterface $request,
49
        ?ResponseInterface $response = null,
50
        ?float $transferTime = null,
51
        $handlerErrorData = null,
52
        array $handlerStats = []
53
    ) {
54
        $this->request = $request;
55
        $this->response = $response;
56
        $this->transferTime = $transferTime;
57
        $this->handlerErrorData = $handlerErrorData;
58
        $this->handlerStats = $handlerStats;
59
    }
60
 
61
    public function getRequest(): RequestInterface
62
    {
63
        return $this->request;
64
    }
65
 
66
    /**
67
     * Returns the response that was received (if any).
68
     */
69
    public function getResponse(): ?ResponseInterface
70
    {
71
        return $this->response;
72
    }
73
 
74
    /**
75
     * Returns true if a response was received.
76
     */
77
    public function hasResponse(): bool
78
    {
79
        return $this->response !== null;
80
    }
81
 
82
    /**
83
     * Gets handler specific error data.
84
     *
85
     * This might be an exception, a integer representing an error code, or
86
     * anything else. Relying on this value assumes that you know what handler
87
     * you are using.
88
     *
89
     * @return mixed
90
     */
91
    public function getHandlerErrorData()
92
    {
93
        return $this->handlerErrorData;
94
    }
95
 
96
    /**
97
     * Get the effective URI the request was sent to.
98
     */
99
    public function getEffectiveUri(): UriInterface
100
    {
101
        return $this->request->getUri();
102
    }
103
 
104
    /**
105
     * Get the estimated time the request was being transferred by the handler.
106
     *
107
     * @return float|null Time in seconds.
108
     */
109
    public function getTransferTime(): ?float
110
    {
111
        return $this->transferTime;
112
    }
113
 
114
    /**
115
     * Gets an array of all of the handler specific transfer data.
116
     */
117
    public function getHandlerStats(): array
118
    {
119
        return $this->handlerStats;
120
    }
121
 
122
    /**
123
     * Get a specific handler statistic from the handler by name.
124
     *
125
     * @param string $stat Handler specific transfer stat to retrieve.
126
     *
127
     * @return mixed|null
128
     */
129
    public function getHandlerStat(string $stat)
130
    {
131
        return $this->handlerStats[$stat] ?? null;
132
    }
133
}