diff options
author | uvok | 2025-01-19 18:53:06 +0100 |
---|---|---|
committer | uvok | 2025-01-19 18:53:06 +0100 |
commit | 9e525d3101d42d6fa0311efa822723e99161a72a (patch) | |
tree | 3b45ae33ca1bc3789b03f54dce7a1e47fc4a9a5d | |
parent | 57ee5149d219e8ef62780cdfc25eeffc79f31c6f (diff) |
Provide errors via FS
-rw-r--r-- | hello-fusepy.py | 34 |
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( |