コード例 #1
0
 def get_rates(
     self, request: Serializable[Union[RateV4Request, IntlRateV2Request]]
 ) -> Deserializable[str]:
     query = urllib.parse.urlencode(request.serialize())
     response = http(url=f"{self.settings.server_url}?{query}",
                     method="GET")
     return Deserializable(response, XP.to_xml)
コード例 #2
0
 def get_tracking(
         self,
         request: Serializable[TrackFieldRequest]) -> Deserializable[str]:
     query = urllib.parse.urlencode(request.serialize())
     response = http(url=f"{self.settings.server_url}?{query}",
                     method="GET")
     return Deserializable(response, XP.to_xml)
コード例 #3
0
    def cancel_shipment(
            self, request: Serializable[Envelope]) -> Deserializable[str]:
        response = self._send_request(
            soapaction="http://www.icscourier.ca/VoidPackages",
            request=request,
        )

        return Deserializable(response, XP.to_xml)
コード例 #4
0
    def create_shipment(
            self, request: Serializable[Envelope]) -> Deserializable[str]:
        response = self._send_request(
            soapaction="http://www.icscourier.ca/CreateShipment",
            request=request,
        )

        labelURL = XP.find(XP.to_xml(response), "PackageIDAndLink", first=True)
        if labelURL is not None:
            label = http(
                labelURL,
                decoder=lambda b: base64.encodebytes(b).decode("utf-8"))
            responses = [f'<label>{label}</label>', response]

            return Deserializable(XP.bundle_xml(responses), XP.to_xml)

        return Deserializable(response, XP.to_xml)
コード例 #5
0
    def get_tracking(self,
                     request: Serializable[Envelope]) -> Deserializable[str]:
        response = self._send_request(
            soapaction="http://www.icscourier.ca/TracePackge",
            request=request,
        )

        return Deserializable(response, XP.to_xml)
コード例 #6
0
    def cancel_pickup(self,
                      request: Serializable[Envelope]) -> Deserializable[str]:
        response = self._send_request(
            soapaction="http://www.icscourier.ca/CreatePickupRequest",
            request=request,
        )

        return Deserializable(response, XP.to_xml)
コード例 #7
0
    def validate_address(
            self, request: Serializable[Envelope]) -> Deserializable[str]:
        response = self._send_request(
            soapaction="http://www.icscourier.ca/ValidateShipToInfo",
            request=request,
        )

        return Deserializable(response, XP.to_xml)
コード例 #8
0
    def cancel_shipment(self, request: Serializable) -> Deserializable:
        query = urllib.parse.urlencode({
            "API": "eVSCancel",
            "XML": request.serialize()
        })
        response = http(url=f"{self.settings.server_url}?{query}",
                        method="GET")

        return Deserializable(response, XP.to_xml)
コード例 #9
0
    def create_shipment(self, request: Serializable) -> Deserializable:
        api = "eVSCertify" if self.settings.test else "eVS"
        serialized_request = request.serialize().replace(
            "eVSRequest", f"{api}Request")
        query = urllib.parse.urlencode({"API": api, "XML": serialized_request})
        response = http(url=f"{self.settings.server_url}?{query}",
                        method="GET")

        return Deserializable(response, XP.to_xml)
コード例 #10
0
    def get_rates(self, request: Serializable) -> Deserializable:
        query = urllib.parse.urlencode({
            "API": "RateV4",
            "XML": request.serialize()
        })
        response = http(url=f"{self.settings.server_url}?{query}",
                        method="GET")

        return Deserializable(response, XP.to_xml)
コード例 #11
0
    def cancel_shipment(self, request: Serializable) -> Deserializable:
        tag = request.value.__class__.__name__.replace("Request", "")
        api = f"{tag}Certify" if self.settings.test else tag
        serialized_request = request.serialize().replace(tag, api)
        query = urllib.parse.urlencode({"API": api, "XML": serialized_request})
        response = http(url=f"{self.settings.server_url}?{query}",
                        method="GET")

        return Deserializable(response, XP.to_xml)
コード例 #12
0
    def get_tracking(self, request: Serializable) -> Deserializable[str]:
        data = self.settings.parse(request.serialize(), "EXP_RECE_SEARCH_ROUTES")
        response = http(
            url=self.settings.server_url,
            data=bytearray(data, "utf-8"),
            method="POST",
        )

        return Deserializable(response, DP.to_dict)
コード例 #13
0
ファイル: proxy.py プロジェクト: derekcao0226/purplship
    def modify_pickup(self, request: Serializable[Pipeline]) -> Deserializable[str]:
        def process(job: Job):
            if job.data is None:
                return job.fallback

            return self._send_request("/pickup", job.data)

        pipeline: Pipeline = request.serialize()
        response = pipeline.apply(process)

        return Deserializable(XP.bundle_xml(response), XP.to_xml)
コード例 #14
0
    def get_rates(self,
                  request: Serializable[Envelope]) -> Deserializable[str]:
        product, data = request.serialize()
        responses = [
            f'<product>{product}</product>',
            self._send_request(
                soapaction="http://www.icscourier.ca/GetEstimatedCharges",
                request=Serializable(data),
            )
        ]

        return Deserializable(XP.bundle_xml(responses), XP.to_xml)
コード例 #15
0
    def get_tracking(
            self,
            request: Serializable[List[Envelope]]) -> Deserializable[str]:
        """
        get_tracking make parallel request for each TrackRequest
        """
        def get_tracking(track_request: str):
            return self._send_request("/Track", Serializable(track_request))

        response: List[str] = exec_parrallel(get_tracking, request.serialize())

        return Deserializable(XP.bundle_xml(xml_strings=response), XP.to_xml)
コード例 #16
0
ファイル: proxy.py プロジェクト: derekcao0226/purplship
    def get_tracking(self, request: Serializable) -> Deserializable[str]:
        query = urllib.parse.urlencode(request.serialize())
        response = http(
            url=f"http://trackapi.yanwentech.com/api/tracking?{query}",
            headers={
                "Content-Type": "application/json",
                "Accept": "application/json",
                "Authorization": self.settings.customer_number
            },
            method="GET",
        )

        return Deserializable(response, DP.to_dict)
コード例 #17
0
ファイル: proxy.py プロジェクト: derekcao0226/purplship
    def get_tracking(self, request: Serializable) -> Deserializable:
        response = http(
            url=
            f"{self.settings.server_url}/WayBill/GetTrackingNumber?trackingNumber={request.serialize()}",
            headers={
                'Authorization': f"basic {self.settings.authorization}",
                'Accept': "application/json",
                'Accept-Language': "en-us"
            },
            method="GET",
        )

        return Deserializable(response, DP.to_dict)
コード例 #18
0
ファイル: proxy.py プロジェクト: derekcao0226/purplship
    def get_tracking(self, request: Serializable) -> Deserializable[str]:
        query = urllib.parse.urlencode(request.serialize())
        response = http(
            url=f"{self.settings.server_url}/shipping/v1/track?{query}",
            headers={
                "Content-Type": "application/json",
                "Accept": "application/json",
                "Account-Number": self.settings.account_number,
                "Authorization": f"Basic {self.settings.authorization}"
            },
            method="GET",
        )

        return Deserializable(response, DP.to_dict)
コード例 #19
0
    def get_tracking(self, request: Serializable) -> Deserializable:

        def _get_tracking(tracking_number: str):
            return http(
                url=f"{self.settings.server_url}/v1/tracking/{tracking_number}",
                headers={
                    "Accept": "application/json",
                    "Authorization": f"Basic {self.settings.authorization}"
                },
                method="GET",
            )

        responses: List[dict] = exec_async(_get_tracking, request.serialize())
        return Deserializable(responses, lambda res: [DP.to_dict(r) for r in res if any(r.strip())])
コード例 #20
0
ファイル: proxy.py プロジェクト: derekcao0226/purplship
    def get_tracking(self, request: Serializable) -> Deserializable[str]:
        def _get_tracking(tracking_request: dict):
            query = urllib.parse.urlencode(tracking_request)
            return http(
                url=f"{self.settings.server_url}/track/shipments?{query}",
                headers={
                    "Accept": "application/json",
                    "DHL-API-Key": self.settings.consumer_key
                },
                method="GET",
            )

        responses: List[dict] = exec_async(_get_tracking, request.serialize())
        return Deserializable(responses,
                              lambda res: [DP.to_dict(r) for r in res])
コード例 #21
0
ファイル: proxy.py プロジェクト: derekcao0226/purplship
    def create_shipment(self, request: Serializable) -> Deserializable[str]:
        def process(job: Job):
            if job.data is None:
                return job.fallback

            return self._send_request(
                request=job.data,
                path=dict(
                    create="/expressconnect/shipping/ship",
                    get_label="/expresslabel/documentation/getlabel")[job.id],
            )

        pipeline: Pipeline = request.serialize()
        response = pipeline.apply(process)

        return Deserializable(XP.bundle_xml(response), XP.to_xml)
コード例 #22
0
    def get_tracking(self, request: Serializable) -> Deserializable:
        def _get_tracking(mail_piece_id: str):
            return http(
                url=
                f"{self.settings.server_url}/mailpieces/v2/{mail_piece_id}/events",
                headers={
                    "Accept": "application/json",
                    "X-IBM-Client-Id": self.settings.client_id,
                    "X-IBM-Client-Secret": self.settings.client_secret,
                    "X-Accept-RMG-Terms": "yes"
                },
                method="GET",
            )

        responses: List[dict] = exec_async(_get_tracking, request.serialize())
        return Deserializable(
            responses,
            lambda res: [DP.to_dict(r) for r in res if any(r.strip())])
コード例 #23
0
ファイル: proxy.py プロジェクト: derekcao0226/purplship
    def get_tracking(self, request: Serializable) -> Deserializable[List[Tuple[str, str]]]:

        def _get_tracking(ref: str):
            response = http(
                url=f"{self.settings.server_url}/api/tracking/{ref}",
                headers={
                    "Accept": "application/json",
                    "Authorization": f"Basic {self.settings.authorization}"
                },
                method="GET",
            )
            return ref, response

        responses: List[Tuple[str, str]] = exec_async(_get_tracking, request.serialize())
        return Deserializable(
            responses,
            lambda res: [(num, DP.to_dict(track)) for num, track in res if any(track.strip())]
        )
コード例 #24
0
ファイル: proxy.py プロジェクト: iliaaz/purplship
    def get_tracking(
        self, request: Serializable[KnownTrackingRequest]
    ) -> Deserializable[str]:
        response = self._send_request(request)

        return Deserializable(response, XP.to_xml)
コード例 #25
0
ファイル: proxy.py プロジェクト: iliaaz/purplship
    def get_rates(self, request: Serializable[DCTRequest]) -> Deserializable[str]:
        response = self._send_request(request)

        return Deserializable(response, XP.to_xml)
コード例 #26
0
    def get_tracking(self, request: Serializable) -> Deserializable[str]:
        response = self._send_request(request, '/expressconnect/track.do')

        return Deserializable(response, XP.to_xml)
コード例 #27
0
ファイル: proxy.py プロジェクト: iliaaz/purplship
    def create_shipment(
        self, request: Serializable[ShipmentRequest]
    ) -> Deserializable[str]:
        response = self._send_request(request)

        return Deserializable(response, XP.to_xml)
コード例 #28
0
ファイル: proxy.py プロジェクト: iliaaz/purplship
    def schedule_pickup(
        self, request: Serializable[BookPURequest]
    ) -> Deserializable[str]:
        response = self._send_request(request)

        return Deserializable(response, XP.to_xml)
コード例 #29
0
ファイル: proxy.py プロジェクト: iliaaz/purplship
    def modify_pickup(
        self, request: Serializable[ModifyPURequest]
    ) -> Deserializable[str]:
        response = self._send_request(request)

        return Deserializable(response, XP.to_xml)
コード例 #30
0
ファイル: proxy.py プロジェクト: iliaaz/purplship
    def cancel_pickup(
        self, request: Serializable[CancelPURequest]
    ) -> Deserializable[str]:
        response = self._send_request(request)

        return Deserializable(response, XP.to_xml)