aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/web/metadata
diff options
context:
space:
mode:
authorrinpatch <rinpatch@sdf.org>2019-01-18 09:32:52 +0300
committerrinpatch <rinpatch@sdf.org>2019-01-18 09:32:52 +0300
commit1b1af4798a74c4ab357140ef2c5928dd9ebd3221 (patch)
tree06b31a588dd23fa87949bce1e28178b95e46ef90 /lib/pleroma/web/metadata
parent64143d8040a5806ccf9707644a7e7eacc91d74c6 (diff)
downloadpleroma-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.ex17
-rw-r--r--lib/pleroma/web/metadata/provider.ex1
-rw-r--r--lib/pleroma/web/metadata/twitter_card.ex9
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 ->