Example #1
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, to_xml)
Example #2
0
 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",
     )
Example #3
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, to_xml)
Example #4
0
 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)
Example #5
0
 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)
Example #6
0
 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)
Example #7
0
 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)
Example #8
0
 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)
Example #9
0
 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)