from http import HTTPStatus
from fastapi import Request, Response
from fastapi.templating import Jinja2Templates

# TODO: こっちは普通のメッセージにする
default_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に移動したい。"
}

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, "あんのーん")})
