summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2021-01-16 23:04:13 +0100
committerFlorian Bruhin <me@the-compiler.org>2021-01-17 12:12:26 +0100
commit1adaf916cd9a9b4e189655e7bee8f69c220d0a7b (patch)
tree5e7f62008ecc5b740e962c2e031361bb0bdb325a
parentf6ca050c94f250456eea421a914b8d3b831439be (diff)
downloadqutebrowser-1adaf916cd9a9b4e189655e7bee8f69c220d0a7b.tar.gz
qutebrowser-1adaf916cd9a9b4e189655e7bee8f69c220d0a7b.zip
rfc6266: First cleanups after stdlib switch
See #1161
-rw-r--r--qutebrowser/browser/webkit/http.py2
-rw-r--r--qutebrowser/browser/webkit/rfc6266.py19
2 files changed, 8 insertions, 13 deletions
diff --git a/qutebrowser/browser/webkit/http.py b/qutebrowser/browser/webkit/http.py
index c04b37a85..9c44cea4c 100644
--- a/qutebrowser/browser/webkit/http.py
+++ b/qutebrowser/browser/webkit/http.py
@@ -51,7 +51,7 @@ def parse_content_disposition(reply):
value))
content_disposition = rfc6266.parse_headers(value)
filename = content_disposition.filename()
- except (SyntaxError, UnicodeDecodeError, rfc6266.Error):
+ except (UnicodeDecodeError, rfc6266.Error):
log.rfc6266.exception("Error while parsing filename")
else:
is_inline = content_disposition.is_inline()
diff --git a/qutebrowser/browser/webkit/rfc6266.py b/qutebrowser/browser/webkit/rfc6266.py
index 41f0dcddd..30ad31228 100644
--- a/qutebrowser/browser/webkit/rfc6266.py
+++ b/qutebrowser/browser/webkit/rfc6266.py
@@ -68,10 +68,7 @@ class _ContentDisposition:
"""Used internally after parsing the header."""
self.disposition = disposition
self.assocs = dict(assocs) # So we can change values
- if 'filename*' in self.assocs:
- param = self.assocs['filename*']
- assert isinstance(param, ExtDispositionParm)
- self.assocs['filename*'] = parse_ext_value(param.value).string
+ assert 'filename*' not in self.assocs # Handled by headerregistry
def filename(self):
"""The filename from the Content-Disposition header or None.
@@ -85,12 +82,8 @@ class _ContentDisposition:
well, due to a certain browser using the part after the dot for
mime-sniffing. Saving it to a database is fine by itself though.
"""
- if 'filename*' in self.assocs:
- return self.assocs['filename*']
- elif 'filename' in self.assocs:
- # XXX Reject non-ascii (parsed via qdtext) here?
- return self.assocs['filename']
- return None
+ # XXX Reject non-ascii (parsed via qdtext) here?
+ return self.assocs.get('filename')
def is_inline(self):
"""Return if the file should be handled inline.
@@ -115,6 +108,7 @@ def parse_headers(content_disposition):
# filename parameter. But it does mean we occasionally give
# less-than-certain values for some legacy senders.
content_disposition = content_disposition.decode('iso-8859-1')
+
# Our parsing is relaxed in these regards:
# - The grammar allows a final ';' in the header;
# - We do LWS-folding, and possibly normalise other broken
@@ -130,8 +124,9 @@ def parse_headers(content_disposition):
if parsed.defects:
raise Error(parsed.defects)
- return _ContentDisposition(disposition=parsed._content_disposition,
- assocs=parsed._params)
+
+ return _ContentDisposition(disposition=parsed.content_disposition,
+ assocs=parsed.params)
def parse_ext_value(val):