Skip to content

Commit 51a7d80

Browse files
author
David Caplan
authored
EDPDEV-1535 add commit download support (#474)
* EDPDEV-1535 add commit download support * prevent automatic decompression when downloading .gz files * fix non-gz file download
1 parent af84219 commit 51a7d80

2 files changed

Lines changed: 12 additions & 3 deletions

File tree

solvebio/resource/apiresource.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import os
99
import requests
1010
import tempfile
11+
import shutil
1112

1213
try:
1314
from urllib import quote_plus
@@ -213,15 +214,22 @@ def download(self, path=None, **kwargs):
213214
path = os.path.join(tempfile.gettempdir(), filename)
214215

215216
try:
216-
response = requests.request(method='get', url=download_url)
217+
# use streaming to prevent automatic decompression
218+
response = requests.request(method='get', url=download_url, stream=True)
217219
except Exception as e:
218220
_handle_request_error(e)
219221

220222
if not (200 <= response.status_code < 400):
221223
_handle_api_error(response)
222224

223225
with open(path, 'wb') as fileobj:
224-
fileobj.write(response._content)
226+
if filename.endswith('.gz'):
227+
# Don't automatically decompress gzipped files
228+
shutil.copyfileobj(response.raw, fileobj)
229+
else:
230+
for chunk in response.iter_content(chunk_size=1024 * 8):
231+
if chunk:
232+
fileobj.write(chunk)
225233

226234
return path
227235

solvebio/resource/datasetcommit.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from .apiresource import ListableAPIResource
44
from .apiresource import CreateableAPIResource
55
from .apiresource import UpdateableAPIResource
6+
from .apiresource import DownloadableAPIResource
67
from .solveobject import convert_to_solve_object
78
from .task import Task
89

@@ -34,7 +35,7 @@ def follow_commits(task, sleep_seconds):
3435

3536

3637
class DatasetCommit(CreateableAPIResource, ListableAPIResource,
37-
UpdateableAPIResource):
38+
UpdateableAPIResource, DownloadableAPIResource):
3839
"""
3940
DatasetCommits represent a change made to a Dataset.
4041
"""

0 commit comments

Comments
 (0)