2015-06-12 19:26:14 +02:00
|
|
|
# -*- coding: utf-8 -*-
|
2019-06-06 18:52:23 +02:00
|
|
|
from __future__ import unicode_literals
|
|
|
|
from future import standard_library
|
|
|
|
standard_library.install_aliases()
|
2015-06-12 19:26:14 +02:00
|
|
|
from requests.packages import urllib3
|
2016-07-27 23:26:51 +02:00
|
|
|
from requests.packages.urllib3 import fields
|
|
|
|
import six
|
2019-06-06 18:52:23 +02:00
|
|
|
import urllib.request, urllib.parse, urllib.error
|
2015-06-12 19:26:14 +02:00
|
|
|
|
|
|
|
def fix():
|
2016-07-27 23:26:51 +02:00
|
|
|
urllib3.disable_warnings()
|
|
|
|
fields.format_header_param=patched_format_header_param
|
|
|
|
|
|
|
|
def patched_format_header_param(name, value):
|
|
|
|
if not any(ch in value for ch in '"\\\r\n'):
|
|
|
|
result = '%s="%s"' % (name, value)
|
|
|
|
try:
|
|
|
|
result.encode('ascii')
|
|
|
|
except (UnicodeEncodeError, UnicodeDecodeError):
|
|
|
|
pass
|
|
|
|
else:
|
|
|
|
return result
|
|
|
|
if not six.PY3 and isinstance(value, six.text_type): # Python 2:
|
|
|
|
value = value.encode('utf-8')
|
2019-06-06 18:52:23 +02:00
|
|
|
value=urllib.parse.quote(value, safe='')
|
2016-07-27 23:26:51 +02:00
|
|
|
value = '%s=%s' % (name, value)
|
|
|
|
return value
|