Esempio n. 1
0
class Fetcher(object):
    def __init__(self):
        self.url = 'http://rubyinstaller.org/downloads/archives'
        self.contents = None
        self.handler = Handler()

    def get_available_versions(self):
        self.__fetch()
        self.__parse()
        return self.handler.versions

    def get_version(self, version, url):
        req = requests.get(url)
        if req.status_code == 200:
            folder = ruby_version_from_string(version)
            filename = normalize_version(version)
            path = os.path.abspath('../../dist/{0}/{1}.7z'.format(folder, filename))
            if not os.path.exists(os.path.dirname(path)):
                os.makedirs(os.path.dirname(path))
            open(path, 'wb').write(req.content)

    def __fetch(self):
        req = requests.get(self.url)
        if req.status_code == 200:
            file = StringIO()
            file.write(req.content)
            file.seek(0)

            self.contents = file
        else:
            raise IOError('Cannot connect to RubyInstaller.')

    def __parse(self):
        parser = self.handler.get_parser()
        parser.parse(self.contents)
Esempio n. 2
0
 def __init__(self):
     self.url = 'http://rubyinstaller.org/downloads/archives'
     self.contents = None
     self.handler = Handler()