Spaces:
Runtime error
Runtime error
File size: 1,878 Bytes
46252cd | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | <?php
declare(strict_types=1);
namespace OpenWA\Exceptions;
/**
* Raised when the API responds with a non-2xx status.
*
* Carries the HTTP status code and the parsed error body. Use the named
* subclass for common statuses, or branch on getStatus().
*/
class OpenWAApiException extends OpenWAException
{
private int $status;
/** @var mixed */
private $body;
private ?string $errorKind;
/**
* @param mixed $body
*/
public function __construct(string $message, int $status, $body = null, ?string $errorKind = null)
{
parent::__construct($message);
$this->status = $status;
$this->body = $body;
$this->errorKind = $errorKind;
}
public function getStatus(): int
{
return $this->status;
}
/** @return mixed */
public function getBody()
{
return $this->body;
}
public function getErrorKind(): ?string
{
return $this->errorKind;
}
/**
* Build the most specific OpenWAApiException subclass for a status code.
*
* @param mixed $body
*/
public static function classify(int $status, string $message, $body, ?string $errorKind): OpenWAApiException
{
return match ($status) {
401 => new OpenWAAuthException($message, $status, $body, $errorKind),
403 => new OpenWAForbiddenException($message, $status, $body, $errorKind),
404 => new OpenWANotFoundException($message, $status, $body, $errorKind),
409 => new OpenWAConflictException($message, $status, $body, $errorKind),
429 => new OpenWARateLimitException($message, $status, $body, $errorKind),
501 => new OpenWANotImplementedException($message, $status, $body, $errorKind),
default => new OpenWAApiException($message, $status, $body, $errorKind),
};
}
}
|