integrations.web.events.handler

integrations/web/events/handler.py

 1"""
 2integrations/web/events/handler.py
 3"""
 4
 5import os
 6from typing import TYPE_CHECKING, Any
 7
 8from flask import Flask
 9from flask_httpauth import HTTPBasicAuth  # type: ignore
10
11import libs.global_value as g
12from integrations.web.events import create_bp
13
14if TYPE_CHECKING:
15    from integrations.web.adapter import ServiceAdapter
16
17
18def main(adapter: "ServiceAdapter") -> None:
19    """メイン処理"""
20    app = Flask(
21        __name__,
22        static_folder=os.path.join(g.cfg.script_dir, "files/html/static"),
23        template_folder=os.path.join(g.cfg.script_dir, "files/html/template"),
24    )
25
26    app.config["padding"] = "0.25em 1.5em"
27    app.config["players"] = g.cfg.member.lists
28    app.register_blueprint(create_bp.index_bp(adapter))
29    app.register_blueprint(create_bp.summary_bp(adapter))
30    app.register_blueprint(create_bp.graph_bp(adapter))
31    app.register_blueprint(create_bp.ranking_bp(adapter))
32    app.register_blueprint(create_bp.detail_bp(adapter))
33    app.register_blueprint(create_bp.report_bp(adapter))
34    app.register_blueprint(create_bp.member_bp(adapter))
35    app.register_blueprint(create_bp.score_bp(adapter))
36    app.register_blueprint(create_bp.user_assets_bp(adapter))
37
38    auth = HTTPBasicAuth()
39
40    @auth.verify_password  # type: ignore[untyped-decorator]
41    def verify_password(username: str, password: str) -> bool:
42        if username == adapter.conf.username and password == adapter.conf.password:
43            return True
44        return False
45
46    @app.before_request
47    def require_auth() -> Any:
48        if adapter.conf.require_auth:
49            return auth.login_required(lambda: None)()
50        return None
51
52    if adapter.conf.use_ssl:
53        if not os.path.exists(adapter.conf.certificate):
54            raise FileNotFoundError("certificate file not found")
55        if not os.path.exists(adapter.conf.private_key):
56            raise FileNotFoundError("private key file not found")
57        app.run(
58            host=adapter.conf.host,
59            port=adapter.conf.port,
60            ssl_context=(adapter.conf.certificate, adapter.conf.private_key),
61        )
62    else:
63        app.run(host=adapter.conf.host, port=adapter.conf.port)
def main(adapter: integrations.web.adapter.ServiceAdapter) -> None:
19def main(adapter: "ServiceAdapter") -> None:
20    """メイン処理"""
21    app = Flask(
22        __name__,
23        static_folder=os.path.join(g.cfg.script_dir, "files/html/static"),
24        template_folder=os.path.join(g.cfg.script_dir, "files/html/template"),
25    )
26
27    app.config["padding"] = "0.25em 1.5em"
28    app.config["players"] = g.cfg.member.lists
29    app.register_blueprint(create_bp.index_bp(adapter))
30    app.register_blueprint(create_bp.summary_bp(adapter))
31    app.register_blueprint(create_bp.graph_bp(adapter))
32    app.register_blueprint(create_bp.ranking_bp(adapter))
33    app.register_blueprint(create_bp.detail_bp(adapter))
34    app.register_blueprint(create_bp.report_bp(adapter))
35    app.register_blueprint(create_bp.member_bp(adapter))
36    app.register_blueprint(create_bp.score_bp(adapter))
37    app.register_blueprint(create_bp.user_assets_bp(adapter))
38
39    auth = HTTPBasicAuth()
40
41    @auth.verify_password  # type: ignore[untyped-decorator]
42    def verify_password(username: str, password: str) -> bool:
43        if username == adapter.conf.username and password == adapter.conf.password:
44            return True
45        return False
46
47    @app.before_request
48    def require_auth() -> Any:
49        if adapter.conf.require_auth:
50            return auth.login_required(lambda: None)()
51        return None
52
53    if adapter.conf.use_ssl:
54        if not os.path.exists(adapter.conf.certificate):
55            raise FileNotFoundError("certificate file not found")
56        if not os.path.exists(adapter.conf.private_key):
57            raise FileNotFoundError("private key file not found")
58        app.run(
59            host=adapter.conf.host,
60            port=adapter.conf.port,
61            ssl_context=(adapter.conf.certificate, adapter.conf.private_key),
62        )
63    else:
64        app.run(host=adapter.conf.host, port=adapter.conf.port)

メイン処理