122 lines
4 KiB
Python
122 lines
4 KiB
Python
import httpx
|
|
import uvicorn
|
|
from litestar import Litestar, get
|
|
from litestar.contrib.jinja import JinjaTemplateEngine
|
|
from litestar.di import Provide
|
|
from litestar.exceptions import HTTPException
|
|
from litestar.static_files import StaticFilesConfig
|
|
from litestar.template import TemplateConfig
|
|
|
|
from apps.httpapi.litestar.dependencies import (
|
|
authenticate,
|
|
get_authenticate_action,
|
|
get_authenticator,
|
|
get_bot_manager,
|
|
get_chatbot_repo,
|
|
get_create_chatbot_svc,
|
|
get_create_or_update_chatbot_action,
|
|
get_create_user_svc,
|
|
get_get_chatbot_by_user_id_action,
|
|
get_get_chatbot_by_user_id_svc,
|
|
get_get_tokens_by_auth_code_svc,
|
|
get_get_user_by_jwt_action,
|
|
get_get_user_by_username_svc,
|
|
get_is_valid_token_svc,
|
|
get_refresh_token_svc,
|
|
get_sentences_storer_svc,
|
|
get_settings,
|
|
get_update_chatbot_svc,
|
|
get_update_user_svc,
|
|
get_user_repo,
|
|
)
|
|
from apps.httpapi.litestar.errors import (
|
|
after_exception_handler,
|
|
http_exception_handler,
|
|
httpx_status_error_handler,
|
|
)
|
|
from apps.httpapi.litestar.routes.api import (
|
|
get_bot_settings,
|
|
get_bot_status,
|
|
get_index,
|
|
get_tts_overlay,
|
|
get_tts_permalink,
|
|
manage_bot,
|
|
save_bot_settings,
|
|
)
|
|
from apps.httpapi.litestar.routes.auth import get_code, login
|
|
from huesoporro.settings import Settings
|
|
|
|
|
|
@get("/healthz")
|
|
async def get_health() -> dict:
|
|
return {"status": "ok"}
|
|
|
|
|
|
def create_app():
|
|
return Litestar(
|
|
route_handlers=[
|
|
get_health,
|
|
login,
|
|
get_index,
|
|
get_tts_overlay,
|
|
get_tts_permalink,
|
|
get_code,
|
|
manage_bot,
|
|
get_bot_status,
|
|
save_bot_settings,
|
|
get_bot_settings,
|
|
],
|
|
static_files_config=(
|
|
StaticFilesConfig(
|
|
path="/tts_files",
|
|
directories=[Settings.get().tts_cache_path],
|
|
),
|
|
StaticFilesConfig(
|
|
path="static",
|
|
directories=[Settings.get().static_files_path],
|
|
),
|
|
),
|
|
template_config=TemplateConfig(
|
|
directory=Settings.get().templates_files_path,
|
|
engine=JinjaTemplateEngine,
|
|
),
|
|
exception_handlers={
|
|
HTTPException: http_exception_handler,
|
|
httpx.HTTPStatusError: httpx_status_error_handler,
|
|
},
|
|
after_exception=[after_exception_handler],
|
|
dependencies={
|
|
"s": Provide(get_settings, use_cache=True),
|
|
"a": Provide(get_authenticator, use_cache=True),
|
|
"user": Provide(authenticate),
|
|
"bm": Provide(get_bot_manager, use_cache=True),
|
|
"sss": Provide(get_sentences_storer_svc),
|
|
"twitch_authenticator": Provide(get_authenticator),
|
|
"authenticate_action": Provide(get_authenticate_action),
|
|
"user_repo": Provide(get_user_repo),
|
|
"chatbot_repo": Provide(get_chatbot_repo),
|
|
"create_user_svc": Provide(get_create_user_svc),
|
|
"update_chatbot_svc": Provide(get_update_chatbot_svc),
|
|
"update_user_svc": Provide(get_update_user_svc),
|
|
"create_chatbot_svc": Provide(get_create_chatbot_svc),
|
|
"refresh_token_svc": Provide(get_refresh_token_svc),
|
|
"is_valid_token_svc": Provide(get_is_valid_token_svc),
|
|
"get_user_by_username_svc": Provide(get_get_user_by_username_svc),
|
|
"get_chatbot_by_user_id_svc": Provide(get_get_chatbot_by_user_id_svc),
|
|
"get_tokens_by_auth_code_svc": Provide(get_get_tokens_by_auth_code_svc),
|
|
"get_user_by_jwt_action": Provide(get_get_user_by_jwt_action),
|
|
"get_chatbot_by_user_id_action": Provide(get_get_chatbot_by_user_id_action),
|
|
"create_or_update_chatbot_action": Provide(
|
|
get_create_or_update_chatbot_action
|
|
),
|
|
},
|
|
)
|
|
|
|
|
|
app = create_app()
|
|
|
|
if __name__ == "__main__":
|
|
s = Settings.get()
|
|
config = uvicorn.Config("main:app", host=s.host, port=s.port, log_level="info")
|
|
server = uvicorn.Server(config)
|
|
server.run()
|