2023-01-21 14:15:36 -07:00

42 lines
1.5 KiB
Python

import json
import requests
import xmltodict
from lxml import etree
from usps import USPSApi as USPSApiBase
from django.conf import settings
from . import ShippingContainer
class USPSApi(USPSApiBase):
urls = {
'tracking': 'TrackV2{test}&XML={xml}',
'label': 'eVS{test}&XML={xml}',
'validate': 'Verify&XML={xml}',
'rate': 'RateV4&XML={xml}',
}
def get_rate(self, *args, **kwargs):
return Rate(self, *args, **kwargs)
class Rate:
def __init__(self, usps, request, **kwargs):
xml = etree.Element('RateV4Request', {'USERID': usps.api_user_id})
etree.SubElement(xml, 'Revision').text = '2'
package = etree.SubElement(xml, 'Package', {'ID': '0'})
etree.SubElement(package, 'Service').text = request['service']
etree.SubElement(package, 'ZipOrigination').text = request['zip_origination']
etree.SubElement(package, 'ZipDestination').text = request['zip_destination']
etree.SubElement(package, 'Pounds').text = request['pounds']
etree.SubElement(package, 'Ounces').text = request['ounces']
etree.SubElement(package, 'Container').text = request['container']
etree.SubElement(package, 'Width').text = request['width']
etree.SubElement(package, 'Length').text = request['length']
etree.SubElement(package, 'Height').text = request['height']
etree.SubElement(package, 'Girth').text = request['girth']
etree.SubElement(package, 'Machinable').text = request['machinable']
self.result = usps.send_request('rate', xml)