X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fweb%2Fmetadata%2Ftwitter_card.ex;h=32b979357b30bd93d5097954bae903efdb3e8a3d;hb=c2e0a0c8d44f8697160d4597db45c5c4afd0d8a6;hp=6424f84b3fc9fb77679ed6c1fc8e1fbe5dd657ca;hpb=2e630bea0da6452d3342a335da3ca642dc61c1b3;p=akkoma diff --git a/lib/pleroma/web/metadata/twitter_card.ex b/lib/pleroma/web/metadata/twitter_card.ex index 6424f84b3..32b979357 100644 --- a/lib/pleroma/web/metadata/twitter_card.ex +++ b/lib/pleroma/web/metadata/twitter_card.ex @@ -1,10 +1,19 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Web.Metadata.Providers.TwitterCard do - def build_tags(%{activity: activity}) do - if Enum.any?(activity.data["object"]["tag"], fn tag -> tag == "nsfw" end) or - activity.data["object"]["attachment"] == [] do + alias Pleroma.Web.Metadata.Providers.Provider + alias Pleroma.Web.Metadata + + @behaviour Provider + + @impl Provider + 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"], []}] @@ -20,11 +29,12 @@ defmodule Pleroma.Web.Metadata.Providers.TwitterCard do end end + @impl Provider def build_tags(_) 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 ->