diff options
Diffstat (limited to 'wp-includes/Requests/src/Exception/Http.php')
-rw-r--r-- | wp-includes/Requests/src/Exception/Http.php | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/wp-includes/Requests/src/Exception/Http.php b/wp-includes/Requests/src/Exception/Http.php new file mode 100644 index 0000000..7efbc93 --- /dev/null +++ b/wp-includes/Requests/src/Exception/Http.php @@ -0,0 +1,78 @@ +<?php +/** + * Exception based on HTTP response + * + * @package Requests\Exceptions + */ + +namespace WpOrg\Requests\Exception; + +use WpOrg\Requests\Exception; +use WpOrg\Requests\Exception\Http\StatusUnknown; + +/** + * Exception based on HTTP response + * + * @package Requests\Exceptions + */ +class Http extends Exception { + /** + * HTTP status code + * + * @var integer + */ + protected $code = 0; + + /** + * Reason phrase + * + * @var string + */ + protected $reason = 'Unknown'; + + /** + * Create a new exception + * + * There is no mechanism to pass in the status code, as this is set by the + * subclass used. Reason phrases can vary, however. + * + * @param string|null $reason Reason phrase + * @param mixed $data Associated data + */ + public function __construct($reason = null, $data = null) { + if ($reason !== null) { + $this->reason = $reason; + } + + $message = sprintf('%d %s', $this->code, $this->reason); + parent::__construct($message, 'httpresponse', $data, $this->code); + } + + /** + * Get the status message. + * + * @return string + */ + public function getReason() { + return $this->reason; + } + + /** + * Get the correct exception class for a given error code + * + * @param int|bool $code HTTP status code, or false if unavailable + * @return string Exception class name to use + */ + public static function get_class($code) { + if (!$code) { + return StatusUnknown::class; + } + + $class = sprintf('\WpOrg\Requests\Exception\Http\Status%d', $code); + if (class_exists($class)) { + return $class; + } + + return StatusUnknown::class; + } +} |