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)
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)
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)
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)
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)
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", )
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", )
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)
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)
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())])
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])
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)
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())])
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())] )