fix: Python 3 fixes for MWS Connector (#18986)
This commit is contained in:
parent
c5c3860c5c
commit
4fe67236ed
@ -89,8 +89,6 @@ def request_and_fetch_report_id(report_type, start_date=None, end_date=None, mar
|
|||||||
end_date=end_date,
|
end_date=end_date,
|
||||||
marketplaceids=marketplaceids)
|
marketplaceids=marketplaceids)
|
||||||
|
|
||||||
#add time delay to wait for amazon to generate report
|
|
||||||
time.sleep(20)
|
|
||||||
report_request_id = report_response.parsed["ReportRequestInfo"]["ReportRequestId"]["value"]
|
report_request_id = report_response.parsed["ReportRequestInfo"]["ReportRequestId"]["value"]
|
||||||
generated_report_id = None
|
generated_report_id = None
|
||||||
#poll to get generated report
|
#poll to get generated report
|
||||||
|
@ -10,6 +10,7 @@ import urllib
|
|||||||
import hashlib
|
import hashlib
|
||||||
import hmac
|
import hmac
|
||||||
import base64
|
import base64
|
||||||
|
import six
|
||||||
from erpnext.erpnext_integrations.doctype.amazon_mws_settings import xml_utils
|
from erpnext.erpnext_integrations.doctype.amazon_mws_settings import xml_utils
|
||||||
import re
|
import re
|
||||||
try:
|
try:
|
||||||
@ -77,6 +78,7 @@ def remove_empty(d):
|
|||||||
return d
|
return d
|
||||||
|
|
||||||
def remove_namespace(xml):
|
def remove_namespace(xml):
|
||||||
|
xml = xml.decode('utf-8')
|
||||||
regex = re.compile(' xmlns(:ns2)?="[^"]+"|(ns2:)|(xml:)')
|
regex = re.compile(' xmlns(:ns2)?="[^"]+"|(ns2:)|(xml:)')
|
||||||
return regex.sub('', xml)
|
return regex.sub('', xml)
|
||||||
|
|
||||||
@ -172,9 +174,10 @@ class MWS(object):
|
|||||||
'SignatureMethod': 'HmacSHA256',
|
'SignatureMethod': 'HmacSHA256',
|
||||||
}
|
}
|
||||||
params.update(extra_data)
|
params.update(extra_data)
|
||||||
request_description = '&'.join(['%s=%s' % (k, urllib.quote(params[k], safe='-_.~').encode('utf-8')) for k in sorted(params)])
|
quote = urllib.quote if six.PY2 else urllib.parse.quote
|
||||||
|
request_description = '&'.join(['%s=%s' % (k, quote(params[k], safe='-_.~')) for k in sorted(params)])
|
||||||
signature = self.calc_signature(method, request_description)
|
signature = self.calc_signature(method, request_description)
|
||||||
url = '%s%s?%s&Signature=%s' % (self.domain, self.uri, request_description, urllib.quote(signature))
|
url = '%s%s?%s&Signature=%s' % (self.domain, self.uri, request_description, quote(signature))
|
||||||
headers = {'User-Agent': 'python-amazon-mws/0.0.1 (Language=Python)'}
|
headers = {'User-Agent': 'python-amazon-mws/0.0.1 (Language=Python)'}
|
||||||
headers.update(kwargs.get('extra_headers', {}))
|
headers.update(kwargs.get('extra_headers', {}))
|
||||||
|
|
||||||
@ -218,7 +221,10 @@ class MWS(object):
|
|||||||
"""Calculate MWS signature to interface with Amazon
|
"""Calculate MWS signature to interface with Amazon
|
||||||
"""
|
"""
|
||||||
sig_data = method + '\n' + self.domain.replace('https://', '').lower() + '\n' + self.uri + '\n' + request_description
|
sig_data = method + '\n' + self.domain.replace('https://', '').lower() + '\n' + self.uri + '\n' + request_description
|
||||||
return base64.b64encode(hmac.new(str(self.secret_key), sig_data, hashlib.sha256).digest())
|
sig_data = sig_data.encode('utf-8')
|
||||||
|
secret_key = self.secret_key.encode('utf-8')
|
||||||
|
digest = hmac.new(secret_key, sig_data, hashlib.sha256).digest()
|
||||||
|
return base64.b64encode(digest).decode('utf-8')
|
||||||
|
|
||||||
def get_timestamp(self):
|
def get_timestamp(self):
|
||||||
"""
|
"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user