[ Index ]

PHP Cross Reference of phpBB-3.2.11-deutsch

title

Body

[close]

/vendor/guzzlehttp/guzzle/src/Exception/ -> RequestException.php (source)

   1  <?php
   2  namespace GuzzleHttp\Exception;
   3  
   4  use GuzzleHttp\Message\RequestInterface;
   5  use GuzzleHttp\Message\ResponseInterface;
   6  use GuzzleHttp\Ring\Exception\ConnectException;
   7  use GuzzleHttp\Exception\ConnectException as HttpConnectException;
   8  use GuzzleHttp\Ring\Future\FutureInterface;
   9  
  10  /**
  11   * HTTP Request exception
  12   */
  13  class RequestException extends TransferException
  14  {
  15      /** @var RequestInterface */
  16      private $request;
  17  
  18      /** @var ResponseInterface */
  19      private $response;
  20  
  21      public function __construct(
  22          $message,
  23          RequestInterface $request,
  24          ResponseInterface $response = null,
  25          \Exception $previous = null
  26      ) {
  27          // Set the code of the exception if the response is set and not future.
  28          $code = $response && !($response instanceof FutureInterface)
  29              ? $response->getStatusCode()
  30              : 0;
  31          parent::__construct($message, $code, $previous);
  32          $this->request = $request;
  33          $this->response = $response;
  34      }
  35  
  36      /**
  37       * Wrap non-RequestExceptions with a RequestException
  38       *
  39       * @param RequestInterface $request
  40       * @param \Exception       $e
  41       *
  42       * @return RequestException
  43       */
  44      public static function wrapException(RequestInterface $request, \Exception $e)
  45      {
  46          if ($e instanceof RequestException) {
  47              return $e;
  48          } elseif ($e instanceof ConnectException) {
  49              return new HttpConnectException($e->getMessage(), $request, null, $e);
  50          } else {
  51              return new RequestException($e->getMessage(), $request, null, $e);
  52          }
  53      }
  54  
  55      /**
  56       * Factory method to create a new exception with a normalized error message
  57       *
  58       * @param RequestInterface  $request  Request
  59       * @param ResponseInterface $response Response received
  60       * @param \Exception        $previous Previous exception
  61       *
  62       * @return self
  63       */
  64      public static function create(
  65          RequestInterface $request,
  66          ResponseInterface $response = null,
  67          \Exception $previous = null
  68      ) {
  69          if (!$response) {
  70              return new self('Error completing request', $request, null, $previous);
  71          }
  72  
  73          $level = floor($response->getStatusCode() / 100);
  74          if ($level == '4') {
  75              $label = 'Client error response';
  76              $className = __NAMESPACE__ . '\\ClientException';
  77          } elseif ($level == '5') {
  78              $label = 'Server error response';
  79              $className = __NAMESPACE__ . '\\ServerException';
  80          } else {
  81              $label = 'Unsuccessful response';
  82              $className = __CLASS__;
  83          }
  84  
  85          $message = $label . ' [url] ' . $request->getUrl()
  86              . ' [status code] ' . $response->getStatusCode()
  87              . ' [reason phrase] ' . $response->getReasonPhrase();
  88  
  89          return new $className($message, $request, $response, $previous);
  90      }
  91  
  92      /**
  93       * Get the request that caused the exception
  94       *
  95       * @return RequestInterface
  96       */
  97      public function getRequest()
  98      {
  99          return $this->request;
 100      }
 101  
 102      /**
 103       * Get the associated response
 104       *
 105       * @return ResponseInterface|null
 106       */
 107      public function getResponse()
 108      {
 109          return $this->response;
 110      }
 111  
 112      /**
 113       * Check if a response was received
 114       *
 115       * @return bool
 116       */
 117      public function hasResponse()
 118      {
 119          return $this->response !== null;
 120      }
 121  }


Generated: Wed Nov 11 20:33:01 2020 Cross-referenced by PHPXref 0.7.1