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