Add Accept-Encoding: identity for --download

#423
This commit is contained in:
Jakub Roztocil 2016-03-07 11:46:59 +08:00
parent 7ce6eb148e
commit 25d1e8e418
2 changed files with 6 additions and 4 deletions

View File

@ -178,8 +178,8 @@ class Downloader(object):
:type request_headers: dict :type request_headers: dict
""" """
# Disable content encoding so that we can resume, etc. # Ask the server not to encode the content so that we can resume, etc.
request_headers['Accept-Encoding'] = None request_headers['Accept-Encoding'] = 'identity'
if self._resume: if self._resume:
bytes_have = os.path.getsize(self._output_file.name) bytes_have = os.path.getsize(self._output_file.name)
if bytes_have: if bytes_have:
@ -201,6 +201,8 @@ class Downloader(object):
""" """
assert not self.status.time_started assert not self.status.time_started
# FIXME: some servers still might sent Content-Encoding: gzip
# <https://github.com/jkbrzt/httpie/issues/423>
try: try:
total_size = int(response.headers['Content-Length']) total_size = int(response.headers['Content-Length'])
except (KeyError, ValueError, TypeError): except (KeyError, ValueError, TypeError):
@ -299,8 +301,7 @@ class Status(object):
def started(self, resumed_from=0, total_size=None): def started(self, resumed_from=0, total_size=None):
assert self.time_started is None assert self.time_started is None
if total_size is not None: self.total_size = total_size
self.total_size = total_size
self.downloaded = self.resumed_from = resumed_from self.downloaded = self.resumed_from = resumed_from
self.time_started = time() self.time_started = time()

View File

@ -13,6 +13,7 @@ CLIENT_CERT = os.path.join(TESTS_ROOT, 'client_certs', 'client.crt')
CLIENT_KEY = os.path.join(TESTS_ROOT, 'client_certs', 'client.key') CLIENT_KEY = os.path.join(TESTS_ROOT, 'client_certs', 'client.key')
CLIENT_PEM = os.path.join(TESTS_ROOT, 'client_certs', 'client.pem') CLIENT_PEM = os.path.join(TESTS_ROOT, 'client_certs', 'client.pem')
# FIXME:
# We test against a local httpbin instance which uses a self-signed cert. # We test against a local httpbin instance which uses a self-signed cert.
# Requests without --verify=<CA_BUNDLE> will fail with a verification error. # Requests without --verify=<CA_BUNDLE> will fail with a verification error.
# See: https://github.com/kevin1024/pytest-httpbin#https-support # See: https://github.com/kevin1024/pytest-httpbin#https-support