예제 #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
파일: proxy.py 프로젝트: iliaaz/purplship
 def _send_request(self, request: Serializable[Any]) -> str:
     return http(
         url=self.settings.server_url,
         data=bytearray(request.serialize(), "utf-8"),
         headers={"Content-Type": "application/xml"},
         method="POST",
     )
예제 #4
0
 def get_rates(self, request: Serializable) -> Deserializable[str]:
     response = http(
         url=self.settings.server_url,
         data=bytearray(request.serialize(), "utf-8"),
         headers={"Content-Type": "application/xml"},
         method="POST",
     )
     return Deserializable(response, XP.to_xml)
예제 #5
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)
예제 #6
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)
예제 #7
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)
예제 #8
0
 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",
     )
예제 #9
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)
예제 #10
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)
예제 #11
0
 def track(tracking_pin: str) -> str:
     return http(
         url=f"{self.settings.server_url}/vis/track/pin/{tracking_pin}/summary",
         headers={
             "Accept": "application/vnd.cpc.track+xml",
             "Authorization": f"Basic {self.settings.authorization}",
             "Accept-language": "en-CA",
         },
         method="GET",
     )
예제 #12
0
 def _send_request(self, request: Serializable, path: str) -> str:
     return http(
         url=f"{self.settings.server_url}{path}",
         data=bytearray(request.serialize(), "utf-8"),
         headers={
             "Content-Type": "application/xml",
             "Authorization": f"Basic {self.settings.authorization}"
         },
         method="POST",
     )
예제 #13
0
 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
예제 #14
0
 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",
     )
예제 #15
0
 def _get_pickup(job: Job) -> str:
     return http(
         url=f"{self.settings.server_url}{job.data.serialize()}",
         headers={
             "Accept": "application/vnd.cpc.pickup+xml",
             "Authorization": f"Basic {self.settings.authorization}",
             "Accept-language": f"{self.settings.language}-CA",
         },
         method="GET",
     )
예제 #16
0
 def _send_request(self, soapaction: str,
                   request: Serializable[Any]) -> str:
     return http(
         url=self.settings.server_url,
         data=bytearray(request.serialize(), "utf-8"),
         headers={
             "Content-Type": "application/soap+xml; charset=utf-8",
             "soapaction": soapaction,
         },
         method="POST",
     )
예제 #17
0
 def _get_label(job: Job):
     label_string = http(
         decoder=lambda b: base64.encodebytes(b).decode("utf-8"),
         url=job.data["href"],
         headers={
             "Accept": job.data["media"],
             "Authorization": f"Basic {self.settings.authorization}",
         },
         method="GET",
     )
     return f"<label>{label_string}</label>"
예제 #18
0
 def _availability(job: Job) -> str:
     return http(
         url=
         f"{self.settings.server_url}/ad/pickup/pickupavailability/{job.data}",
         headers={
             "Accept": "application/vnd.cpc.pickup+xml",
             "Authorization": f"Basic {self.settings.authorization}",
             "Accept-language": f"{self.settings.language}-CA",
         },
         method="GET",
     )
예제 #19
0
 def _send_request(self, request: Serializable, path: str) -> str:
     return http(
         url=f"{self.settings.server_url}{path}",
         data=bytearray(
             urllib.parse.urlencode(dict(xml_in=request.serialize())),
             "utf-8"),
         headers={
             "Content-Type": "application/x-www-form-urlencoded",
             "Authorization": f"Basic {self.settings.authorization}"
         },
         method="POST",
     )
예제 #20
0
 def _non_contract_shipment(job: Job):
     return http(
         url=f"{self.settings.server_url}/rs/{self.settings.customer_number}/ncshipment",
         data=bytearray(job.data.serialize(), "utf-8"),
         headers={
             "Accept": "application/vnd.cpc.ncshipment-v4+xml",
             "Content-Type": "application/vnd.cpc.ncshipment-v4+xml",
             "Authorization": f"Basic {self.settings.authorization}",
             "Accept-language": "en-CA",
         },
         method="POST",
     )
예제 #21
0
 def _request(method: str, shipment_id: str, path: str = '', **kwargs):
     return http(
         url=
         f"{self.settings.server_url}/rs/{self.settings.customer_number}/{self.settings.customer_number}/shipment/{shipment_id}{path}",
         headers={
             "Content-Type": "application/vnd.cpc.shipment-v8+xml",
             "Accept": "application/vnd.cpc.shipment-v8+xml",
             "Authorization": f"Basic {self.settings.authorization}",
             "Accept-language": f"{self.settings.language}-CA",
         },
         method=method,
         **kwargs)
예제 #22
0
 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",
     )
예제 #23
0
 def _send_request(self, path: str, soapaction: str,
                   request: Serializable[Any]) -> str:
     return http(
         url=f"{self.settings.server_url}{path}",
         data=bytearray(request.serialize(), "utf-8"),
         headers={
             "Content-Type": "text/xml; charset=utf-8",
             "soapaction": soapaction,
             "Authorization": f"Basic {self.settings.authorization}",
         },
         method="POST",
     )
예제 #24
0
    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)
예제 #25
0
    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)
예제 #26
0
 def _update_pickup(job: Job) -> str:
     payload = job.data.serialize()
     return http(
         url=
         f"{self.settings.server_url}/enab/{self.settings.customer_number}/pickuprequest/{payload['pickuprequest']}",
         data=bytearray(payload["data"], "utf-8"),
         headers={
             "Accept": "application/vnd.cpc.pickuprequest+xml",
             "Authorization": f"Basic {self.settings.authorization}",
             "Accept-language": f"{self.settings.language}-CA",
         },
         method="PUT",
     )
예제 #27
0
 def _create_pickup(job: Job) -> str:
     return http(
         url=
         f"{self.settings.server_url}/enab/{self.settings.customer_number}/pickuprequest",
         data=bytearray(job.data.serialize(), "utf-8"),
         headers={
             "Accept": "application/vnd.cpc.pickuprequest+xml",
             "Content-Type": "application/vnd.cpc.pickuprequest+xml",
             "Authorization": f"Basic {self.settings.authorization}",
             "Accept-language": f"{self.settings.language}-CA",
         },
         method="POST",
     )
예제 #28
0
 def get_rates(self, request: Serializable[mailing_scenario]) -> Deserializable[str]:
     response = http(
         url=f"{self.settings.server_url}/rs/ship/price",
         data=bytearray(request.serialize(), "utf-8"),
         headers={
             "Content-Type": "application/vnd.cpc.ship.rate-v4+xml",
             "Accept": "application/vnd.cpc.ship.rate-v4+xml",
             "Authorization": f"Basic {self.settings.authorization}",
             "Accept-language": "en-CA",
         },
         method="POST",
     )
     return Deserializable(response, to_xml)
예제 #29
0
 def cancel_pickup(self, request: Serializable[str]) -> Deserializable[str]:
     pickuprequest = request.serialize()
     response = http(
         url=
         f"{self.settings.server_url}/enab/{self.settings.customer_number}/pickuprequest/{pickuprequest}",
         headers={
             "Accept": "application/vnd.cpc.pickuprequest+xml",
             "Authorization": f"Basic {self.settings.authorization}",
             "Accept-language": f"{self.settings.language}-CA",
         },
         method="DELETE",
     )
     return Deserializable(response or "<wrapper></wrapper>", XP.to_xml)
예제 #30
0
    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)