requests api says Response.encoding can sometimes be None http://docs.python-requests.org/en/master/api/#requests.Response.encoding and result.text.encode() doesn't accept None and expects a string.

this change prevents wrong-type runtime exceptions and defaults the encoding back to 'utf-8' (the default prior to PR#37912
This commit is contained in:
Michael Alphonso 2016-12-16 13:53:35 -05:00 committed by rallytime
parent 780457f934
commit 1dcf018df7

View file

@ -87,7 +87,9 @@ def creds(provider):
proxies={'http': ''}, timeout=AWS_METADATA_TIMEOUT,
)
result.raise_for_status()
role = result.text.encode(result.encoding or 'utf-8')
role = result.text.encode(
result.encoding if result.encoding else 'utf-8'
)
except (requests.exceptions.HTTPError, requests.exceptions.ConnectionError):
return provider['id'], provider['key'], ''
@ -460,7 +462,9 @@ def query(params=None, setname=None, requesturl=None, location=None,
)
LOG.trace(
'AWS Response Text: {0}'.format(
result.text.encode(result.encoding or 'utf-8')
result.text.encode(
result.encoding if result.encoding else 'utf-8'
)
)
)
result.raise_for_status()
@ -501,7 +505,9 @@ def query(params=None, setname=None, requesturl=None, location=None,
return {'error': data}, requesturl
return {'error': data}
response = result.text.encode(result.encoding or 'utf-8')
response = result.text.encode(
result.encoding if result.encoding else 'utf-8'
)
root = ET.fromstring(response)
items = root[1]