diff options
author | rinpatch <rinpatch@sdf.org> | 2019-01-18 09:32:52 +0300 |
---|---|---|
committer | rinpatch <rinpatch@sdf.org> | 2019-01-18 09:32:52 +0300 |
commit | 1b1af4798a74c4ab357140ef2c5928dd9ebd3221 (patch) | |
tree | 06b31a588dd23fa87949bce1e28178b95e46ef90 /lib/pleroma/web/metadata | |
parent | 64143d8040a5806ccf9707644a7e7eacc91d74c6 (diff) | |
download | pleroma-1b1af4798a74c4ab357140ef2c5928dd9ebd3221.tar.gz |
Use object instead of activity for metadata
Diffstat (limited to 'lib/pleroma/web/metadata')
-rw-r--r-- | lib/pleroma/web/metadata/opengraph.ex | 17 | ||||
-rw-r--r-- | lib/pleroma/web/metadata/provider.ex | 1 | ||||
-rw-r--r-- | lib/pleroma/web/metadata/twitter_card.ex | 9 |
3 files changed, 15 insertions, 12 deletions
diff --git a/lib/pleroma/web/metadata/opengraph.ex b/lib/pleroma/web/metadata/opengraph.ex index cbd0b7d1b..43303859c 100644 --- a/lib/pleroma/web/metadata/opengraph.ex +++ b/lib/pleroma/web/metadata/opengraph.ex @@ -1,6 +1,7 @@ # Pleroma: A lightweight social networking server # Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> # SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Web.Metadata.Providers.OpenGraph do alias Pleroma.Web.Metadata.Providers.Provider alias Pleroma.Web.Metadata @@ -11,11 +12,11 @@ defmodule Pleroma.Web.Metadata.Providers.OpenGraph do @impl Provider def build_tags(%{ - activity: %{data: %{"object" => %{"id" => object_id}}} = activity, + object: object, user: user }) do - attachments = build_attachments(activity) - scrubbed_content = scrub_html_and_truncate(activity) + attachments = build_attachments(object) + scrubbed_content = scrub_html_and_truncate(object) # Zero width space content = if scrubbed_content != "" and scrubbed_content != "\u200B" do @@ -36,7 +37,7 @@ defmodule Pleroma.Web.Metadata.Providers.OpenGraph do property: "og:title", content: "#{user.name}" <> content ], []}, - {:meta, [property: "og:url", content: object_id], []}, + {:meta, [property: "og:url", content: object.data["id"]], []}, {:meta, [ property: "og:description", @@ -44,7 +45,7 @@ defmodule Pleroma.Web.Metadata.Providers.OpenGraph do ], []}, {:meta, [property: "og:type", content: "website"], []} ] ++ - if attachments == [] or Metadata.activity_nsfw?(activity) do + if attachments == [] or Metadata.activity_nsfw?(object) do [ {:meta, [property: "og:image", content: attachment_url(User.avatar_url(user))], []}, {:meta, [property: "og:image:width", content: 150], []}, @@ -74,7 +75,7 @@ defmodule Pleroma.Web.Metadata.Providers.OpenGraph do end end - defp build_attachments(%{data: %{"object" => %{"attachment" => attachments}}} = _activity) do + defp build_attachments(%{data: %{"attachment" => attachments}}) do Enum.reduce(attachments, [], fn attachment, acc -> rendered_tags = Enum.reduce(attachment["url"], [], fn url, acc -> @@ -117,12 +118,12 @@ defmodule Pleroma.Web.Metadata.Providers.OpenGraph do end) end - defp scrub_html_and_truncate(%{data: %{"object" => %{"content" => content}}} = activity) do + defp scrub_html_and_truncate(%{data: %{"content" => content}} = object) do content # html content comes from DB already encoded, decode first and scrub after |> HtmlEntities.decode() |> String.replace(~r/<br\s?\/?>/, " ") - |> HTML.get_cached_stripped_html_for_object(activity, __MODULE__) + |> HTML.get_cached_stripped_html_for_object(object, __MODULE__) |> Formatter.truncate() end diff --git a/lib/pleroma/web/metadata/provider.ex b/lib/pleroma/web/metadata/provider.ex index a39008bcc..197fb2a77 100644 --- a/lib/pleroma/web/metadata/provider.ex +++ b/lib/pleroma/web/metadata/provider.ex @@ -1,6 +1,7 @@ # Pleroma: A lightweight social networking server # Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> # SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Web.Metadata.Providers.Provider do @callback build_tags(map()) :: list() end diff --git a/lib/pleroma/web/metadata/twitter_card.ex b/lib/pleroma/web/metadata/twitter_card.ex index 9a1245e59..32b979357 100644 --- a/lib/pleroma/web/metadata/twitter_card.ex +++ b/lib/pleroma/web/metadata/twitter_card.ex @@ -1,6 +1,7 @@ # Pleroma: A lightweight social networking server # Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> # SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Web.Metadata.Providers.TwitterCard do alias Pleroma.Web.Metadata.Providers.Provider alias Pleroma.Web.Metadata @@ -8,11 +9,11 @@ defmodule Pleroma.Web.Metadata.Providers.TwitterCard do @behaviour Provider @impl Provider - def build_tags(%{activity: activity}) do - if Metadata.activity_nsfw?(activity) or activity.data["object"]["attachment"] == [] do + def build_tags(%{object: object}) do + if Metadata.activity_nsfw?(object) or object.data["attachment"] == [] do build_tags(nil) else - case find_first_acceptable_media_type(activity) do + case find_first_acceptable_media_type(object) do "image" -> [{:meta, [property: "twitter:card", content: "summary_large_image"], []}] @@ -33,7 +34,7 @@ defmodule Pleroma.Web.Metadata.Providers.TwitterCard do [{:meta, [property: "twitter:card", content: "summary"], []}] end - def find_first_acceptable_media_type(%{data: %{"object" => %{"attachment" => attachment}}}) do + def find_first_acceptable_media_type(%{data: %{"attachment" => attachment}}) do Enum.find_value(attachment, fn attachment -> Enum.find_value(attachment["url"], fn url -> Enum.find(["image", "audio", "video"], fn media_type -> |