From ef0c28107054d7f0f386503ec6aa2aefe0f0a0ed Mon Sep 17 00:00:00 2001 From: Josh Klar Date: Thu, 12 Jan 2023 15:41:05 -0800 Subject: [PATCH] integrations: Add documentation for Mastodon via public RSS feeds. This uses the Mastodon logo SVG as pulled from https://blog.joinmastodon.org/logo.svg. --- .../integrations/bot_avatars/mastodon.png | Bin 0 -> 2828 bytes static/images/integrations/logos/mastodon.svg | Bin 0 -> 2483 bytes static/images/integrations/mastodon/001.png | Bin 0 -> 31153 bytes templates/zerver/integrations/mastodon.md | 35 ++++++++++++++++++ zerver/lib/integrations.py | 7 ++++ 5 files changed, 42 insertions(+) create mode 100644 static/images/integrations/bot_avatars/mastodon.png create mode 100644 static/images/integrations/logos/mastodon.svg create mode 100644 static/images/integrations/mastodon/001.png create mode 100644 templates/zerver/integrations/mastodon.md diff --git a/static/images/integrations/bot_avatars/mastodon.png b/static/images/integrations/bot_avatars/mastodon.png new file mode 100644 index 0000000000000000000000000000000000000000..a875d7783cfdd3a8432a403f236bd90f4d14956a GIT binary patch literal 2828 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 literal 0 HcmV?d00001 diff --git a/static/images/integrations/mastodon/001.png b/static/images/integrations/mastodon/001.png new file mode 100644 index 0000000000000000000000000000000000000000..d71ee50efb4eeed92e6aea7df661e4c27cb91193 GIT binary patch literal 31153 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 BD>wiE literal 0 HcmV?d00001 diff --git a/templates/zerver/integrations/mastodon.md b/templates/zerver/integrations/mastodon.md new file mode 100644 index 0000000000..e6ca4be5c3 --- /dev/null +++ b/templates/zerver/integrations/mastodon.md @@ -0,0 +1,35 @@ +Fetch public posts (sometimes called “toots”) of individual accounts or +federated hashtags from Mastodon in Zulip! While Zulip doesn't integrate +directly with ActivityPub or the overall Fediverse, some ActivityPub servers, +like [Mastodon](https://joinmastodon.org/), publish RSS feeds that can +be followed in Zulip using the [Zapier][1] or [RSS][2] integrations. + +!!! warn "" + + Due to the complexities of Mastodon federation, + following a hashtag on one homeserver does not guarantee that all posts in the + entire Fediverse will be included in the feed. Rather, all public posts + that have federated to the instance in question will be included. This + means you may get different results for the same hashtag, depending on + which homeserver you choose to subscribe through. + +1. Find the RSS feed for the account or hashtag you'd like to follow. Usually, + this means appending `.rss` to its Mastodon URL. + + !!! tip "" + + For example, to follow Zulip's Mastodon account at + `https://fosstodon.org/@zulip`, you would use + `https://fosstodon.org/@zulip.rss`. To follow the **#zulip** hashtag at + `https://fosstodon.org/tags/zulip`, you would use + `https://fosstodon.org/tags/zulip.rss`. + +1. Follow the [Zapier][1] integration guide (recommended) or the [plain RSS][2] + integration guide using this feed URL. + +{!congrats.md!} + +![Mastodon posts in Zulip via Zapier](/static/images/integrations/mastodon/001.png) + +[1]: ./zapier +[2]: ./rss diff --git a/zerver/lib/integrations.py b/zerver/lib/integrations.py index 3b88a9adc6..23579e85c5 100644 --- a/zerver/lib/integrations.py +++ b/zerver/lib/integrations.py @@ -562,6 +562,13 @@ INTEGRATIONS: Dict[str, Integration] = { display_name="Jitsi Meet", doc="zerver/integrations/jitsi.md", ), + "mastodon": Integration( + "mastodon", + "mastodon", + ["communication"], + display_name="Mastodon", + doc="zerver/integrations/mastodon.md", + ), "matrix": Integration( "matrix", "matrix", ["communication"], doc="zerver/integrations/matrix.md" ),