integrations.web.events.handler

integrations/web/events/handler.py

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

メイン処理