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)
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)
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", )
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)
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 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 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_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", )
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 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 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", )
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 _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
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", )
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", )
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", )
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>"
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", )
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 _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", )
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)
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", )
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", )
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: 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)
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", )
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", )
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)
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)
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)