aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJordan <me@jordan.im>2019-06-16 15:57:26 -0700
committerJordan <me@jordan.im>2019-06-16 15:57:26 -0700
commit3bfc4809d0205565103fe76cc0921c6de4b2a90b (patch)
tree646c1323057202b8415c11afbbf519857ad2eecd
parente77a60ca1863bf6de96ce8f26ea573e888f26e60 (diff)
downloadallium-3bfc4809d0205565103fe76cc0921c6de4b2a90b.tar.gz
allium-3bfc4809d0205565103fe76cc0921c6de4b2a90b.zip
replace requests w/ urllib
-rw-r--r--README.md2
-rw-r--r--tor-metrics/relays.py27
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)