56 lines
3.8 KiB
Python
56 lines
3.8 KiB
Python
from http import HTTPStatus
|
|
from fastapi import Request, Response
|
|
from fastapi.templating import Jinja2Templates
|
|
|
|
default_messages = {
|
|
400: "リクエストの構文が正しくないか、パラメータが不正です。",
|
|
401: "このリソースにアクセスするには認証が必要です。",
|
|
402: "このリソースへのアクセスには支払いが必要です。",
|
|
403: "このリソースへのアクセス権がありません。",
|
|
404: "リクエストしたページまたはリソースが見つかりません。",
|
|
405: "このリソースではそのHTTPメソッドは許可されていません。",
|
|
406: "リクエストのAcceptヘッダーと一致するレスポンスを生成できません。",
|
|
407: "このリソースにアクセスするにはプロキシの認証が必要です。",
|
|
408: "リクエストが時間内に完了しませんでした。",
|
|
409: "現在のリソースの状態とリクエストが競合しています。",
|
|
410: "リクエストしたリソースは恒久的に削除されました。",
|
|
411: "リクエストにはContent-Lengthヘッダーが必要です。",
|
|
412: "リクエストの前提条件がサーバーの状態と一致しません。",
|
|
413: "リクエストのボディがサーバーの許容サイズを超えています。",
|
|
414: "リクエストURIがサーバーの処理できる長さを超えています。",
|
|
415: "リクエストのメディア形式はサポートされていません。",
|
|
416: "リクエストしたレンジはリソースのサイズ内に存在しません。",
|
|
417: "リクエストのExpectヘッダーの要件をサーバーが満たせません。",
|
|
418: "このサーバーはティーポットです。コーヒーを淹れることはできません。",
|
|
421: "リクエストが意図しないサーバーに到達しました。",
|
|
426: "このリクエストを処理するにはプロトコルのアップグレードが必要です。",
|
|
}
|
|
|
|
default_joke_messages = {
|
|
400: "日本語でおk",
|
|
401: "見たいのならログインすることね",
|
|
402: "夢が欲しけりゃ金払え!",
|
|
403: "あんたなんかに見せるもんですか!",
|
|
404: "そんなページ知らないっ!",
|
|
405: "そのMethodはNot Allowedだよ",
|
|
406: "すまんがその条件ではお渡しできない。",
|
|
407: "うちのプロキシ使うんだったらまずログインしな。",
|
|
408: "もう用がないならさっさと帰りなさい。",
|
|
409: "ちょっと待ったそんな話聞いてないぞ",
|
|
410: "もう無いで。",
|
|
411: "サイズを教えろ。話はそれからだ。",
|
|
412: "なにその条件美味しいの",
|
|
413: "そ、そそ、そんなの入りきらないよっ!",
|
|
414: "もちつけ",
|
|
415: "そんな形式知らない!",
|
|
416: "ちっさぁ:heart:",
|
|
417: "期待させて悪かったわね!",
|
|
418: "ティーポット「私はコーヒーを注ぐためのものではありません!やだっ!」",
|
|
421: "またあいつ案内先間違えてるよ...どうしよ...",
|
|
426: "それに答えるには、まずWebSocketに移動したい。"
|
|
}
|
|
|
|
def error_page(templates: Jinja2Templates, request: Request, status_code: int, message: str | None = None, joke_message: str | None = None) -> Response:
|
|
status_code_name = HTTPStatus(status_code).phrase
|
|
return templates.TemplateResponse(status_code=status_code, request=request, name="error.html", context={"status_code": status_code, "status_code_name": status_code_name, "message": message or default_messages.get(status_code, "不明なエラーが発生してしまったようです。ご迷惑をおかけし申し訳ございません..."), "joke_message": joke_message or default_joke_messages.get(status_code, "あんのーん")})
|