Skip to content

Commit 660e397

Browse files
committed
fix: sapient shipment cancellation response parsing
1 parent 7fb2a4a commit 660e397

4 files changed

Lines changed: 9 additions & 1 deletion

File tree

modules/connectors/sapient/karrio/mappers/sapient/proxy.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ def cancel_shipment(self, request: lib.Serializable) -> lib.Deserializable[str]:
4040
"Authorization": f"Bearer {self.settings.access_token}",
4141
"user-agent": "Karrio/1.0",
4242
},
43+
on_ok=lambda _: '{"ok": true}',
4344
on_error=provider_utils.parse_error_response,
4445
)
4546

modules/connectors/sapient/karrio/providers/sapient/shipment/cancel.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def shipment_cancel_request(
3939
# fmt: off
4040
{
4141
"reason": lib.OptionEnum("Reason"),
42-
"shipment_ids": lib.OptionEnum("ShipmentIds"),
42+
"shipment_ids": lib.OptionEnum("ShipmentIds", list),
4343
},
4444
# fmt: on
4545
),
@@ -48,6 +48,7 @@ def shipment_cancel_request(
4848
# map data to convert karrio model to sapient specific type
4949
request = dict(
5050
Status="Cancel",
51+
Reason=options.reason.state or "Order Cancelled",
5152
ShipmentIds=lib.identity(
5253
options.shipment_ids.state or [payload.shipment_identifier]
5354
),

modules/connectors/sapient/karrio/providers/sapient/utils.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,11 @@ class ConnectionConfig(lib.Enum):
111111

112112
def parse_error_response(response):
113113
"""Parse the error response from the SAPIENT API."""
114+
content = lib.failsafe(lambda: lib.decode(response.read()))
115+
116+
if any(content or ""):
117+
return content
118+
114119
return lib.to_json(
115120
dict(Errors=[dict(ErrorCode=str(response.code), Message=response.reason)])
116121
)

modules/connectors/sapient/tests/sapient/test_shipment.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,7 @@ def test_parse_cancel_shipment_response(self):
302302
ShipmentCancelRequest = {
303303
"ShipmentIds": ["fa3bb603-2687-4b38-ba18-3264208446c6"],
304304
"Status": "Cancel",
305+
"Reason": "Order Cancelled",
305306
}
306307

307308

0 commit comments

Comments
 (0)