utils.rfc6266: Nicer ext-param handling
This commit is contained in:
parent
e159990363
commit
acb5159791
@ -55,9 +55,9 @@ class ContentDisposition:
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
if 'filename*' in self.assocs:
|
if 'filename*' in self.assocs:
|
||||||
val = self.assocs['filename*']
|
param = self.assocs['filename*']
|
||||||
assert isinstance(val, ExtDispositionParm)
|
assert isinstance(param, ExtDispositionParm)
|
||||||
return parse_ext_value(val[0]).string
|
return parse_ext_value(param.value).string
|
||||||
elif 'filename' in self.assocs:
|
elif 'filename' in self.assocs:
|
||||||
# XXX Reject non-ascii (parsed via qdtext) here?
|
# XXX Reject non-ascii (parsed via qdtext) here?
|
||||||
return self.assocs['filename']
|
return self.assocs['filename']
|
||||||
@ -142,7 +142,6 @@ def parse_headers(content_disposition, location=None, relaxed=False):
|
|||||||
|
|
||||||
|
|
||||||
def parse_ext_value(val):
|
def parse_ext_value(val):
|
||||||
charset = val[0]
|
|
||||||
if len(val) == 3:
|
if len(val) == 3:
|
||||||
charset, langtag, coded = val
|
charset, langtag, coded = val
|
||||||
else:
|
else:
|
||||||
@ -251,9 +250,13 @@ class NoExtToken(peg.Symbol):
|
|||||||
class DispositionParm(str):
|
class DispositionParm(str):
|
||||||
grammar = peg.attr('name', NoExtToken), '=', Value
|
grammar = peg.attr('name', NoExtToken), '=', Value
|
||||||
|
|
||||||
class ExtDispositionParm(peg.List):
|
class ExtDispositionParm:
|
||||||
grammar = peg.attr('name', ExtToken), '=', ExtValue
|
grammar = peg.attr('name', ExtToken), '=', ExtValue
|
||||||
|
|
||||||
|
def __init__(self, value, name=None):
|
||||||
|
self.name = name
|
||||||
|
self.value = value
|
||||||
|
|
||||||
class DispositionType(peg.List):
|
class DispositionType(peg.List):
|
||||||
grammar = [re.compile('(inline|attachment)', re.I), Token]
|
grammar = [re.compile('(inline|attachment)', re.I), Token]
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user