Commit 27cdcb1c authored by Lucas Carvalho's avatar Lucas Carvalho

The download method must return a file descriptor.

It should return the file descriptor instead of file content as string.

This implementation does not consume RAM Memory, so it is safer to
download big files.

When you call file_descriptor.close, it will remove the file from tmp
folder automatically.
parent efd4a76d
...@@ -18,6 +18,7 @@ import hashlib ...@@ -18,6 +18,7 @@ import hashlib
import httplib import httplib
import json import json
import os import os
import tempfile
from urllib import urlretrieve from urllib import urlretrieve
from urlparse import urlparse from urlparse import urlparse
...@@ -129,11 +130,12 @@ class NetworkcacheClient(object): ...@@ -129,11 +130,12 @@ class NetworkcacheClient(object):
def download(self, sha512sum): def download(self, sha512sum):
''' Download the file. ''' Download the file.
It uses http GET request method. It uses http GET request method.
Returns downloaded file absolute location
''' '''
sha_cache_url = os.path.join(self.shacache_url, sha512sum) sha_cache_url = os.path.join(self.shacache_url, sha512sum)
path, headers = urlretrieve(sha_cache_url) file_descriptor = tempfile.NamedTemporaryFile()
return path path, headers = urlretrieve(sha_cache_url, file_descriptor.name)
file_descriptor.seek(0)
return file_descriptor
def select(self, directory_key=None): def select(self, directory_key=None):
''' Download a file from shacache by selecting the entry in shadir ''' Download a file from shacache by selecting the entry in shadir
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment