summaryrefslogtreecommitdiff
path: root/src/Errors/ErrorResponse.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Errors/ErrorResponse.php')
-rw-r--r--src/Errors/ErrorResponse.php30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/Errors/ErrorResponse.php b/src/Errors/ErrorResponse.php
new file mode 100644
index 0000000..6248659
--- /dev/null
+++ b/src/Errors/ErrorResponse.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace App\Errors;
+
+use Symfony\Component\HttpFoundation\JsonResponse;
+
+class ErrorResponse extends JsonResponse
+{
+ public function __construct(ErrorCode $code, string $message, int $httpCode)
+ {
+ parent::__construct(
+ [
+ "errcode" => $code,
+ "error" => $message,
+ ],
+ $httpCode
+ );
+ }
+
+ public static function fromException(Exception $exception): self
+ {
+ $self = new self($exception->getErrorCode(), $exception->getMessage(), $exception->getCode());
+
+ $self->setData(
+ json_decode($self->data, true) + $exception->getAdditionalData()
+ );
+
+ return $self;
+ }
+}