26 lines
875 B
Python
26 lines
875 B
Python
"""CDEK order registration payload mappers."""
|
|
|
|
from typing import Any
|
|
|
|
from app.schemas.order import OrderCreateRequest, OrderCreateResponse
|
|
|
|
|
|
class CDEKOrderMappingError(ValueError):
|
|
"""Raised when CDEK order payload cannot be mapped."""
|
|
|
|
|
|
def map_cdek_order_request(request: OrderCreateRequest) -> dict[str, Any]:
|
|
return request.model_dump(mode="python", exclude_none=True)
|
|
|
|
|
|
def map_cdek_order_response(payload: dict[str, Any]) -> OrderCreateResponse:
|
|
entity = payload.get("entity")
|
|
if not isinstance(entity, dict):
|
|
raise CDEKOrderMappingError("CDEK order response must include entity object.")
|
|
|
|
order_uuid = entity.get("uuid")
|
|
if not isinstance(order_uuid, str) or not order_uuid:
|
|
raise CDEKOrderMappingError("CDEK order response must include entity.uuid.")
|
|
|
|
return OrderCreateResponse(provider="cdek", order_uuid=order_uuid)
|