123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- <?php
- /*
- * Part of Shuzanne - An extensible sequel to an open-source imageboard.
- *
- * @package Shuzanne
- * @author MisleadingName, Shuzanne Contributors
- * @license MPL v2.0
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/.
- */
- namespace app\Controllers;
- use Pecee\SimpleRouter\SimpleRouter;
- use app\Interfaces\IRouteController;
- class ErrorController implements IRouteController
- {
- /**
- * @var array<int, string> HTTP status code lookup
- */
- private static array $codeLookup = [
- 100 => "Continue",
- 101 => "Switching Protocols",
- 102 => "Processing",
- 103 => "Early Hints",
- 200 => "OK",
- 201 => "Created",
- 202 => "Accepted",
- 203 => "Non-Authoritative Information",
- 204 => "No Content",
- 205 => "Reset Content",
- 206 => "Partial Content",
- 207 => "Multi-Status",
- 208 => "Already Reported",
- 226 => "IM Used",
- 300 => "Multiple Choices",
- 301 => "Moved Permanently",
- 302 => "Found",
- 303 => "See Other",
- 304 => "Not Modified",
- 305 => "Use Proxy",
- 306 => "Switch Proxy",
- 307 => "Temporary Redirect",
- 308 => "Permanent Redirect",
- 400 => "Bad Request",
- 401 => "Unauthorized",
- 402 => "Payment Required",
- 403 => "Forbidden",
- 404 => "Not Found",
- 405 => "Method Not Allowed",
- 406 => "Not Acceptable",
- 407 => "Proxy Authentication Required",
- 408 => "Request Timeout",
- 409 => "Conflict",
- 410 => "Gone",
- 411 => "Length Required",
- 412 => "Precondition Failed",
- 413 => "Request Entity Too Large",
- 414 => "Request-URI Too Long",
- 415 => "Unsupported Media Type",
- 416 => "Requested Range Not Satisfiable",
- 417 => "Expectation Failed",
- 418 => "I'm a teapot",
- 421 => "Misdirected Request",
- 422 => "Unprocessable Entity",
- 423 => "Locked",
- 424 => "Failed Dependency",
- 425 => "Too Early",
- 426 => "Upgrade Required",
- 428 => "Precondition Required",
- 429 => "Too Many Requests",
- 431 => "Request Header Fields Too Large",
- 451 => "Unavailable For Legal Reasons",
- 500 => "Internal Server Error",
- 501 => "Not Implemented",
- 502 => "Bad Gateway",
- 503 => "Service Unavailable",
- 504 => "Gateway Timeout",
- 505 => "HTTP Version Not Supported",
- 506 => "Variant Also Negotiates",
- 507 => "Insufficient Storage",
- 508 => "Loop Detected",
- 510 => "Not Extended",
- 511 => "Network Authentication Required",
- 599 => "Network Connect Timeout Error",
- ];
- public static function HtmlError($code): string
- {
- return render("pages/error.twig", ["error_code" => $code, "error_name" => array_key_exists($code, self::$codeLookup) ? self::$codeLookup[$code] : "Unknown Error"]);
- }
- public static function ApiError($code)
- {
- return api_json([
- "error" => $code,
- "message" => self::$codeLookup[$code],
- ]);
- }
- static function RegisterRoutes(): void
- {
- // It's an error handler, no need for routing.
- }
- }
|