Build 060.12: add WebSocket Trade Value Validation
This commit is contained in:
@@ -18,6 +18,7 @@ from src.market_data.acquisition.adapters.dzengi.models import (
|
||||
DzengiTicker24hrResponse,
|
||||
DzengiWebSocketOhlcEvent,
|
||||
DzengiWebSocketQuoteResponse,
|
||||
DzengiWebSocketTradeEvent,
|
||||
)
|
||||
from src.market_data.acquisition.exceptions import (
|
||||
CandleValueError,
|
||||
@@ -820,6 +821,44 @@ def _candle_decimal(
|
||||
return decimal_value
|
||||
|
||||
|
||||
def validate_dzengi_websocket_trade_values(
|
||||
event: DzengiWebSocketTradeEvent,
|
||||
) -> None:
|
||||
"""
|
||||
Проверить допустимость значений transport-модели Dzengi WebSocket Trade.
|
||||
|
||||
Функция не изменяет transport-модель, не преобразует raw numeric
|
||||
значения в Decimal и не выполняет mapping во внутреннюю модель Trade.
|
||||
"""
|
||||
|
||||
_trade_positive_int(
|
||||
event.trade_id,
|
||||
path="$.payload.id",
|
||||
)
|
||||
_trade_positive_decimal(
|
||||
event.price,
|
||||
path="$.payload.price",
|
||||
)
|
||||
_trade_positive_decimal(
|
||||
event.size,
|
||||
path="$.payload.size",
|
||||
)
|
||||
_trade_positive_int(
|
||||
event.timestamp,
|
||||
path="$.payload.ts",
|
||||
)
|
||||
|
||||
if not event.symbol.strip():
|
||||
raise TradeValueError(
|
||||
"$.payload.symbol не должен быть пустым."
|
||||
)
|
||||
|
||||
if not event.order_id.strip():
|
||||
raise TradeValueError(
|
||||
"$.payload.orderId не должен быть пустым."
|
||||
)
|
||||
|
||||
|
||||
def validate_rest_agg_trade_values(
|
||||
trades: tuple[DzengiRestAggTrade, ...],
|
||||
) -> None:
|
||||
|
||||
Reference in New Issue
Block a user