From 3bfc4809d0205565103fe76cc0921c6de4b2a90b Mon Sep 17 00:00:00 2001 From: Jordan Date: Sun, 16 Jun 2019 15:57:26 -0700 Subject: replace requests w/ urllib --- README.md | 2 +- tor-metrics/relays.py | 27 +++++++++++++++++---------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index a691878..e8c7bf7 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Network-oriented Tor metrics and statistics made with love (not javascript). * No javascript * Static HTML/CSS generation at runtime -* Minimal library dependence (jinja2, requests) +* Minimal library dependence (jinja2) * Sort by ASN, country, and platform * Respectful Onionoo queries (If-Modified-Since) diff --git a/tor-metrics/relays.py b/tor-metrics/relays.py index 425e671..31f4bd9 100644 --- a/tor-metrics/relays.py +++ b/tor-metrics/relays.py @@ -1,4 +1,5 @@ -import os, json, requests, time +import os, json, time, urllib.request +from urllib.error import URLError, HTTPError import config abs_path = os.path.dirname(os.path.abspath(__file__)) @@ -16,21 +17,27 @@ class Relays: with open(self.ts_file, 'r') as ts_file: prev_timestamp = ts_file.read() try: - api_response = requests.get(self.url, + conn = urllib.request.Request(self.url, headers={"If-Modified-Since": prev_timestamp}) - except requests.exceptions.RequestException: + api_response = urllib.request.urlopen(conn).read() + self.statuscode = urllib.request.urlopen(conn).getcode() + except HTTPError as e: + self.statuscode = e.code + return(None) + except URLError as e: return(None) else: try: - api_response = requests.get(self.url) - except requests.exceptions.RequestException: + conn = urllib.request.Request(self.url) + api_response = urllib.request.urlopen(conn).read() + self.statuscode = urllib.request.urlopen(conn).getcode() + except HTTPError as e: + self.statuscode = e.code + return(None) + except URLError as e: return(None) - self.statuscode = api_response.status_code - if self.statuscode != 200: - return(None) - - json_data = api_response.json() + json_data = json.loads(api_response.decode('utf-8')) sorted_json = self.sort_by_bandwidth(json_data) trimmed_json = self.trim_platform(sorted_json) return(trimmed_json) -- cgit v1.2.3-54-g00ecf