fix: handle bot blocking siteinfo
parent
b165711c4b
commit
4ab98ec12b
|
@ -176,7 +176,12 @@ class InstanceInfo():
|
||||||
|
|
||||||
def get_mastodon_info(self):
|
def get_mastodon_info(self):
|
||||||
site = requests.get(f"https://{self.domain}/api/v1/instance",timeout=self._req_timeout)
|
site = requests.get(f"https://{self.domain}/api/v1/instance",timeout=self._req_timeout)
|
||||||
self.instance_info = site.json()
|
try:
|
||||||
|
self.instance_info = site.json()
|
||||||
|
except Exception as err:
|
||||||
|
if "challenge-error-text" in site.text:
|
||||||
|
raise Exception("Instance is preventing scripted retrieval of their site info.")
|
||||||
|
raise err
|
||||||
self.approval_required = self.instance_info["approval_required"]
|
self.approval_required = self.instance_info["approval_required"]
|
||||||
if self.node_info is None:
|
if self.node_info is None:
|
||||||
raise Exception("Error retrieving nodeinfo")
|
raise Exception("Error retrieving nodeinfo")
|
||||||
|
@ -186,7 +191,12 @@ class InstanceInfo():
|
||||||
|
|
||||||
def get_pleroma_info(self):
|
def get_pleroma_info(self):
|
||||||
site = requests.get(f"https://{self.domain}/api/v1/instance",timeout=self._req_timeout)
|
site = requests.get(f"https://{self.domain}/api/v1/instance",timeout=self._req_timeout)
|
||||||
self.instance_info = site.json()
|
try:
|
||||||
|
self.instance_info = site.json()
|
||||||
|
except Exception as err:
|
||||||
|
if "challenge-error-text" in site.text:
|
||||||
|
raise Exception("Instance is preventing scripted retrieval of their site info.")
|
||||||
|
raise err
|
||||||
self.approval_required = self.instance_info["approval_required"]
|
self.approval_required = self.instance_info["approval_required"]
|
||||||
if self.node_info is None:
|
if self.node_info is None:
|
||||||
raise Exception("Error retrieving nodeinfo")
|
raise Exception("Error retrieving nodeinfo")
|
||||||
|
@ -196,7 +206,12 @@ class InstanceInfo():
|
||||||
|
|
||||||
def get_firefish_info(self):
|
def get_firefish_info(self):
|
||||||
site = requests.get(f"https://{self.domain}/api/v1/instance",timeout=self._req_timeout)
|
site = requests.get(f"https://{self.domain}/api/v1/instance",timeout=self._req_timeout)
|
||||||
self.instance_info = site.json()
|
try:
|
||||||
|
self.instance_info = site.json()
|
||||||
|
except Exception as err:
|
||||||
|
if "challenge-error-text" in site.text:
|
||||||
|
raise Exception("Instance is preventing scripted retrieval of their site info.")
|
||||||
|
raise err
|
||||||
self.approval_required = self.instance_info["approval_required"]
|
self.approval_required = self.instance_info["approval_required"]
|
||||||
if self.node_info is None:
|
if self.node_info is None:
|
||||||
raise Exception("Error retrieving nodeinfo")
|
raise Exception("Error retrieving nodeinfo")
|
||||||
|
@ -213,7 +228,12 @@ class InstanceInfo():
|
||||||
site = requests.get(f"https://{self.domain}/api/v1/instance",timeout=self._req_timeout,allow_redirects=False)
|
site = requests.get(f"https://{self.domain}/api/v1/instance",timeout=self._req_timeout,allow_redirects=False)
|
||||||
if site.status_code != 200:
|
if site.status_code != 200:
|
||||||
raise Exception(f"Unexpected status code retrieved when discovering instance info: {site.status_code}")
|
raise Exception(f"Unexpected status code retrieved when discovering instance info: {site.status_code}")
|
||||||
self.instance_info = site.json()
|
try:
|
||||||
|
self.instance_info = site.json()
|
||||||
|
except Exception as err:
|
||||||
|
if "challenge-error-text" in site.text:
|
||||||
|
raise Exception("Instance is preventing scripted retrieval of their site info.")
|
||||||
|
raise err
|
||||||
self.approval_required = self.instance_info.get("approval_required")
|
self.approval_required = self.instance_info.get("approval_required")
|
||||||
if self.node_info is None:
|
if self.node_info is None:
|
||||||
raise Exception("Error retrieving nodeinfo")
|
raise Exception("Error retrieving nodeinfo")
|
||||||
|
|
|
@ -26,7 +26,7 @@ def ensure_instance_registered(domain, allow_unreachable=False, record_unreachab
|
||||||
instance.poll_failures += 60
|
instance.poll_failures += 60
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
if not allow_unreachable:
|
if not allow_unreachable:
|
||||||
raise e.BadRequest(f"Error encountered while polling domain {domain}. Please check it's running correctly")
|
raise e.BadRequest(str(err))
|
||||||
if instance:
|
if instance:
|
||||||
if (
|
if (
|
||||||
instance.software != instance_info.software or
|
instance.software != instance_info.software or
|
||||||
|
|
Loading…
Reference in New Issue