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, to_xml)
def get_tracking(track_request: str): return http( url=f"{self.settings.server_url}/Track", data=bytearray(track_request, "utf-8"), headers={"Content-Type": "application/xml"}, method="POST", )
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, to_xml)
def request_pickup( self, request: Serializable[BookPURequest]) -> 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, to_xml)
def get_rates(self, request: Serializable[RateRequest]) -> Deserializable[str]: response = http( url=f"{self.settings.server_url}/Rate", data=bytearray(request.serialize(), "utf-8"), headers={"Content-Type": "application/xml"}, method="POST", ) return Deserializable(response, to_xml)
def create_shipment( self, request: Serializable[ProcessShipmentRequest] ) -> 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, to_xml)
def process(job: Job): return (http( url= f"{self.settings.server_url}{SHIPPING_SERVICES[job.id]['path']}", data=bytearray(job.data, "utf-8"), headers={ "Content-Type": "text/xml; charset=utf-8", "soapaction": SHIPPING_SERVICES[job.id]['action'], "Authorization": f"Basic {self.settings.authorization}", }, method="POST", ) if job.data is not None else job.fallback)
def get_tracking(self, request: Serializable[Envelope]) -> Deserializable[str]: response = http( url= f"{self.settings.server_url}/PWS/V1/Tracking/TrackingService.asmx", data=request.serialize().encode("utf-8"), headers={ "Content-Type": "text/xml; charset=utf-8", "soapaction": "http://purolator.com/pws/service/v1/TrackPackagesByPin", "Authorization": f"Basic {self.settings.authorization}", }, method="POST", ) return Deserializable(response, to_xml)
def get_rates(self, request: Serializable[Envelope]) -> Deserializable[str]: response = http( url= f"{self.settings.server_url}/EWS/V2/Estimating/EstimatingService.asmx", data=bytearray(request.serialize(), "utf-8"), headers={ "Content-Type": "text/xml; charset=utf-8", "soapaction": "http://purolator.com/pws/service/v2/GetFullEstimate", "Authorization": f"Basic {self.settings.authorization}", }, method="POST", ) return Deserializable(response, to_xml)