forked from FOSS/Steam-Panel
v 3.0.3
This commit is contained in:
+246
@@ -0,0 +1,246 @@
|
||||
import json
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
|
||||
from pydantic import BaseModel, Field, model_validator
|
||||
|
||||
|
||||
class AccountCreate(BaseModel):
|
||||
login: str
|
||||
password: str
|
||||
steam_id: str | None = None
|
||||
email: str | None = None
|
||||
email_password: str | None = None
|
||||
phone: str | None = None
|
||||
proxy: str | None = None
|
||||
notes: str | None = None
|
||||
|
||||
|
||||
class AccountUpdate(BaseModel):
|
||||
login: str | None = None
|
||||
password: str | None = None
|
||||
steam_id: str | None = None
|
||||
email: str | None = None
|
||||
email_password: str | None = None
|
||||
phone: str | None = None
|
||||
proxy: str | None = None
|
||||
status: str | None = None
|
||||
notes: str | None = None
|
||||
|
||||
|
||||
class AccountOut(BaseModel):
|
||||
id: int
|
||||
login: str
|
||||
password: str
|
||||
steam_id: str | None = None
|
||||
email: str | None = None
|
||||
email_password: str | None = None
|
||||
phone: str | None = None
|
||||
mafile_path: str | None = None
|
||||
shared_secret: str | None = None
|
||||
identity_secret: str | None = None
|
||||
proxy: str | None = None
|
||||
status: str
|
||||
notes: str | None = None
|
||||
nickname: str | None = None
|
||||
avatar_url: str | None = None
|
||||
steam_level: int | None = None
|
||||
last_online: str | None = None
|
||||
auto_accept: int = 0
|
||||
ban_status: str | None = None
|
||||
has_cookies: bool = False
|
||||
has_revocation_code: bool = False
|
||||
created_at: str
|
||||
updated_at: str
|
||||
|
||||
@staticmethod
|
||||
def _check_revocation_code(mafile_path: str | None) -> bool:
|
||||
if not mafile_path:
|
||||
return False
|
||||
try:
|
||||
p = Path(mafile_path)
|
||||
if not p.exists():
|
||||
return False
|
||||
data = json.loads(p.read_text(encoding="utf-8"))
|
||||
return bool(data.get("revocation_code", ""))
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
@model_validator(mode="before")
|
||||
@classmethod
|
||||
def _compute_flags(cls, data):
|
||||
if isinstance(data, dict):
|
||||
data["has_cookies"] = bool(data.get("session_cookies"))
|
||||
data["has_revocation_code"] = AccountOut._check_revocation_code(data.get("mafile_path"))
|
||||
return data
|
||||
|
||||
|
||||
class ProxyCreate(BaseModel):
|
||||
address: str
|
||||
protocol: str = "http"
|
||||
|
||||
|
||||
class ProxyOut(BaseModel):
|
||||
id: int
|
||||
address: str
|
||||
protocol: str
|
||||
is_alive: bool
|
||||
last_checked: str | None = None
|
||||
fail_count: int
|
||||
|
||||
|
||||
class MafileSession(BaseModel):
|
||||
SessionID: str = ""
|
||||
AccessToken: str = ""
|
||||
RefreshToken: str = ""
|
||||
SteamID: int = 0
|
||||
SteamLoginSecure: str = ""
|
||||
|
||||
|
||||
class MafileData(BaseModel):
|
||||
shared_secret: str
|
||||
serial_number: str = ""
|
||||
revocation_code: str = ""
|
||||
uri: str = ""
|
||||
account_name: str = ""
|
||||
token_gid: str = ""
|
||||
identity_secret: str = ""
|
||||
secret_1: str = ""
|
||||
device_id: str = ""
|
||||
server_time: str = ""
|
||||
fully_enrolled: bool = False
|
||||
Session: MafileSession = Field(default_factory=MafileSession)
|
||||
|
||||
|
||||
class TaskOut(BaseModel):
|
||||
id: str
|
||||
type: str
|
||||
status: str
|
||||
progress: int
|
||||
total: int
|
||||
result: str | None = None
|
||||
error: str | None = None
|
||||
account_ids: str | None = None
|
||||
account_results: str | None = None
|
||||
created_at: str
|
||||
updated_at: str
|
||||
|
||||
|
||||
class ActionRequest(BaseModel):
|
||||
account_ids: list[int]
|
||||
action: str
|
||||
params: dict | None = None
|
||||
|
||||
|
||||
class BulkImportResult(BaseModel):
|
||||
imported: int = 0
|
||||
skipped: int = 0
|
||||
errors: list[str] = Field(default_factory=list)
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Log:pass accounts
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
class LogpassAccountCreate(BaseModel):
|
||||
login: str
|
||||
password: str
|
||||
steam_id: str | None = None
|
||||
proxy: str | None = None
|
||||
ban_status: str | None = None
|
||||
prime: str | None = None
|
||||
trophy: str | None = None
|
||||
behavior: str | None = None
|
||||
license: str | None = None
|
||||
notes: str | None = None
|
||||
|
||||
|
||||
class LogpassAccountUpdate(BaseModel):
|
||||
login: str | None = None
|
||||
password: str | None = None
|
||||
steam_id: str | None = None
|
||||
proxy: str | None = None
|
||||
status: str | None = None
|
||||
ban_status: str | None = None
|
||||
nickname: str | None = None
|
||||
steam_level: int | None = None
|
||||
prime: str | None = None
|
||||
trophy: str | None = None
|
||||
behavior: str | None = None
|
||||
license: str | None = None
|
||||
notes: str | None = None
|
||||
|
||||
|
||||
class LogpassAccountOut(BaseModel):
|
||||
id: int
|
||||
login: str
|
||||
password: str
|
||||
steam_id: str | None = None
|
||||
proxy: str | None = None
|
||||
status: str
|
||||
ban_status: str | None = None
|
||||
nickname: str | None = None
|
||||
steam_level: int | None = None
|
||||
prime: str | None = None
|
||||
trophy: str | None = None
|
||||
behavior: str | None = None
|
||||
license: str | None = None
|
||||
notes: str | None = None
|
||||
avatar_url: str | None = None
|
||||
last_online: str | None = None
|
||||
has_cookies: bool = False
|
||||
created_at: str
|
||||
updated_at: str
|
||||
|
||||
@model_validator(mode="before")
|
||||
@classmethod
|
||||
def _compute_has_cookies(cls, data):
|
||||
if isinstance(data, dict):
|
||||
data["has_cookies"] = bool(data.get("session_cookies"))
|
||||
return data
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Token accounts
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
class TokenAccountCreate(BaseModel):
|
||||
login: str | None = None
|
||||
token: str
|
||||
steam_id: str | None = None
|
||||
proxy: str | None = None
|
||||
notes: str | None = None
|
||||
|
||||
|
||||
class TokenAccountUpdate(BaseModel):
|
||||
login: str | None = None
|
||||
token: str | None = None
|
||||
steam_id: str | None = None
|
||||
proxy: str | None = None
|
||||
status: str | None = None
|
||||
notes: str | None = None
|
||||
|
||||
|
||||
class TokenAccountOut(BaseModel):
|
||||
id: int
|
||||
login: str | None = None
|
||||
token: str
|
||||
steam_id: str | None = None
|
||||
proxy: str | None = None
|
||||
status: str
|
||||
ban_status: str | None = None
|
||||
nickname: str | None = None
|
||||
steam_level: int | None = None
|
||||
avatar_url: str | None = None
|
||||
last_online: str | None = None
|
||||
has_cookies: bool = False
|
||||
notes: str | None = None
|
||||
created_at: str
|
||||
updated_at: str
|
||||
|
||||
@model_validator(mode="before")
|
||||
@classmethod
|
||||
def _compute_has_cookies(cls, data):
|
||||
if isinstance(data, dict):
|
||||
data["has_cookies"] = bool(data.get("session_cookies"))
|
||||
return data
|
||||
Reference in New Issue
Block a user