Exemple #1
0
    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)
Exemple #2
0
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="")
Exemple #4
0
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="")
Exemple #6
0
 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)