From 86037e9c3980fbab94935844c09bdd2f002140aa Mon Sep 17 00:00:00 2001 From: William Pitcock Date: Sat, 26 Jan 2019 14:56:14 +0000 Subject: [PATCH] mastodon api: use HTML.extract_first_external_url() --- .../web/mastodon_api/mastodon_api_controller.ex | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex index 91cc76fe7..ae744da60 100644 --- a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex @@ -6,6 +6,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do use Pleroma.Web, :controller alias Pleroma.{Repo, Object, Activity, User, Notification, Stats} alias Pleroma.Web + alias Pleroma.HTML alias Pleroma.Web.MastodonAPI.{ StatusView, @@ -1322,22 +1323,18 @@ def suggestions(%{assigns: %{user: user}} = conn, _) do end end - defp status_first_external_url(content) do - content - |> Floki.filter_out("a.mention") - |> Floki.attribute("a", "href") - |> Enum.at(0) - end - def get_status_card(status_id) do with %Activity{} = activity <- Repo.get(Activity, status_id), true <- ActivityPub.is_public?(activity), - page_url <- status_first_external_url(activity.data["object"]["content"]), + %Object{} = object <- Object.normalize(activity.data["object"]), + page_url <- HTML.extract_first_external_url(object, object.data["content"]), {:ok, rich_media} <- Pleroma.Web.RichMedia.Parser.parse(page_url) do + site_name = rich_media[:site_name] || URI.parse(page_url).host + rich_media |> Map.take([:image, :title, :url, :description]) |> Map.put(:type, "link") - |> Map.put(:provider_name, rich_media.site_name) + |> Map.put(:provider_name, site_name) else _ -> %{} end