summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoruvok2025-01-19 18:53:06 +0100
committeruvok2025-01-19 18:53:06 +0100
commit9e525d3101d42d6fa0311efa822723e99161a72a (patch)
tree3b45ae33ca1bc3789b03f54dce7a1e47fc4a9a5d
parent57ee5149d219e8ef62780cdfc25eeffc79f31c6f (diff)
Provide errors via FS
-rw-r--r--hello-fusepy.py34
1 files changed, 29 insertions, 5 deletions
diff --git a/hello-fusepy.py b/hello-fusepy.py
index 8da35a9..1fce36f 100644
--- a/hello-fusepy.py
+++ b/hello-fusepy.py
@@ -40,7 +40,10 @@ class StatusProvider:
raise NotImplementedError
def _fallback_not_found(self):
- return [Status("not-found", "User not found\n", "1970-01-01T00:00:00Z")]
+ return [Status("not-found", "User not found", "1970-01-01T00:00:00Z")]
+
+ def _fallback_error(self, error_msg: str):
+ return [Status("error", error_msg, "1970-01-01T00:00:00Z")]
class ActivityPubStatusProvider(StatusProvider):
@@ -54,15 +57,24 @@ class ActivityPubStatusProvider(StatusProvider):
if res.status_code == 404:
return self._fallback_not_found()
- res.raise_for_status()
+ try:
+ res.raise_for_status()
+ except requests.exceptions.RequestException as e:
+ logging.error("Request error: %s", e)
+ return self._fallback_error(getattr(e, "message", str(e)))
+
stats = res.json()
+ status_items = stats.get("orderedItems", None)
+ if not status_items:
+ return self._fallback_error("Malformed content in querying AP outbox.")
+
return [
Status(
s["object"]["id"].split("/")[-1],
s["object"]["content"],
s["object"]["published"],
)
- for s in stats["orderedItems"]
+ for s in status_items
if s["type"] == "Create"
]
@@ -79,9 +91,16 @@ class MastodonStatusProvider(StatusProvider):
res = requests.get(url)
if res.status_code == 404:
return self._fallback_not_found()
- res.raise_for_status()
+ try:
+ res.raise_for_status()
+ except requests.exceptions.RequestException as e:
+ logging.error("Request error: %s", e)
+ return self._fallback_error(getattr(e, "message", str(e)))
+
user = res.json()
- self.userid = user["id"]
+ self.userid = user.get("id")
+ if not self.userid:
+ return self._fallback_error("Malformed content in querying user ID.")
url = api_url_m_status_template.format(
server=self.server, uid=urllib.parse.quote(self.userid)
@@ -89,6 +108,11 @@ class MastodonStatusProvider(StatusProvider):
res = requests.get(url)
if res.status_code == 404:
return self._fallback_not_found()
+ try:
+ res.raise_for_status()
+ except requests.exceptions.RequestException as e:
+ logging.error("Request error: %s", e)
+ return self._fallback_error(getattr(e, "message", str(e)))
statuses = res.json()
return [
Status(