aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorWilliam Pitcock <nenolod@dereferenced.org>2019-01-26 14:56:14 +0000
committerWilliam Pitcock <nenolod@dereferenced.org>2019-01-26 15:13:27 +0000
commit86037e9c3980fbab94935844c09bdd2f002140aa (patch)
tree77fb343b2af6594261ca419a398871595c9c4afa /lib
parentbe9abb2cc5fc219ca49ac6b32afed3eac323bf7a (diff)
downloadpleroma-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.ex15
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