krz/vox-populi

A Tumblr web client.

clone: git clone https://gitbay.org/krz/vox-populi.git

main: vendor/guzzlehttp/guzzle/src/TransferStats.php · raw

  1<?php
  2namespace GuzzleHttp;
  3
  4use Psr\Http\Message\RequestInterface;
  5use Psr\Http\Message\ResponseInterface;
  6use 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 */
 12final 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|null $response         Response received (if any)
 23     * @param float|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|null 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}