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)
def __init__(self): self.url = 'http://rubyinstaller.org/downloads/archives' self.contents = None self.handler = Handler()