Subversion Repositories php-qbpwcf

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
3 liveuser 1
<?php
2
 
3
namespace Guzzle\Http\Exception;
4
 
5
use Guzzle\Http\Message\RequestInterface;
6
use Guzzle\Http\Message\Response;
7
 
8
/**
9
 * Http request exception thrown when a bad response is received
10
 */
11
class BadResponseException extends RequestException
12
{
13
    /** @var Response */
14
    private $response;
15
 
16
    /**
17
     * Factory method to create a new response exception based on the response code.
18
     *
19
     * @param RequestInterface $request  Request
20
     * @param Response         $response Response received
21
     *
22
     * @return BadResponseException
23
     */
24
    public static function factory(RequestInterface $request, Response $response)
25
    {
26
        if ($response->isClientError()) {
27
            $label = 'Client error response';
28
            $class = __NAMESPACE__ . '\\ClientErrorResponseException';
29
        } elseif ($response->isServerError()) {
30
            $label = 'Server error response';
31
            $class = __NAMESPACE__ . '\\ServerErrorResponseException';
32
        } else {
33
            $label = 'Unsuccessful response';
34
            $class = __CLASS__;
35
        }
36
 
37
        $message = $label . PHP_EOL . implode(PHP_EOL, array(
38
            '[status code] ' . $response->getStatusCode(),
39
            '[reason phrase] ' . $response->getReasonPhrase(),
40
            '[url] ' . $request->getUrl(),
41
        ));
42
 
43
        $e = new $class($message);
44
        $e->setResponse($response);
45
        $e->setRequest($request);
46
 
47
        return $e;
48
    }
49
 
50
    /**
51
     * Set the response that caused the exception
52
     *
53
     * @param Response $response Response to set
54
     */
55
    public function setResponse(Response $response)
56
    {
57
        $this->response = $response;
58
    }
59
 
60
    /**
61
     * Get the response that caused the exception
62
     *
63
     * @return Response
64
     */
65
    public function getResponse()
66
    {
67
        return $this->response;
68
    }
69
}