Subversion Repositories cheapmusic

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
103 - 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
}