aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--googleapiclient/http.py2
-rw-r--r--tests/test_http.py17
2 files changed, 18 insertions, 1 deletions
diff --git a/googleapiclient/http.py b/googleapiclient/http.py
index 1b661e1b2..927464e9f 100644
--- a/googleapiclient/http.py
+++ b/googleapiclient/http.py
@@ -733,7 +733,7 @@ class MediaIoBaseDownload(object):
headers = self._headers.copy()
headers["range"] = "bytes=%d-%d" % (
self._progress,
- self._progress + self._chunksize,
+ self._progress + self._chunksize - 1,
)
http = self._request.http
diff --git a/tests/test_http.py b/tests/test_http.py
index 852cd7e1a..e55e05662 100644
--- a/tests/test_http.py
+++ b/tests/test_http.py
@@ -488,6 +488,23 @@ class TestMediaIoBaseDownload(unittest.TestCase):
self.assertEqual(5, download._progress)
self.assertEqual(5, download._total_size)
+ def test_media_io_base_download_range_request_header(self):
+ self.request.http = HttpMockSequence(
+ [
+ (
+ {"status": "200", "content-range": "0-2/5"},
+ "echo_request_headers_as_json",
+ ),
+ ]
+ )
+
+ download = MediaIoBaseDownload(fd=self.fd, request=self.request, chunksize=3)
+
+ status, done = download.next_chunk()
+ result = json.loads(self.fd.getvalue().decode("utf-8"))
+
+ self.assertEqual(result.get("range"), "bytes=0-2")
+
def test_media_io_base_download_custom_request_headers(self):
self.request.http = HttpMockSequence(
[