openmax-server/src/oneme/models.py

129 lines
3.2 KiB
Python

import pydantic
class UserAgentModel(pydantic.BaseModel):
deviceType: str
appVersion: str
osVersion: str
timezone: str
release: int = None
screen: str
pushDeviceType: str
arch: str = None
locale: str
buildNumber: int
deviceName: str
deviceLocale: str
class HelloPayloadModel(pydantic.BaseModel):
clientSessionId: int
mt_instanceid: str = None
userAgent: UserAgentModel
deviceId: str
class RequestCodePayloadModel(pydantic.BaseModel):
phone: str
type: str
@pydantic.field_validator('phone')
def validate_phone(cls, v):
"""Валидация номера телефона"""
if not v.replace("+", "").replace(" ", "").replace("-", "").isdigit():
raise ValueError('phone must be digits')
return v
@pydantic.field_validator('type')
def validate_type(cls, v):
"""Валидация типа запроса"""
if not v in ("START_AUTH", "RESEND"):
raise ValueError('type must be valid')
return v
class VerifyCodePayloadModel(pydantic.BaseModel):
verifyCode: str
authTokenType: str
token: str
class LoginPayloadModel(pydantic.BaseModel):
interactive: bool
token: str
class PingPayloadModel(pydantic.BaseModel):
interactive: bool
class AssetsPayloadModel(pydantic.BaseModel):
sync: int
type: str
class GetCallHistoryPayloadModel(pydantic.BaseModel):
forward: bool
count: int
class MessageModel(pydantic.BaseModel):
isLive: bool
detectShare: bool
elements: list
attaches: list = None
cid: int
text: str = None
class SendMessagePayloadModel(pydantic.BaseModel):
# TODO: пишем сервер макса в 2 ночи и не понимаем как это валидировать (блять)
userId: int = None
chatId: int = None
message: MessageModel
class SyncFoldersPayloadModel(pydantic.BaseModel):
folderSync: int
class SearchChatsPayloadModel(pydantic.BaseModel):
chatIds: list
class SearchByPhonePayloadModel(pydantic.BaseModel):
phone: str
class GetCallTokenPayloadModel(pydantic.BaseModel):
userId: int
value: str
class TypingPayloadModel(pydantic.BaseModel):
chatId: int
type: str = None
class SearchUsersPayloadModel(pydantic.BaseModel):
contactIds: list
class ComplainReasonsGetPayloadModel(pydantic.BaseModel):
complainSync: int
class UpdateProfilePayloadModel(pydantic.BaseModel):
description: str = None
firstName: str = None
lastName: str = None
class AuthConfirmRegisterPayloadModel(pydantic.BaseModel):
token: str
firstName: str
lastName: str = None
tokenType: str
@pydantic.field_validator('firstName')
def validate_first_name(cls, v):
v = v.strip()
if not v:
raise ValueError('firstName must not be empty')
if len(v) > 59:
raise ValueError('firstName too long')
return v
@pydantic.field_validator('lastName')
def validate_last_name(cls, v):
if v is None:
return v
v = v.strip()
if len(v) > 59:
raise ValueError('lastName too long')
return v
class ChatHistoryPayloadModel(pydantic.BaseModel):
chatId: int
backward: int