def download_mar_for_update_channel_and_platform(config, platform, temp_dir): mar = os.environ.get('MAR', 'mar') base_url = config.server_url + "update/partial-targets/1/" url = base_url + platform + "/" + config.channel r = requests.get(url) if r.status_code is not 200: print(r.content) raise Exception("download failed") update_info = json.loads(r.content.decode("utf-8")) update_files = update_info['updates'] downloaded_updates = {} for update_file in update_files: build = update_file["build"] filedir = os.path.join(temp_dir, build) mkdir_p(filedir) filepath = filedir + "/complete.mar" url = update_file["update"]["url"] expected_hash = update_file["update"]["hash"] download_file(filepath, url, expected_hash) dir_path = os.path.join(filedir, "complete") mkdir_p(dir_path) extract_mar(filepath, dir_path) downloaded_updates[build] = {"complete": dir_path} langs = handle_language(update_file["languages"], filedir) downloaded_updates[build]["languages"] = langs return downloaded_updates
def handle_language(lang_entries, filedir): mar = os.environ.get('MAR', 'mar') langs = {} for lang, data in lang_entries.items(): lang_dir = os.path.join(filedir, lang) lang_file = os.path.join(lang_dir, "lang.mar") mkdir_p(lang_dir) download_file(lang_file , data["url"], data["hash"]) dir_path = os.path.join(lang_dir, "lang") mkdir_p(dir_path) extract_mar(lang_file, dir_path) langs[lang] = dir_path return langs
def handle_language(lang_entries, filedir): mar = os.environ.get('MAR', 'mar') langs = {} for lang, data in lang_entries.items(): lang_dir = os.path.join(filedir, lang) lang_file = os.path.join(lang_dir, "lang.mar") mkdir_p(lang_dir) download_file(lang_file, data["url"], data["hash"]) dir_path = os.path.join(lang_dir, "lang") mkdir_p(dir_path) extract_mar(lang_file, dir_path) langs[lang] = dir_path return langs