mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
_formatparam(), set_param(): RFC 2231 encoding support by Oleg
Broytmann in SF patch #600096. Specifically, the former function now encodes the triplets, while the latter adds optional charset and language arguments.
This commit is contained in:
parent
470288c54e
commit
3c25535dc8
1 changed files with 11 additions and 3 deletions
|
@ -38,8 +38,9 @@ def _formatparam(param, value=None, quote=1):
|
|||
# are (charset, language, value). charset is a string, not a Charset
|
||||
# instance.
|
||||
if isinstance(value, TupleType):
|
||||
# Convert to ascii, ignore language
|
||||
value = unicode(value[2], value[0]).encode("ascii")
|
||||
# Encode as per RFC 2231
|
||||
param += '*'
|
||||
value = Utils.encode_rfc2231(value[2], value[0], value[1])
|
||||
# BAW: Please check this. I think that if quote is set it should
|
||||
# force quoting even if not necessary.
|
||||
if quote or tspecials.search(value):
|
||||
|
@ -543,7 +544,8 @@ class Message:
|
|||
return v
|
||||
return failobj
|
||||
|
||||
def set_param(self, param, value, header='Content-Type', requote=1):
|
||||
def set_param(self, param, value, header='Content-Type', requote=1,
|
||||
charset=None, language=''):
|
||||
"""Set a parameter in the Content-Type: header.
|
||||
|
||||
If the parameter already exists in the header, its value will be
|
||||
|
@ -556,7 +558,13 @@ class Message:
|
|||
An alternate header can specified in the header argument, and
|
||||
all parameters will be quoted as appropriate unless requote is
|
||||
set to a false value.
|
||||
|
||||
If charset is specified the parameter will be encoded according to RFC
|
||||
2231. In this case language is optional.
|
||||
"""
|
||||
if not isinstance(value, TupleType) and charset:
|
||||
value = (charset, language, value)
|
||||
|
||||
if not self.has_key(header) and header.lower() == 'content-type':
|
||||
ctype = 'text/plain'
|
||||
else:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue