Feature/805 server rendered rel me links Closes #805 See merge request pleroma/pleroma!1063tags/v1.1.4
@@ -22,6 +22,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). | |||||
- Mastodon API: `/api/v1/notifications/destroy_multiple` (glitch-soc extension) | - Mastodon API: `/api/v1/notifications/destroy_multiple` (glitch-soc extension) | ||||
- Mastodon API: [Reports](https://docs.joinmastodon.org/api/rest/reports/) | - Mastodon API: [Reports](https://docs.joinmastodon.org/api/rest/reports/) | ||||
- ActivityPub C2S: OAuth endpoints | - ActivityPub C2S: OAuth endpoints | ||||
- Metadata RelMe provider | |||||
### Changed | ### Changed | ||||
- **Breaking:** Configuration: move from Pleroma.Mailer to Pleroma.Emails.Mailer | - **Breaking:** Configuration: move from Pleroma.Mailer to Pleroma.Emails.Mailer | ||||
@@ -1,6 +1,6 @@ | |||||
# Pleroma | # Pleroma | ||||
**Note**: This readme as well as complete documentation is also availible at <https://docs-develop.pleroma.social> | |||||
**Note**: This readme as well as complete documentation is also available at <https://docs-develop.pleroma.social> | |||||
## About Pleroma | ## About Pleroma | ||||
@@ -337,7 +337,9 @@ config :pleroma, :gopher, | |||||
ip: {0, 0, 0, 0}, | ip: {0, 0, 0, 0}, | ||||
port: 9999 | port: 9999 | ||||
config :pleroma, Pleroma.Web.Metadata, providers: [], unfurl_nsfw: false | |||||
config :pleroma, Pleroma.Web.Metadata, | |||||
providers: [Pleroma.Web.Metadata.Providers.RelMe], | |||||
unfurl_nsfw: false | |||||
config :pleroma, :suggestions, | config :pleroma, :suggestions, | ||||
enabled: false, | enabled: false, | ||||
@@ -343,9 +343,10 @@ This config contains two queues: `federator_incoming` and `federator_outgoing`. | |||||
* `max_retries`: The maximum number of times a federation job is retried | * `max_retries`: The maximum number of times a federation job is retried | ||||
## Pleroma.Web.Metadata | ## Pleroma.Web.Metadata | ||||
* `providers`: a list of metadata providers to enable. Providers availible: | |||||
* `providers`: a list of metadata providers to enable. Providers available: | |||||
* Pleroma.Web.Metadata.Providers.OpenGraph | * Pleroma.Web.Metadata.Providers.OpenGraph | ||||
* Pleroma.Web.Metadata.Providers.TwitterCard | * Pleroma.Web.Metadata.Providers.TwitterCard | ||||
* Pleroma.Web.Metadata.Providers.RelMe - add links from user bio with rel=me into the `<header>` as `<link rel=me>` | |||||
* `unfurl_nsfw`: If set to `true` nsfw attachments will be shown in previews | * `unfurl_nsfw`: If set to `true` nsfw attachments will be shown in previews | ||||
## :rich_media | ## :rich_media | ||||
@@ -0,0 +1,13 @@ | |||||
defmodule Pleroma.Web.Metadata.Providers.RelMe do | |||||
alias Pleroma.Web.Metadata.Providers.Provider | |||||
@behaviour Provider | |||||
@impl Provider | |||||
def build_tags(%{user: user}) do | |||||
(Floki.attribute(user.bio, "link[rel~=me]", "href") ++ | |||||
Floki.attribute(user.bio, "a[rel~=me]", "href")) | |||||
|> Enum.map(fn link -> | |||||
{:link, [rel: "me", href: link], []} | |||||
end) | |||||
end | |||||
end |
@@ -0,0 +1,18 @@ | |||||
defmodule Pleroma.Web.Metadata.Providers.RelMeTest do | |||||
use Pleroma.DataCase | |||||
import Pleroma.Factory | |||||
alias Pleroma.Web.Metadata.Providers.RelMe | |||||
test "it renders all links with rel='me' from user bio" do | |||||
bio = | |||||
~s(<a href="https://some-link.com">https://some-link.com</a> <a rel="me" href="https://another-link.com">https://another-link.com</a> | |||||
<link href="http://some.com"> <link rel="me" href="http://some3.com>") | |||||
user = insert(:user, %{bio: bio}) | |||||
assert RelMe.build_tags(%{user: user}) == [ | |||||
{:link, [rel: "me", href: "http://some3.com>"], []}, | |||||
{:link, [rel: "me", href: "https://another-link.com"], []} | |||||
] | |||||
end | |||||
end |