From: Alexander Cecile Date: Tue, 25 Aug 2020 22:28:21 +0000 (-0400) Subject: Implement error handling and improve documentation in get_file_by_url X-Git-Url: http://git.99rst.org/?a=commitdiff_plain;h=083db6955e03e516b00f78b866c53fcfe937367e;p=stevenblack-hosts.git Implement error handling and improve documentation in get_file_by_url --- diff --git a/updateHostsFile.py b/updateHostsFile.py index cee883237..2a4bce297 100644 --- a/updateHostsFile.py +++ b/updateHostsFile.py @@ -1474,19 +1474,37 @@ def get_file_by_url(url, params=None, **kwargs): Parameters ---------- - url - params - kwargs + url : str or bytes + URL for the new Request object. + params : + Dictionary, list of tuples or bytes to send in the query string for the Request. + kwargs : + Optional arguments that request takes. Returns ------- - content: str + url_data : str or None + The data retrieved at that URL from the file. Returns None if the + attempted retrieval is unsuccessful. """ - req = requests.get(url=url, params=params, **kwargs) + try: + req = requests.get(url=url, params=params, **kwargs) + except requests.exceptions.RequestException: + print("Error retrieving data from {}".format(url)) + return None + req.encoding = req.apparent_encoding - res_text = "\n".join([domain_to_idna(line) for line in req.text.split("\n")]) - return res_text + + try: + res_text = req.text + except UnicodeDecodeError: + print("Decoding error when retrieving data from {}".format(url)) + return None + + res = "\n".join([domain_to_idna(line) for line in res_text.split("\n")]) + + return res def write_data(f, data):