diff options
| -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(  | 
