total rebase
[anni] / lib / pleroma / web / metadata / providers / rel_me.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Web.Metadata.Providers.RelMe do
6   alias Pleroma.Web.Metadata.Providers.Provider
7   @behaviour Provider
8
9   @impl Provider
10   def build_tags(%{user: user}) do
11     profile_tree =
12       user.bio
13       |> append_fields_tag(user.fields)
14       |> Floki.parse_fragment!()
15
16     (Floki.attribute(profile_tree, "link[rel~=me]", "href") ++
17        Floki.attribute(profile_tree, "a[rel~=me]", "href"))
18     |> Enum.map(fn link ->
19       {:link, [rel: "me", href: link], []}
20     end)
21   end
22
23   defp append_fields_tag(bio, fields) do
24     fields
25     |> Enum.reduce(bio, fn %{"value" => v}, res -> res <> v end)
26   end
27 end