Files
g0v0-server/app/models/signalr.py
2025-07-24 18:45:08 +08:00

32 lines
833 B
Python

from __future__ import annotations
from typing import Any
from pydantic import BaseModel, Field, model_validator
class MessagePackArrayModel(BaseModel):
@model_validator(mode="before")
@classmethod
def unpack(cls, v: Any) -> Any:
if isinstance(v, list):
fields = list(cls.model_fields.keys())
if len(v) != len(fields):
raise ValueError(f"Expected list of length {len(fields)}, got {len(v)}")
return dict(zip(fields, v))
return v
class Transport(BaseModel):
transport: str
transfer_formats: list[str] = Field(
default_factory=lambda: ["Binary"], alias="transferFormats"
)
class NegotiateResponse(BaseModel):
connectionId: str
connectionToken: str
negotiateVersion: int = 1
availableTransports: list[Transport]