1#!/usr/bin/env python3 2# Copyright 2020 The Chromium Authors. All rights reserved. 3# Use of this source code is governed by a BSD-style license that can be 4# found in the LICENSE file. 5""" 6This file contains curlish(), a CURL-ish method that downloads things without 7needing CURL installed. 8""" 9 10import os 11 12try: 13 from urllib2 import HTTPError, URLError, urlopen 14except ImportError: # For Py3 compatibility 15 from urllib.error import HTTPError, URLError 16 from urllib.request import urlopen 17 18 19def curlish(download_url, output_path): 20 """Basically curl, but doesn't require the developer to have curl installed 21 locally. Returns True if succeeded at downloading file.""" 22 23 if not output_path or not download_url: 24 print('need both output path and download URL to download, exiting.') 25 return False 26 27 print('downloading from "{}" to "{}"'.format(download_url, output_path)) 28 script_contents = '' 29 try: 30 response = urlopen(download_url) 31 script_contents = response.read() 32 except HTTPError as e: 33 print(e.code) 34 print(e.read()) 35 return False 36 except URLError as e: 37 print('Download failed. Reason: ', e.reason) 38 return False 39 40 directory = os.path.dirname(output_path) 41 if not os.path.exists(directory): 42 os.makedirs(directory) 43 44 script_file = open(output_path, 'w') 45 script_file.write(script_contents) 46 script_file.close() 47 48 return True 49