diff options
author | William Pitcock <nenolod@dereferenced.org> | 2019-01-26 14:56:14 +0000 |
---|---|---|
committer | William Pitcock <nenolod@dereferenced.org> | 2019-01-26 15:13:27 +0000 |
commit | 86037e9c3980fbab94935844c09bdd2f002140aa (patch) | |
tree | 77fb343b2af6594261ca419a398871595c9c4afa /lib | |
parent | be9abb2cc5fc219ca49ac6b32afed3eac323bf7a (diff) | |
download | pleroma-86037e9c3980fbab94935844c09bdd2f002140aa.tar.gz |
mastodon api: use HTML.extract_first_external_url()
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/web/mastodon_api/mastodon_api_controller.ex | 15 |
1 files 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 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController 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 |