Api error and Api response fix to prevent imbricate ApiV2 Responses
This commit is contained in:
parent
9118e43452
commit
6b56929222
2 changed files with 26 additions and 5 deletions
|
|
@ -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
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue