Add a CensorshipCircumventionError class that is raised if there's a requests exception connecting to the Tor API

This commit is contained in:
Miguel Jacq 2021-12-20 14:50:09 +11:00
parent 5d8300df10
commit a385e1ffed
No known key found for this signature in database
GPG Key ID: EEA4341C6D97A0B6

View File

@ -22,6 +22,12 @@ import requests
from .meek import MeekNotRunning
class CensorshipCircumventionError(Exception):
"""
There was a problem connecting to the Tor CensorshipCircumvention API.
"""
class CensorshipCircumvention(object):
"""
Connect to the Tor Moat APIs to retrieve censorship
@ -84,6 +90,7 @@ class CensorshipCircumvention(object):
if country:
data = {"country": country}
try:
r = requests.post(
endpoint,
json=data,
@ -109,6 +116,8 @@ class CensorshipCircumvention(object):
return False
return result
except requests.exceptions.RequestException as e:
raise CensorshipCircumventionError(e)
def request_settings(self, country=False, transports=False):
"""
@ -135,6 +144,7 @@ class CensorshipCircumvention(object):
data = {"country": country}
if transports:
data.append({"transports": transports})
try:
r = requests.post(
endpoint,
json=data,
@ -171,6 +181,8 @@ class CensorshipCircumvention(object):
return False
return result
except requests.exceptions.RequestException as e:
raise CensorshipCircumventionError(e)
def request_builtin_bridges(self):
"""
@ -179,6 +191,7 @@ class CensorshipCircumvention(object):
if not self.api_proxies:
return False
endpoint = "https://bridges.torproject.org/moat/circumvention/builtin"
try:
r = requests.post(
endpoint,
headers={"Content-Type": "application/vnd.api+json"},
@ -203,6 +216,8 @@ class CensorshipCircumvention(object):
return False
return result
except requests.exceptions.RequestException as e:
raise CensorshipCircumventionError(e)
def save_settings(self, settings, bridge_settings):
"""