зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1314355 - part 1 - add ability to use a generic digest algorithm for http_download_and_save; r=rillian
This will be useful for downloading files from tooltool, which requires a SHA512 checksum.
This commit is contained in:
Родитель
61d027b357
Коммит
be73c54413
|
@ -658,9 +658,13 @@ class BaseBootstrapper(object):
|
||||||
if e.errno != errno.ENOENT:
|
if e.errno != errno.ENOENT:
|
||||||
raise
|
raise
|
||||||
|
|
||||||
def http_download_and_save(self, url, dest, sha256hexhash):
|
def http_download_and_save(self, url, dest, hexhash, digest='sha256'):
|
||||||
|
"""Download the given url and save it to dest. hexhash is a checksum
|
||||||
|
that will be used to validate the downloaded file using the given
|
||||||
|
digest algorithm. The value of digest can be any value accepted by
|
||||||
|
hashlib.new. The default digest used is 'sha256'."""
|
||||||
f = urllib2.urlopen(url)
|
f = urllib2.urlopen(url)
|
||||||
h = hashlib.sha256()
|
h = hashlib.new(digest)
|
||||||
with open(dest, 'wb') as out:
|
with open(dest, 'wb') as out:
|
||||||
while True:
|
while True:
|
||||||
data = f.read(4096)
|
data = f.read(4096)
|
||||||
|
@ -669,6 +673,6 @@ class BaseBootstrapper(object):
|
||||||
h.update(data)
|
h.update(data)
|
||||||
else:
|
else:
|
||||||
break
|
break
|
||||||
if h.hexdigest() != sha256hexhash:
|
if h.hexdigest() != hexhash:
|
||||||
os.remove(dest)
|
os.remove(dest)
|
||||||
raise ValueError('Hash of downloaded file does not match expected hash')
|
raise ValueError('Hash of downloaded file does not match expected hash')
|
||||||
|
|
Загрузка…
Ссылка в новой задаче