projects
/
akkoma
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'develop' into issue/1975
[akkoma]
/
lib
/
pleroma
/
web
/
metadata
/
twitter_card.ex
diff --git
a/lib/pleroma/web/metadata/twitter_card.ex
b/lib/pleroma/web/metadata/twitter_card.ex
index d672b397f8cf9006935c6f41b73af95f8d0a7ba5..df34b033f6a3fbd527119967f719dd3b69e33f46 100644
(file)
--- a/
lib/pleroma/web/metadata/twitter_card.ex
+++ b/
lib/pleroma/web/metadata/twitter_card.ex
@@
-1,5
+1,6
@@
# Pleroma: A lightweight social networking server
# Pleroma: A lightweight social networking server
-# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
+
+# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.Metadata.Providers.TwitterCard do
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.Metadata.Providers.TwitterCard do
@@
-9,13
+10,10
@@
defmodule Pleroma.Web.Metadata.Providers.TwitterCard do
alias Pleroma.Web.Metadata.Utils
@behaviour Provider
alias Pleroma.Web.Metadata.Utils
@behaviour Provider
+ @media_types ["image", "audio", "video"]
@impl Provider
@impl Provider
- def build_tags(%{
- activity_id: id,
- object: object,
- user: user
- }) do
+ def build_tags(%{activity_id: id, object: object, user: user}) do
attachments = build_attachments(id, object)
scrubbed_content = Utils.scrub_html_and_truncate(object)
# Zero width space
attachments = build_attachments(id, object)
scrubbed_content = Utils.scrub_html_and_truncate(object)
# Zero width space
@@
-27,22
+25,13
@@
defmodule Pleroma.Web.Metadata.Providers.TwitterCard do
end
[
end
[
- {:meta,
- [
- property: "twitter:title",
- content: Utils.user_name_string(user)
- ], []},
- {:meta,
- [
- property: "twitter:description",
- content: content
- ], []}
+ title_tag(user),
+ {:meta, [property: "twitter:description", content: content], []}
] ++
if attachments == [] or Metadata.activity_nsfw?(object) do
[
] ++
if attachments == [] or Metadata.activity_nsfw?(object) do
[
- {:meta,
- [property: "twitter:image", content: Utils.attachment_url(User.avatar_url(user))], []},
- {:meta, [property: "twitter:card", content: "summary_large_image"], []}
+ image_tag(user),
+ {:meta, [property: "twitter:card", content: "summary"], []}
]
else
attachments
]
else
attachments
@@
-51,34
+40,30
@@
defmodule Pleroma.Web.Metadata.Providers.TwitterCard do
@impl Provider
def build_tags(%{user: user}) do
@impl Provider
def build_tags(%{user: user}) do
- with truncated_bio = Utils.scrub_html_and_truncate(user.bio
|| ""
) do
+ with truncated_bio = Utils.scrub_html_and_truncate(user.bio) do
[
[
- {:meta,
- [
- property: "twitter:title",
- content: Utils.user_name_string(user)
- ], []},
+ title_tag(user),
{:meta, [property: "twitter:description", content: truncated_bio], []},
{:meta, [property: "twitter:description", content: truncated_bio], []},
- {:meta, [property: "twitter:image", content: Utils.attachment_url(User.avatar_url(user))],
- []},
+ image_tag(user),
{:meta, [property: "twitter:card", content: "summary"], []}
]
end
end
{:meta, [property: "twitter:card", content: "summary"], []}
]
end
end
- defp build_attachments(id, z = %{data: %{"attachment" => attachments}}) do
- IO.puts(inspect(z))
+ defp title_tag(user) do
+ {:meta, [property: "twitter:title", content: Utils.user_name_string(user)], []}
+ end
+
+ def image_tag(user) do
+ {:meta, [property: "twitter:image", content: Utils.attachment_url(User.avatar_url(user))], []}
+ end
+ defp build_attachments(id, %{data: %{"attachment" => attachments}}) do
Enum.reduce(attachments, [], fn attachment, acc ->
rendered_tags =
Enum.reduce(attachment["url"], [], fn url, acc ->
Enum.reduce(attachments, [], fn attachment, acc ->
rendered_tags =
Enum.reduce(attachment["url"], [], fn url, acc ->
- media_type =
- Enum.find(["image", "audio", "video"], fn media_type ->
- String.starts_with?(url["mediaType"], media_type)
- end)
-
# TODO: Add additional properties to objects when we have the data available.
# TODO: Add additional properties to objects when we have the data available.
- case
media_type
do
+ case
Utils.fetch_media_type(@media_types, url["mediaType"])
do
"audio" ->
[
{:meta, [property: "twitter:card", content: "player"], []},
"audio" ->
[
{:meta, [property: "twitter:card", content: "player"], []},
@@
-99,7
+84,8
@@
defmodule Pleroma.Web.Metadata.Providers.TwitterCard do
| acc
]
| acc
]
- # TODO: Need the true width and height values here or Twitter renders an iFrame with a bad aspect ratio
+ # TODO: Need the true width and height values here or Twitter renders an iFrame with
+ # a bad aspect ratio
"video" ->
[
{:meta, [property: "twitter:card", content: "player"], []},
"video" ->
[
{:meta, [property: "twitter:card", content: "player"], []},
@@
-118,6
+104,8
@@
defmodule Pleroma.Web.Metadata.Providers.TwitterCard do
end)
end
end)
end
+ defp build_attachments(_id, _object), do: []
+
defp player_url(id) do
Pleroma.Web.Router.Helpers.o_status_url(Pleroma.Web.Endpoint, :notice_player, id)
end
defp player_url(id) do
Pleroma.Web.Router.Helpers.o_status_url(Pleroma.Web.Endpoint, :notice_player, id)
end