diff --git a/app/Exceptions/Api/V2/ApiErrorException.php b/app/Exceptions/Api/V2/ApiErrorException.php index 37c3914..24c0179 100644 --- a/app/Exceptions/Api/V2/ApiErrorException.php +++ b/app/Exceptions/Api/V2/ApiErrorException.php @@ -26,12 +26,22 @@ class ApiErrorException extends Exception */ protected $error; + /** @var string */ + protected $message; + + /** @var int */ protected $httpCode; - public function __construct(ApiError $error, int $httpCode = 400, Throwable $previous = null) + public function __construct(ApiError $error, int $httpCode = 400, string $message = '', Throwable $previous = null) { + $this->error = $error; + $this->message = $message; $this->httpCode = $httpCode; - parent::__construct($error->label, $error->value, $previous); + parent::__construct( + strlen($this->message) ? $this->message : $error->label, + $error->value, + $previous + ); } /** diff --git a/app/Http/Middleware/ApiResponse.php b/app/Http/Middleware/ApiResponse.php index 1a9eb8e..b127bba 100644 --- a/app/Http/Middleware/ApiResponse.php +++ b/app/Http/Middleware/ApiResponse.php @@ -23,6 +23,7 @@ class ApiResponse */ public function handle(Request $request, Closure $next) { + /** @var \Illuminate\Http\JsonResponse $response */ $response = $next($request); $isApiV1Request = Helper::isRequestForApiV1($request); @@ -52,10 +53,20 @@ class ApiResponse Log::error(sprintf('Could not increment stats %s', $e->getMessage())); } + $data = $response->getData(); + + // Is reponse is already a V2ApiResponse then just return it + if ( + isset($data->status) and + isset($data->data) and + isset($data->message) and + in_array($data->status, [ApiStatus::OK()->value, ApiStatus::KO()->value]) + ) { + return $response; + } + /** @ var \App\Enums\ApiStatus */ $status = intval($response->getStatusCode() / 100) == 2 ? ApiStatus::OK() : ApiStatus::KO(); - $response->setData(new V2ApiResponse((object)$response->getData(), $status)); - - return $response; + return $response->setData(new V2ApiResponse((object)$response->getData(), $status)); } }