mirror of
https://github.com/httpie/cli.git
synced 2024-11-22 07:43:20 +01:00
Python 3 unicode fixes.
This commit is contained in:
parent
8ec32fe7f3
commit
467d126b6c
@ -83,8 +83,8 @@ def get_requests_kwargs(args):
|
|||||||
# This allows for unicode headers which is non-standard but practical.
|
# This allows for unicode headers which is non-standard but practical.
|
||||||
# See: https://github.com/jkbr/httpie/issues/212
|
# See: https://github.com/jkbr/httpie/issues/212
|
||||||
headers = dict(
|
headers = dict(
|
||||||
(k.encode('utf8'), v.encode('utf8') if isinstance(v, str) else v)
|
(name, value.encode('utf8') if isinstance(value, str) else value)
|
||||||
for k, v in args.headers.items()
|
for name, value in args.headers.items()
|
||||||
)
|
)
|
||||||
|
|
||||||
kwargs = {
|
kwargs = {
|
||||||
|
@ -104,7 +104,10 @@ class HTTPMessage(object):
|
|||||||
@property
|
@property
|
||||||
def content_type(self):
|
def content_type(self):
|
||||||
"""Return the message content type."""
|
"""Return the message content type."""
|
||||||
return self._orig.headers.get('Content-Type', '')
|
ct = self._orig.headers.get('Content-Type', '')
|
||||||
|
if not isinstance(ct, str):
|
||||||
|
ct = ct.decode('utf8')
|
||||||
|
return ct
|
||||||
|
|
||||||
|
|
||||||
class HTTPResponse(HTTPMessage):
|
class HTTPResponse(HTTPMessage):
|
||||||
|
@ -20,7 +20,7 @@ class HTTPBasicAuth(requests.auth.HTTPBasicAuth):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
credentials = u'%s:%s' % (self.username, self.password)
|
credentials = u'%s:%s' % (self.username, self.password)
|
||||||
token = b64encode(credentials.encode('utf8')).strip()
|
token = b64encode(credentials.encode('utf8')).strip().decode('latin1')
|
||||||
r.headers['Authorization'] = 'Basic %s' % token
|
r.headers['Authorization'] = 'Basic %s' % token
|
||||||
return r
|
return r
|
||||||
|
|
||||||
|
@ -105,7 +105,7 @@ class Session(BaseConfigDict):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
for name, value in request_headers.items():
|
for name, value in request_headers.items():
|
||||||
|
value = value.decode('utf8')
|
||||||
if name == 'User-Agent' and value.startswith('HTTPie/'):
|
if name == 'User-Agent' and value.startswith('HTTPie/'):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@ class TestAutoContentTypeAndAcceptHeaders:
|
|||||||
# JSON headers should automatically be set also for GET with data.
|
# JSON headers should automatically be set also for GET with data.
|
||||||
r = http('POST', httpbin('/post'), 'a=b')
|
r = http('POST', httpbin('/post'), 'a=b')
|
||||||
assert HTTP_OK in r
|
assert HTTP_OK in r
|
||||||
assert '"Accept": "application/json"' in r
|
assert '"Accept": "application/json"' in r, r
|
||||||
assert '"Content-Type": "application/json; charset=utf-8' in r
|
assert '"Content-Type": "application/json; charset=utf-8' in r
|
||||||
|
|
||||||
def test_POST_explicit_JSON_auto_JSON_accept(self):
|
def test_POST_explicit_JSON_auto_JSON_accept(self):
|
||||||
|
@ -61,5 +61,5 @@ class TestHTTPie:
|
|||||||
def test_headers(self):
|
def test_headers(self):
|
||||||
r = http('GET', httpbin('/headers'), 'Foo:bar')
|
r = http('GET', httpbin('/headers'), 'Foo:bar')
|
||||||
assert HTTP_OK in r
|
assert HTTP_OK in r
|
||||||
assert '"User-Agent": "HTTPie' in r
|
assert '"User-Agent": "HTTPie' in r, r
|
||||||
assert '"Foo": "bar"' in r
|
assert '"Foo": "bar"' in r
|
||||||
|
@ -6,40 +6,40 @@ Various unicode handling related tests.
|
|||||||
from tests import http, httpbin
|
from tests import http, httpbin
|
||||||
|
|
||||||
|
|
||||||
JP_SUN = u'太陽'
|
UNICODE = u'太陽'
|
||||||
|
|
||||||
|
|
||||||
class TestUnicode:
|
class TestUnicode:
|
||||||
|
|
||||||
def test_unicode_headers(self):
|
def test_unicode_headers(self):
|
||||||
r = http('GET', httpbin('/headers'), u'Test:%s' % JP_SUN)
|
r = http('GET', httpbin('/headers'), u'Test:%s' % UNICODE)
|
||||||
assert r.json['headers']['Test'] == JP_SUN
|
assert r.json['headers']['Test'] == UNICODE
|
||||||
|
|
||||||
def test_unicode_form_item(self):
|
def test_unicode_form_item(self):
|
||||||
r = http('--form', 'POST', httpbin('/post'), u'test=%s' % JP_SUN)
|
r = http('--form', 'POST', httpbin('/post'), u'test=%s' % UNICODE)
|
||||||
assert r.json['form']['test'] == JP_SUN
|
assert r.json['form']['test'] == UNICODE
|
||||||
|
|
||||||
def test_unicode_json_item(self):
|
def test_unicode_json_item(self):
|
||||||
r = http('--json', 'POST', httpbin('/post'), u'test=%s' % JP_SUN)
|
r = http('--json', 'POST', httpbin('/post'), u'test=%s' % UNICODE)
|
||||||
assert r.json['json']['test'] == JP_SUN
|
assert r.json['json']['test'] == UNICODE
|
||||||
|
|
||||||
def test_unicode_raw_json_item(self):
|
def test_unicode_raw_json_item(self):
|
||||||
r = http('--json', 'POST', httpbin('/post'), u'test:=["%s"]' % JP_SUN)
|
r = http('--json', 'POST', httpbin('/post'), u'test:=["%s"]' % UNICODE)
|
||||||
assert r.json['json']['test'] == [JP_SUN]
|
assert r.json['json']['test'] == [UNICODE]
|
||||||
|
|
||||||
def test_unicode_url(self):
|
def test_unicode_url(self):
|
||||||
r = http(httpbin(u'/get?test=' + JP_SUN))
|
r = http(httpbin(u'/get?test=' + UNICODE))
|
||||||
assert r.json['args']['test'] == JP_SUN
|
assert r.json['args']['test'] == UNICODE
|
||||||
|
|
||||||
def test_unicode_basic_auth(self):
|
def test_unicode_basic_auth(self):
|
||||||
# it doesn't really authenticate us because httpbin
|
# it doesn't really authenticate us because httpbin
|
||||||
# doesn't interpret the utf8-encoded auth
|
# doesn't interpret the utf8-encoded auth
|
||||||
http('--verbose', '--auth', u'test:%s' % JP_SUN,
|
http('--verbose', '--auth', u'test:%s' % UNICODE,
|
||||||
httpbin(u'/basic-auth/test/' + JP_SUN))
|
httpbin(u'/basic-auth/test/' + UNICODE))
|
||||||
|
|
||||||
def test_unicode_digest_auth(self):
|
def test_unicode_digest_auth(self):
|
||||||
# it doesn't really authenticate us because httpbin
|
# it doesn't really authenticate us because httpbin
|
||||||
# doesn't interpret the utf8-encoded auth
|
# doesn't interpret the utf8-encoded auth
|
||||||
http('--auth-type=digest',
|
http('--auth-type=digest',
|
||||||
'--auth', u'test:%s' % JP_SUN,
|
'--auth', u'test:%s' % UNICODE,
|
||||||
httpbin(u'/digest-auth/auth/test/' + JP_SUN))
|
httpbin(u'/digest-auth/auth/test/' + UNICODE))
|
||||||
|
Loading…
Reference in New Issue
Block a user