def cancel(args: Union[PickupCancelRequest, dict]) -> IRequestFrom: """Cancel a pickup previously scheduled Args: args (Union[TrackingRequest, dict]): the pickup cancellation request payload Returns: IRequestFrom: a lazy request dataclass instance """ logger.debug(f"cancel a pickup. payload: {DP.jsonify(args)}") payload = (args if isinstance(args, PickupCancelRequest) else PickupCancelRequest(**args)) def action(gateway: Gateway): request: Serializable = gateway.mapper.create_cancel_pickup_request( payload) response: Deserializable = gateway.proxy.cancel_pickup(request) @fail_safe(gateway) def deserialize(): return gateway.mapper.parse_cancel_pickup_response(response) return IDeserialize(deserialize) return IRequestFrom(action)
def _cancel_pickup(payload: PickupUpdateRequest, settings: Settings) -> Job: data = PickupCancelRequest( confirmation_number=payload.confirmation_number, address=payload.address, pickup_date=payload.pickup_date, reason='change pickup', ) return Job(id='cancel', data=pickup_cancel_request(data, settings))
def _cancel_pickup_request(response: str, payload: PickupUpdateRequest, settings: Settings): reply = next( iter( XP.to_xml(response).xpath(".//*[local-name() = $name]", name="PickupCreationResponse")), None, ) new_pickup = XP.to_object(PickupCreationResponse, reply) data = (pickup_cancel_request( PickupCancelRequest(confirmation_number=payload.confirmation_number), settings, ) if new_pickup is not None and new_pickup.PRN is not None else None) return Job(id="cancel_pickup", data=data, fallback="")
def _cancel_pickup_request(response: str, payload: PickupUpdateRequest, settings: Settings): reply = next( iter( XP.to_xml(response).xpath(".//*[local-name() = $name]", name="CreatePickupReply")), None, ) new_pickup = XP.build(CreatePickupReply, reply) data = (pickup_cancel_request( PickupCancelRequest(confirmation_number=payload.confirmation_number), settings, ) if new_pickup is not None and new_pickup.HighestSeverity == NotificationSeverityType.SUCCESS.value else None) return Job(id="cancel_pickup", data=data, fallback="")
def _cancel_pickup_request( response: str, payload: PickupUpdateRequest, settings: Settings ): new_pickup = XP.find( "PickupCreationResponse", XP.to_xml(response), PickupCreationResponse, first=True, ) data = ( pickup_cancel_request( PickupCancelRequest(confirmation_number=payload.confirmation_number), settings, ) if new_pickup is not None and new_pickup.PRN is not None else None ) return Job(id="cancel_pickup", data=data, fallback="")
def setUp(self): self.maxDiff = None self.PickupRequest = PickupRequest(**pickup_data) self.PickupUpdateRequest = PickupUpdateRequest(**pickup_update_data) self.PickupCancelRequest = PickupCancelRequest(**pickup_cancel_data)
def setUp(self): self.maxDiff = None self.BookPURequest = PickupRequest(**book_pickup_payload) self.ModifyPURequest = PickupUpdateRequest(**modification_data) self.CancelPURequest = PickupCancelRequest(**cancellation_data)