header('Cache-Control', 'No-Store'); if (Helper::isRequestForApiV1($request)) { // @codeCoverageIgnoreStart try { $bearerToken = Helper::getBearerTokenFromRequest($request) ?? $request->api_token ?? ''; $service = Service::getFromBearerToken($bearerToken); $service->incrementStat(); } catch (ModelNotFoundException $e) { Log::error(sprintf('Could not increment stats %s', $e->getMessage())); } return $response; // @codeCoverageIgnoreEnd } /** @var \App\Models\Service|null */ if (\optional($service = app(Service::class))->id) { $service->incrementStat(); } /** @var object $data */ $data = $response->getData(); // If reponse is already a V2ApiResponse then just return it. This happens if error handler comes to action. if ( isset($data->status) and isset($data->data) and isset($data->version) and in_array($data->status, [ApiStatus::OK()->value, ApiStatus::KO()->value]) ) { return $response; } /** @var \App\Enums\ApiStatus $status */ $status = intval($response->getStatusCode() / 100) == 2 ? ApiStatus::OK() : ApiStatus::KO(); return $response->setData(new V2ApiResponse((object)$response->getData(), $status)); } }