function handleHttpError($httpStatusCode, $options = []) { switch ($httpStatusCode) { case 400: $httpStatusName = 'Bad request'; $httpDescription = 'The server cannot or will not process the request due to a client error.'; $level = 'notice'; break; case 401: $httpStatusName = 'Unauthorized'; $httpDescription = 'The request has not been applied because it lacks valid authentication credentials for the target resource.'; $level = 'notice'; break; case 403: $httpStatusName = 'Forbidden'; $httpDescription = 'The server understood the request but refuses to authorize it.'; $level = 'notice'; break; case 404: $httpStatusName = 'Not found'; $httpDescription = 'The server did not find a current representation for the target resource.'; $level = 'notice'; break; case 405: $httpStatusName = 'Method not allowed'; $httpDescription = 'The method received in the request is known by the server but not supported by the target resource.'; $level = 'notice'; break; case 422: $httpStatusName = 'Unprocessable entity'; $httpDescription = 'The request was well-formed but was unable to be followed due to semantic errors.'; $level = 'notice'; break; case 500: $httpStatusName = 'Internal Server Error'; $httpDescription = 'The server encountered an unexpected condition which prevented it from fulfilling the request.'; $level = 'error'; break; default: $httpStatusName = $httpStatusCode; $httpDescription = $httpStatusCode; $level = 'error'; } $description = isset($options['description']) ? $options['description'] : $httpDescription; if (!isset($options['log']) or $options['log'] == true) { Log::$level($httpStatusCode . ' ' . $httpStatusName . ': ' . Request::fullUrl(), ['description' => $description, 'url' => Request::fullUrl(), 'headers' => Request::header(), 'ips' => Request::ips()]); } if (!isset($options['source']) or $options['source'] == 'gui') { return Response::view('errors.default', ['title' => $httpStatusCode . ' ' . $httpStatusName, 'description' => $description], $httpStatusCode); } elseif (isset($options['source']) && $options['source'] == 'api') { $response = Response::make(['message' => $description], $httpStatusCode); if ($httpStatusCode == 401) { $response->header('WWW-Authenticate', 'Lanager'); } return $response; } }