Files
piratepoet/mailpoet/lib/Automation/Exceptions/Exception.php
Jan Jakes 79350b4282 Add basic set of exceptions compatible with WP REST API
This means the exception need to have string error code, HTTP status code, and a message,
as the WP REST API errors look as foolows:

{"code":"rest_invalid_json","message":"Invalid JSON body passed.","data":{"status":400,"json_error_code":4,"json_error_message":"Syntax error"}}

[MAILPOET-4135]
2022-02-21 09:56:26 +01:00

70 lines
1.5 KiB
PHP

<?php declare(strict_types = 1);
namespace MailPoet\Automation\Exceptions;
use Throwable;
/**
* Frames all MailPoet Automation exceptions ("$e instanceof MailPoet\Automation\Exception").
*/
abstract class Exception extends \Exception {
/** @var int */
protected $statusCode = 500;
/** @var string */
protected $errorCode;
/** @var string[] */
protected $errors = [];
final public function __construct(
string $message = null,
string $errorCode = null,
Throwable $previous = null
) {
parent::__construct($message ?? 'Unknown error.', 0, $previous);
$this->errorCode = $errorCode ?? 'mailpoet_automation_unknown_error';
}
/** @return static */
public static function create(Throwable $previous = null) {
return new static(null, null, $previous);
}
/** @return static */
public function withStatusCode(int $statusCode) {
$this->statusCode = $statusCode;
return $this;
}
/** @return static */
public function withErrorCode(string $errorCode) {
$this->errorCode = $errorCode;
return $this;
}
/** @return static */
public function withMessage(string $message) {
$this->message = $message;
return $this;
}
/** @return static */
public function withErrors(array $errors) {
$this->errors = $errors;
return $this;
}
public function getStatusCode(): int {
return $this->statusCode;
}
public function getErrorCode(): string {
return $this->errorCode;
}
public function getErrors(): array {
return $this->errors;
}
}