This commit is contained in:
@@ -21,12 +21,17 @@ from app.adapters.delivery_providers.cse.mapper import (
|
||||
map_cse_calc_response_for_tariff_code,
|
||||
)
|
||||
from app.adapters.delivery_providers.cse.order_mapper import (
|
||||
CSEOrderInfo,
|
||||
CSEOrderRegistrationParams,
|
||||
CSEOrderRegistrationResult,
|
||||
build_calc_body_for_calculation,
|
||||
build_calc_body_for_payment,
|
||||
build_tracking_body_for_order,
|
||||
build_waybill_print_form_body,
|
||||
map_cse_tracking_response,
|
||||
map_cse_save_order_request,
|
||||
map_cse_save_order_response,
|
||||
map_cse_waybill_print_form_response,
|
||||
split_tariff_code,
|
||||
)
|
||||
from app.adapters.delivery_providers.cse.soap import (
|
||||
@@ -113,6 +118,30 @@ class CSEClient:
|
||||
except CSEMappingError as exc:
|
||||
raise CSEClientError(str(exc)) from exc
|
||||
|
||||
async def get_order(self, order_number: str) -> CSEOrderInfo:
|
||||
root = await self._post(
|
||||
"Tracking",
|
||||
build_tracking_body_for_order(order_number),
|
||||
request_error_message="CSE Tracking request was rejected with status",
|
||||
)
|
||||
try:
|
||||
return map_cse_tracking_response(root)
|
||||
except CSEMappingError as exc:
|
||||
raise CSEClientError(str(exc)) from exc
|
||||
|
||||
async def download_waybill_pdf(self, waybill_number: str) -> bytes:
|
||||
root = await self._post(
|
||||
"GetFormsForDocuments",
|
||||
build_waybill_print_form_body(waybill_number),
|
||||
request_error_message=(
|
||||
"CSE GetFormsForDocuments request was rejected with status"
|
||||
),
|
||||
)
|
||||
try:
|
||||
return map_cse_waybill_print_form_response(root)
|
||||
except CSEMappingError as exc:
|
||||
raise CSEClientError(str(exc)) from exc
|
||||
|
||||
async def _post(
|
||||
self,
|
||||
operation: str,
|
||||
@@ -152,7 +181,8 @@ class CSEClient:
|
||||
status_code=response.status_code,
|
||||
)
|
||||
raise CSEClientError(
|
||||
f"CSE {operation} request failed with status {response.status_code}."
|
||||
f"CSE {operation} request failed with status "
|
||||
f"{response.status_code}."
|
||||
)
|
||||
|
||||
if 400 <= response.status_code < 500:
|
||||
@@ -312,3 +342,9 @@ class CSEProvider(DeliveryProvider):
|
||||
self, request: InitPaymentRequest, order_uuid: str
|
||||
) -> CSEOrderRegistrationResult:
|
||||
return await self._client.save_order(request, order_uuid)
|
||||
|
||||
async def get_order(self, order_number: str) -> CSEOrderInfo:
|
||||
return await self._client.get_order(order_number)
|
||||
|
||||
async def download_waybill_pdf(self, waybill_number: str) -> bytes:
|
||||
return await self._client.download_waybill_pdf(waybill_number)
|
||||
|
||||
Reference in New Issue
Block a user