from __future__ import annotations
from dataclasses import dataclass
from lxml import objectify # type: ignore
from q2_sdk.tools.utils import to_bool
from .base import BaseAuthRequest, BaseAuthResponse
[docs]
@dataclass
class Request(BaseAuthRequest):
"""
Shape that comes in from HQ after login during step up authentication.
.. code-block:: xml
<HQ request="ValidateToken" messageID="{0}">
<UserId>2</UserId>
<LoginId>3</LoginId>
<TokenID>deadbeef</TokenID>
<OTP1>12345</OTP1>
<isLogon>True</isLogon>
<IsPrelogonSession>False</IsPrelogonSession>
<SessionId>shb3cnukdl32c54nodvyxcsj</SessionId>
</HQ>
"""
raw: objectify.Element
user_id: int
login_id: int
token_id: str
otp1: str
is_logon: bool
is_prelogon_session: bool
session_id: str
@staticmethod
def from_xml(xml: objectify.Element) -> Request:
user_id = int(xml.UserId.text)
login_id = int(xml.LoginId.text)
token_id = xml.TokenID.text
otp1 = xml.OTP1.text
is_logon = to_bool(xml.isLogon.text)
is_prelogon_session = to_bool(xml.IsPrelogonSession.text)
session_id = xml.SessionId.text
return Request(
xml,
user_id,
login_id,
token_id,
otp1,
is_logon,
is_prelogon_session,
session_id,
)
[docs]
@dataclass
class Response(BaseAuthResponse): ...