Source code for linkzone.client.authentication

from typing import Dict
from linkzone.common.exceptions import UserValueError
from linkzone.common.data_models import LoginRequest, LoginParams
from linkzone.core.base_api_client import BaseAPIClient


[docs] class Authentication(BaseAPIClient[Dict[str, str]]): # Especificar tipo de respuesta """ Class for authentication requests """ ERROR_MSG_PASSWORD_REQUIRED = "A not empty string must be provided as a password" def __init__(self) -> None: super().__init__() self._token: str | None = None self._login_request: LoginRequest = LoginRequest(params=LoginParams())
[docs] def login(self, password: str) -> Dict[str, any]: """Login method :params password: Password for login :returns: Token when login is correct and error when is not """ self._validate_password(password) self._login_request.params.Password = password with self.session_scope(): request_data = self._prepare_request_data(self._login_request) response = self.post(data=request_data) response_data = self._handle_response(response) self._token = response_data["result"]["token"] return self._token
def _validate_password(self, password: str) -> None: if not password: raise UserValueError(self.ERROR_MSG_PASSWORD_REQUIRED)