from conio_sdk_generated.openapi.v2.serde.models.signin import Signin
from conio_sdk_generated.openapi.v2.serde.models.signin_response import SigninResponse

from conio_sdk.services.conio.user.user_service import UserService, UserCredentials, UserLanguage


class SigninVOService:
    def __init__(self, user_service: UserService):
        self._user_service = user_service

    def signin_email(self, msg: Signin, hardware_id: str, user_language: UserLanguage) -> SigninResponse:
        authentication_data = self._user_service.user_login(msg.username, msg.password, hardware_id, user_language)
        return SigninResponse(
            access_token=authentication_data.access_token,
            refresh_token=authentication_data.refresh_token,
            token_type='Bearer',
            expires_in=3600
        )

    def signin_external_user_id(self, msg: Signin, hardware_id: str, user_language: UserLanguage) -> SigninResponse:
        authentication_data = self._user_service.external_user_login(
            UserCredentials(msg.username, msg.password),
            user_language
        )
        return SigninResponse(
            access_token=authentication_data.access_token,
            refresh_token=authentication_data.refresh_token,
            token_type='Bearer',
            expires_in=3600
        )
