<?php
namespace Guzzle\Http\Exception;
use Guzzle\Http\Message\RequestInterface;
use Guzzle\Http\Message\Response;
/**
 * Http request exception thrown when a bad response is received
 */
class BadResponseException extends RequestException {
  /**
   * @var Response
   */
  private $response;
  /**
   * Factory method to create a new response exception based on the response code.
   *
   * @param RequestInterface $request  Request
   * @param Response         $response Response received
   *
   * @return BadResponseException
   */
  public static function factory(RequestInterface $request, Response $response) {
    if ($response
      ->isClientError()) {
      $label = 'Client error response';
      $class = __NAMESPACE__ . '\\ClientErrorResponseException';
    }
    elseif ($response
      ->isServerError()) {
      $label = 'Server error response';
      $class = __NAMESPACE__ . '\\ServerErrorResponseException';
    }
    else {
      $label = 'Unsuccessful response';
      $class = __CLASS__;
      $e = new self();
    }
    $message = $label . PHP_EOL . implode(PHP_EOL, array(
      '[status code] ' . $response
        ->getStatusCode(),
      '[reason phrase] ' . $response
        ->getReasonPhrase(),
      '[url] ' . $request
        ->getUrl(),
      '[request] ' . (string) $request,
      '[response] ' . (string) $response,
    ));
    $e = new $class($message);
    $e
      ->setResponse($response);
    $e
      ->setRequest($request);
    return $e;
  }
  /**
   * Set the response that caused the exception
   *
   * @param Response $response Response to set
   */
  public function setResponse(Response $response) {
    $this->response = $response;
  }
  /**
   * Get the response that caused the exception
   *
   * @return Response
   */
  public function getResponse() {
    return $this->response;
  }
}| 
            Name | 
                  Description | 
|---|---|
| BadResponseException | Http request exception thrown when a bad response is received |