secure/types.py
from dataclasses import dataclass, field
from typing import Any, Callable, Protocol
@dataclass
class MSSession:
email: str
http: Any
access_token: str | None = None
xsts_token: str | None = None
user_hash: str | None = None
apicanary: str | None = None
extra: dict = field(default_factory=dict)
@dataclass
class ActionResult:
name: str
ok: bool
detail: str = ""
data: dict = field(default_factory=dict)
@dataclass
class PipelineContext:
security_email: str | None
imap: dict | None
proxy: str | None
log: Callable[[str], None]
class Action(Protocol):
name: str
async def run(self, session: MSSession, ctx: PipelineContext) -> ActionResult: ...
@dataclass
class SecureResult:
method: str
email: str
authenticated: bool
fail_reason: str | None
actions: list[ActionResult]
mc_username: str | None = None
mc_uuid: str | None = None
skin_url: str | None = None
mc_capes: str | None = None
mc_ownership: str | None = None
mc_name_change_allowed: bool | None = None
new_password: str | None = None
new_totp_secret: str | None = None
new_recovery_code: str | None = None
added_security_email: str | None = None
discord_user_id: int | None = None