[gettor/master] Deduplicate utility methods

commit 8a99835cfea2d3b594bf3951b8970c5e2117de77 Author: aagbsn <aagbsn@extc.org> Date: Fri Feb 5 18:53:36 2016 +0000 Deduplicate utility methods move get_bundle_info, get_file_sha256, valid_format to gettor/utils.py --- gettor/utils.py | 92 ++++++++++++++++++++++++++++++++++++++++++++++ upload/bundles2drive.py | 93 +---------------------------------------------- upload/bundles2dropbox.py | 92 +--------------------------------------------- upload/bundles2github.py | 56 +--------------------------- 4 files changed, 95 insertions(+), 238 deletions(-) diff --git a/gettor/utils.py b/gettor/utils.py index 3f69e08..c684097 100644 --- a/gettor/utils.py +++ b/gettor/utils.py @@ -47,3 +47,95 @@ def get_sha256(string): """ return str(hashlib.sha256(string).hexdigest()) + + +def get_bundle_info(file, osys): + """Get the os, arch and lc from a bundle string. + + :param: file (string) the name of the file. + :param: osys (string) the OS. + + :raise: ValueError if the bundle doesn't have a valid bundle format. + + :return: (list) the os, arch and lc. + + """ + if(osys == 'windows'): + m = re.search( + 'torbrowser-install-\d\.\d\.\d_(\w\w)(-\w\w)?\.exe', + file) + if m: + lc = m.group(1) + return 'windows', '32/64', lc + else: + raise ValueError("Invalid bundle format %s" % file) + elif(osys == 'linux'): + m = re.search( + 'tor-browser-linux(\d\d)-\d\.\d\.\d_(\w\w)(-\w\w)?\.tar\.xz', + file) + if m: + arch = m.group(1) + lc = m.group(2) + return 'linux', arch, lc + else: + raise ValueError("Invalid bundle format %s" % file) + elif(osys == 'osx'): + m = re.search( + 'TorBrowser-\d\.\d\.\d-osx(\d\d)_(\w\w)(-\w\w)?\.dmg', + file) + if m: + os = 'osx' + arch = m.group(1) + lc = m.group(2) + return 'osx', arch, lc + else: + raise ValueError("Invalid bundle format %s" % file) + + +def valid_format(file, osys): + """Check for valid bundle format + + Check if the given file has a valid bundle format + (e.g. tor-browser-linux32-3.6.2_es-ES.tar.xz) + + :param: file (string) the name of the file. + :param: osys (string) the OS. + + :return: (boolean) true if the bundle format is valid, false otherwise. + + """ + if(osys == 'windows'): + m = re.search( + 'torbrowser-install-\d\.\d\.\d_\w\w(-\w\w)?\.exe', + file) + elif(osys == 'linux'): + m = re.search( + 'tor-browser-linux\d\d-\d\.\d\.\d_(\w\w)(-\w\w)?\.tar\.xz', + file) + elif(osys == 'osx'): + m = re.search( + 'TorBrowser-\d\.\d\.\d-osx\d\d_(\w\w)(-\w\w)?\.dmg', + file) + if m: + return True + else: + return False + + +def get_file_sha256(file): + """Get the sha256 of a file. + + :param: file (string) the path of the file. + + :return: (string) the sha256 hash. + + """ + # as seen on the internetz + BLOCKSIZE = 65536 + hasher = hashlib.sha256() + with open(file, 'rb') as afile: + buf = afile.read(BLOCKSIZE) + while len(buf) > 0: + hasher.update(buf) + buf = afile.read(BLOCKSIZE) + return hasher.hexdigest() diff --git a/upload/bundles2drive.py b/upload/bundles2drive.py index bac6fea..e6ad04b 100644 --- a/upload/bundles2drive.py +++ b/upload/bundles2drive.py @@ -20,6 +20,7 @@ import logging import argparse import ConfigParser import gettor.core +from gettor.utils import get_bundle_info, get_file_sha256, valid_format # import google drive libs import httplib2 @@ -31,98 +32,6 @@ from oauth2client.client import OAuth2WebServerFlow from oauth2client.client import Credentials -def valid_format(file, osys): - """Check for valid bundle format - - Check if the given file has a valid bundle format - (e.g. tor-browser-linux32-3.6.2_es-ES.tar.xz) - - :param: file (string) the name of the file. - :param: osys (string) the OS. - - :return: (boolean) true if the bundle format is valid, false otherwise. - - """ - if(osys == 'windows'): - m = re.search( - 'torbrowser-install-\d\.\d\.?\d?_\w\w(-\w\w)?\.exe', - file) - elif(osys == 'linux'): - m = re.search( - 'tor-browser-linux\d\d-\d\.\d\.?\d?_(\w\w)(-\w\w)?\.tar\.xz', - file) - elif(osys == 'osx'): - m = re.search( - 'TorBrowser-\d\.\d\.?\d?-osx\d\d_(\w\w)(-\w\w)?\.dmg', - file) - if m: - return True - else: - return False - - -def get_bundle_info(file, osys): - """Get the os, arch and lc from a bundle string. - - :param: file (string) the name of the file. - :param: osys (string) the OS. - - :raise: ValueError if the bundle doesn't have a valid bundle format. - - :return: (list) the os, arch and lc. - - """ - if(osys == 'windows'): - m = re.search( - 'torbrowser-install-\d\.\d\.?\d?_(\w\w)(-\w\w)?\.exe', - file) - if m: - lc = m.group(1) - return 'windows', '32/64', lc - else: - raise ValueError("Invalid bundle format %s" % file) - elif(osys == 'linux'): - m = re.search( - 'tor-browser-linux(\d\d)-\d\.\d\.?\d?_(\w\w)(-\w\w)?\.tar\.xz', - file) - if m: - arch = m.group(1) - lc = m.group(2) - return 'linux', arch, lc - else: - raise ValueError("Invalid bundle format %s" % file) - elif(osys == 'osx'): - m = re.search( - 'TorBrowser-\d\.\d\.?\d?-osx(\d\d)_(\w\w)(-\w\w)?\.dmg', - file) - if m: - os = 'osx' - arch = m.group(1) - lc = m.group(2) - return 'osx', arch, lc - else: - raise ValueError("Invalid bundle format %s" % file) - - -def get_file_sha256(file): - """Get the sha256 of a file. - - :param: file (string) the path of the file. - - :return: (string) the sha256 hash. - - """ - # as seen on the internetz - BLOCKSIZE = 65536 - hasher = hashlib.sha256() - with open(file, 'rb') as afile: - buf = afile.read(BLOCKSIZE) - while len(buf) > 0: - hasher.update(buf) - buf = afile.read(BLOCKSIZE) - return hasher.hexdigest() - - def upload_files(client, basedir): """Upload files to Google Drive. diff --git a/upload/bundles2dropbox.py b/upload/bundles2dropbox.py index bedeec0..9007410 100644 --- a/upload/bundles2dropbox.py +++ b/upload/bundles2dropbox.py @@ -18,97 +18,7 @@ import ConfigParser import dropbox import gettor.core - -def valid_format(file, osys): - """Check for valid bundle format - - Check if the given file has a valid bundle format - (e.g. tor-browser-linux32-3.6.2_es-ES.tar.xz) - - :param: file (string) the name of the file. - :param: osys (string) the OS. - - :return: (boolean) true if the bundle format is valid, false otherwise. - - """ - if(osys == 'windows'): - m = re.search( - 'torbrowser-install-\d\.\d\.\d_\w\w(-\w\w)?\.exe', - file) - elif(osys == 'linux'): - m = re.search( - 'tor-browser-linux\d\d-\d\.\d\.\d_(\w\w)(-\w\w)?\.tar\.xz', - file) - elif(osys == 'osx'): - m = re.search( - 'TorBrowser-\d\.\d\.\d-osx\d\d_(\w\w)(-\w\w)?\.dmg', - file) - if m: - return True - else: - return False - - -def get_bundle_info(file, osys): - """Get the os, arch and lc from a bundle string. - - :param: file (string) the name of the file. - :param: osys (string) the OS. - - :raise: ValueError if the bundle doesn't have a valid bundle format. - - :return: (list) the os, arch and lc. - - """ - if(osys == 'windows'): - m = re.search( - 'torbrowser-install-\d\.\d\.\d_(\w\w)(-\w\w)?\.exe', - file) - if m: - lc = m.group(1) - return 'windows', '32/64', lc - else: - raise ValueError("Invalid bundle format %s" % file) - elif(osys == 'linux'): - m = re.search( - 'tor-browser-linux(\d\d)-\d\.\d\.\d_(\w\w)(-\w\w)?\.tar\.xz', - file) - if m: - arch = m.group(1) - lc = m.group(2) - return 'linux', arch, lc - else: - raise ValueError("Invalid bundle format %s" % file) - elif(osys == 'osx'): - m = re.search( - 'TorBrowser-\d\.\d\.\d-osx(\d\d)_(\w\w)(-\w\w)?\.dmg', - file) - if m: - os = 'osx' - arch = m.group(1) - lc = m.group(2) - return 'osx', arch, lc - else: - raise ValueError("Invalid bundle format %s" % file) - - -def get_file_sha256(file): - """Get the sha256 of a file. - - :param: file (string) the path of the file. - - :return: (string) the sha256 hash. - - """ - # as seen on the internetz - BLOCKSIZE = 65536 - hasher = hashlib.sha256() - with open(file, 'rb') as afile: - buf = afile.read(BLOCKSIZE) - while len(buf) > 0: - hasher.update(buf) - buf = afile.read(BLOCKSIZE) - return hasher.hexdigest() +from gettor.utils import get_bundle_info, get_file_sha256, valid_format def upload_files(basedir, client): diff --git a/upload/bundles2github.py b/upload/bundles2github.py index ee24edb..a5beea5 100644 --- a/upload/bundles2github.py +++ b/upload/bundles2github.py @@ -23,63 +23,9 @@ import argparse from libsaas.services import github import gnupg import gettor.core +from gettor.utils import get_bundle_info, get_file_sha256 -def get_file_sha256(file): - """Get the sha256 of a file. - - :param: file (string) the path of the file. - - :return: (string) the sha256 hash. - - """ - # as seen on the internetz - BLOCKSIZE = 65536 - hasher = hashlib.sha256() - with open(file, 'rb') as afile: - buf = afile.read(BLOCKSIZE) - while len(buf) > 0: - hasher.update(buf) - buf = afile.read(BLOCKSIZE) - return hasher.hexdigest() - - -def get_bundle_info(file, osys): - """Get the os, arch and lc from a bundle string. - - :param: file (string) the name of the file. - :param: osys (string) the OS. - - :raise: ValueError if the bundle doesn't have a valid bundle format. - - :return: (list) the os, arch and lc. - - """ - if(osys == 'windows'): - m = re.search( - 'torbrowser-install-\d\.\d\.\d_(\w\w)(-\w\w)?\.exe', - file) - if m: - lc = m.group(1) - return 'windows', '32/64', lc - elif(osys == 'linux'): - m = re.search( - 'tor-browser-linux(\d\d)-\d\.\d\.\d_(\w\w)(-\w\w)?\.tar\.xz', - file) - if m: - arch = m.group(1) - lc = m.group(2) - return 'linux', arch, lc - elif(osys == 'osx'): - m = re.search( - 'TorBrowser-\d\.\d\.\d-osx(\d\d)_(\w\w)(-\w\w)?\.dmg', - file) - if m: - os = 'osx' - arch = m.group(1) - lc = m.group(2) - return 'osx', arch, lc - if __name__ == '__main__': parser = argparse.ArgumentParser( description='Utility to upload Tor Browser to Github.'
participants (1)
-
ilv@torproject.org