diff options
author | Barry Warsaw <barry@python.org> | 2015-01-27 15:11:53 -0500 |
---|---|---|
committer | Barry Warsaw <barry@python.org> | 2015-01-27 15:11:53 -0500 |
commit | 96d130e7732f1242d71c65a32412ae56cb229abf (patch) | |
tree | 3fb39ac6dd43988f36507a1c0b82e8944dfe95ff /cloudinit/user_data.py | |
parent | 6e742d20e9ed56498925c7c850cd5da65d063b4b (diff) | |
download | vyos-cloud-init-96d130e7732f1242d71c65a32412ae56cb229abf.tar.gz vyos-cloud-init-96d130e7732f1242d71c65a32412ae56cb229abf.zip |
Respond to review:
- Refactor "fully" decoding the payload of a text/* part. In Python 3,
decode=True only means to decode according to Content-Transfer-Encoding, not
according to any charset in the Content-Type header. So do that.
Diffstat (limited to 'cloudinit/user_data.py')
-rw-r--r-- | cloudinit/user_data.py | 12 |
1 files changed, 1 insertions, 11 deletions
diff --git a/cloudinit/user_data.py b/cloudinit/user_data.py index bf5642a5..5fdc46f2 100644 --- a/cloudinit/user_data.py +++ b/cloudinit/user_data.py @@ -108,17 +108,7 @@ class UserDataProcessor(object): ctype = None ctype_orig = part.get_content_type() - ctype_main = part.get_content_maintype() - payload = part.get_payload(decode=True) - # In Python 3, decoding the payload will ironically hand us a - # bytes object. 'decode' means to decode according to - # Content-Transfer-Encoding, not according to any charset in the - # Content-Type. So, if we end up with bytes, first try to decode - # to str via CT charset, and failing that, try utf-8 using - # surrogate escapes. - if six.PY3 and ctype_main == 'text' and isinstance(payload, bytes): - charset = part.get_charset() or 'utf-8' - payload = payload.decode(charset, errors='surrogateescape') + payload = util.fully_decoded_payload(part) was_compressed = False # When the message states it is of a gzipped content type ensure |