refactor: many changes
- Add missing actions and make a clear boundary between actions, services and nfra (i.e: actions shouldn't use stuff from infra/) - Delete stuff not in use: tts, gtts, etc - Add a ton of tests
This commit is contained in:
parent
b2185f4174
commit
152546982c
46 changed files with 2328 additions and 700 deletions
|
|
@ -1,17 +1,31 @@
|
|||
from litestar import Request
|
||||
from litestar.exceptions import HTTPException
|
||||
|
||||
from huesoporro.actions.authenticate import AuthenticateAction
|
||||
from huesoporro.actions.get_user_by_jwt import GetUserByJWTAction
|
||||
from huesoporro.actions.chatbot.create_or_update_chatbot import (
|
||||
CreateOrUpdateChatbotAction,
|
||||
)
|
||||
from huesoporro.actions.chatbot.get_chatbot_by_user_id import GetChatbotByUserIdAction
|
||||
from huesoporro.actions.users.authenticate_user import AuthenticateUserAction
|
||||
from huesoporro.actions.users.get_user_by_jwt import GetUserByJWTAction
|
||||
from huesoporro.infra.authenticator import TwitchAuthenticator
|
||||
from huesoporro.infra.db import Database
|
||||
from huesoporro.infra.repos import UserRepo
|
||||
from huesoporro.infra.repos import ChatbotRepo, UserRepo
|
||||
from huesoporro.libs.db import MarkovDatabase
|
||||
from huesoporro.models import User
|
||||
from huesoporro.models import Chatbot, User
|
||||
from huesoporro.settings import Settings
|
||||
from huesoporro.svc.get_chatbot_settings import ChatbotSettingsGetterSvc
|
||||
from huesoporro.svc.chatbot_svcs import (
|
||||
CreateChatbotSvc,
|
||||
GetChatbotByUserIdSvc,
|
||||
UpdateChatbotSvc,
|
||||
)
|
||||
from huesoporro.svc.store import SentenceStorerSvc
|
||||
from huesoporro.svc.store_settings import ChatbotSettingsStorerSvc
|
||||
from huesoporro.svc.users_svcs import (
|
||||
CreateUserSvc,
|
||||
GetTwitchAuthByAuthCodeSvc,
|
||||
GetUserByUsernameSvc,
|
||||
IsValidTokenSvc,
|
||||
RefreshTokenSvc,
|
||||
UpdateUserSvc,
|
||||
)
|
||||
|
||||
|
||||
def get_settings() -> Settings:
|
||||
|
|
@ -22,14 +36,62 @@ def get_authenticator(s: Settings) -> TwitchAuthenticator:
|
|||
return TwitchAuthenticator(s=s)
|
||||
|
||||
|
||||
def get_db(s: Settings):
|
||||
return Database(s=s)
|
||||
def get_chatbot_repo(s: Settings):
|
||||
return ChatbotRepo(s=s)
|
||||
|
||||
|
||||
def get_get_chatbot_by_user_id_svc(chatbot_repo: ChatbotRepo):
|
||||
return GetChatbotByUserIdSvc(repo=chatbot_repo)
|
||||
|
||||
|
||||
def get_get_tokens_by_auth_code_svc(
|
||||
twitch_authenticator: TwitchAuthenticator, s: Settings
|
||||
):
|
||||
return GetTwitchAuthByAuthCodeSvc(s=s, authenticator=twitch_authenticator)
|
||||
|
||||
|
||||
def get_create_chatbot_svc(chatbot_repo: ChatbotRepo):
|
||||
return CreateChatbotSvc(repo=chatbot_repo)
|
||||
|
||||
|
||||
async def get_user_repo(s: Settings):
|
||||
return UserRepo(s=s)
|
||||
|
||||
|
||||
def get_create_user_svc(user_repo: UserRepo):
|
||||
return CreateUserSvc(user_repo=user_repo)
|
||||
|
||||
|
||||
def get_update_user_svc(user_repo: UserRepo):
|
||||
return UpdateUserSvc(user_repo=user_repo)
|
||||
|
||||
|
||||
def get_refresh_token_svc(twitch_authenticator: TwitchAuthenticator):
|
||||
return RefreshTokenSvc(twitch_authenticator=twitch_authenticator)
|
||||
|
||||
|
||||
def get_is_valid_token_svc(twitch_authenticator: TwitchAuthenticator):
|
||||
return IsValidTokenSvc(authenticator=twitch_authenticator)
|
||||
|
||||
|
||||
async def get_get_user_by_username_svc(user_repo: UserRepo):
|
||||
return GetUserByUsernameSvc(user_repo=user_repo)
|
||||
|
||||
|
||||
async def get_get_user_by_jwt_action(
|
||||
user_repo: UserRepo, authenticator: TwitchAuthenticator, s: Settings
|
||||
get_user_by_username_svc: GetUserByUsernameSvc,
|
||||
update_user_svc: UpdateUserSvc,
|
||||
is_valid_token_svc: IsValidTokenSvc,
|
||||
refresh_token_svc: RefreshTokenSvc,
|
||||
s: Settings,
|
||||
):
|
||||
return GetUserByJWTAction(user_repo=user_repo, authenticator=authenticator, s=s)
|
||||
return GetUserByJWTAction(
|
||||
get_user_by_username_svc=get_user_by_username_svc,
|
||||
update_user_svc=update_user_svc,
|
||||
refresh_token_svc=refresh_token_svc,
|
||||
is_valid_token_svc=is_valid_token_svc,
|
||||
s=s,
|
||||
)
|
||||
|
||||
|
||||
async def authenticate(
|
||||
|
|
@ -37,32 +99,73 @@ async def authenticate(
|
|||
) -> User:
|
||||
token = request.query_params.get("huesoporro_token")
|
||||
if token:
|
||||
return await get_user_by_jwt_action.run(token)
|
||||
user = await get_user_by_jwt_action.run(token)
|
||||
if not user:
|
||||
raise HTTPException(detail="User does not exist", status_code=404)
|
||||
return user
|
||||
|
||||
cookies = request.cookies.get("huesoporroAuth")
|
||||
if cookies:
|
||||
return await get_user_by_jwt_action.run(cookies)
|
||||
user = await get_user_by_jwt_action.run(cookies)
|
||||
if not user:
|
||||
raise HTTPException(detail="User does not exist", status_code=404)
|
||||
return user
|
||||
|
||||
raise HTTPException(status_code=401, detail="Unauthorized")
|
||||
|
||||
|
||||
async def get_chatbot_settings_svc(db: Database):
|
||||
return ChatbotSettingsGetterSvc(db=db)
|
||||
|
||||
|
||||
async def store_chatbot_settings_svc(db: Database):
|
||||
return ChatbotSettingsStorerSvc(db=db)
|
||||
|
||||
|
||||
async def get_sentences_storer_svc(db: MarkovDatabase):
|
||||
return SentenceStorerSvc(db=db)
|
||||
|
||||
|
||||
async def get_user_repo(s: Settings):
|
||||
return UserRepo(s=s)
|
||||
def get_update_chatbot_svc(chatbot_repo: ChatbotRepo):
|
||||
return UpdateChatbotSvc(repo=chatbot_repo)
|
||||
|
||||
|
||||
def get_create_or_update_chatbot_action(
|
||||
create_chatbot_svc: CreateChatbotSvc,
|
||||
update_chatbot_svc: UpdateChatbotSvc,
|
||||
get_chatbot_by_user_id_svc: GetChatbotByUserIdSvc,
|
||||
):
|
||||
return CreateOrUpdateChatbotAction(
|
||||
create_chatbot_svc=create_chatbot_svc,
|
||||
update_chatbot_svc=update_chatbot_svc,
|
||||
get_chatbot_by_user_id_svc=get_chatbot_by_user_id_svc,
|
||||
)
|
||||
|
||||
|
||||
def get_get_chatbot_by_user_id_action(
|
||||
get_chatbot_by_user_id_svc: GetChatbotByUserIdSvc,
|
||||
):
|
||||
return GetChatbotByUserIdAction(
|
||||
get_chatbot_by_user_id_svc=get_chatbot_by_user_id_svc
|
||||
)
|
||||
|
||||
|
||||
async def get_authenticate_action(
|
||||
user_repo: UserRepo, authenticator: TwitchAuthenticator, s: Settings
|
||||
s: Settings,
|
||||
get_tokens_by_auth_code_svc: GetTwitchAuthByAuthCodeSvc,
|
||||
get_user_by_username_svc: GetUserByUsernameSvc,
|
||||
create_user_svc: CreateUserSvc,
|
||||
update_user_svc: UpdateUserSvc,
|
||||
):
|
||||
return AuthenticateAction(user_repo=user_repo, authenticator=authenticator, s=s)
|
||||
return AuthenticateUserAction(
|
||||
s=s,
|
||||
get_tokens_by_auth_code_svc=get_tokens_by_auth_code_svc,
|
||||
get_user_by_username_svc=get_user_by_username_svc,
|
||||
create_user_svc=create_user_svc,
|
||||
update_user_svc=update_user_svc,
|
||||
)
|
||||
|
||||
|
||||
async def chatbot(
|
||||
get_chatbot_by_user_id_action: GetChatbotByUserIdAction,
|
||||
create_or_update_chatbot_action: CreateOrUpdateChatbotAction,
|
||||
user: User,
|
||||
) -> Chatbot:
|
||||
cb = await get_chatbot_by_user_id_action.run(user_id=user.id)
|
||||
if cb:
|
||||
return cb
|
||||
return await create_or_update_chatbot_action.run(
|
||||
user_id=user.id,
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue