forked from AkkomaGang/akkoma
rich media: add helpers module, use instead of MastodonAPI module
This commit is contained in:
parent
24a103a1fe
commit
8e42251e06
6 changed files with 41 additions and 29 deletions
|
@ -1,20 +1 @@
|
||||||
# Pleroma: A lightweight social networking server
|
|
||||||
# Copyright _ 2017-2019 Pleroma Authors <https://pleroma.social/>
|
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
|
||||||
|
|
||||||
defmodule Pleroma.Web.MastodonAPI do
|
|
||||||
alias Pleroma.{Repo, Activity, Object, HTML}
|
|
||||||
alias Pleroma.Web.ActivityPub.ActivityPub
|
|
||||||
|
|
||||||
def get_status_card(status_id) do
|
|
||||||
with %Activity{} = activity <- Repo.get(Activity, status_id),
|
|
||||||
true <- ActivityPub.is_public?(activity),
|
|
||||||
%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
|
|
||||||
%{page_url: page_url, rich_media: rich_media}
|
|
||||||
else
|
|
||||||
_ -> %{}
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
|
@ -7,8 +7,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
|
||||||
alias Pleroma.{Repo, Object, Activity, User, Notification, Stats}
|
alias Pleroma.{Repo, Object, Activity, User, Notification, Stats}
|
||||||
alias Pleroma.Web
|
alias Pleroma.Web
|
||||||
|
|
||||||
alias Pleroma.Web.MastodonAPI
|
|
||||||
|
|
||||||
alias Pleroma.Web.MastodonAPI.{
|
alias Pleroma.Web.MastodonAPI.{
|
||||||
StatusView,
|
StatusView,
|
||||||
AccountView,
|
AccountView,
|
||||||
|
@ -1347,9 +1345,19 @@ def suggestions(%{assigns: %{user: user}} = conn, _) do
|
||||||
end
|
end
|
||||||
|
|
||||||
def status_card(conn, %{"id" => status_id}) do
|
def status_card(conn, %{"id" => status_id}) do
|
||||||
data = StatusView.render("card.json", MastodonAPI.get_status_card(status_id))
|
with %Activity{} = activity <- Repo.get(Activity, status_id),
|
||||||
|
true <- ActivityPub.is_public?(activity) do
|
||||||
|
data =
|
||||||
|
StatusView.render(
|
||||||
|
"card.json",
|
||||||
|
Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity)
|
||||||
|
)
|
||||||
|
|
||||||
json(conn, data)
|
json(conn, data)
|
||||||
|
else
|
||||||
|
_e ->
|
||||||
|
%{}
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def try_render(conn, target, params)
|
def try_render(conn, target, params)
|
||||||
|
|
|
@ -11,7 +11,6 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do
|
||||||
alias Pleroma.User
|
alias Pleroma.User
|
||||||
alias Pleroma.Web.CommonAPI.Utils
|
alias Pleroma.Web.CommonAPI.Utils
|
||||||
alias Pleroma.Web.MediaProxy
|
alias Pleroma.Web.MediaProxy
|
||||||
alias Pleroma.Web.MastodonAPI
|
|
||||||
alias Pleroma.Web.MastodonAPI.AccountView
|
alias Pleroma.Web.MastodonAPI.AccountView
|
||||||
alias Pleroma.Web.MastodonAPI.StatusView
|
alias Pleroma.Web.MastodonAPI.StatusView
|
||||||
|
|
||||||
|
@ -141,7 +140,7 @@ def render("status.json", %{activity: %{data: %{"object" => object}} = activity}
|
||||||
__MODULE__
|
__MODULE__
|
||||||
)
|
)
|
||||||
|
|
||||||
card = render("card.json", MastodonAPI.get_status_card(activity.id))
|
card = render("card.json", Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity))
|
||||||
|
|
||||||
%{
|
%{
|
||||||
id: to_string(activity.id),
|
id: to_string(activity.id),
|
||||||
|
|
18
lib/pleroma/web/rich_media/helpers.ex
Normal file
18
lib/pleroma/web/rich_media/helpers.ex
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# Pleroma: A lightweight social networking server
|
||||||
|
# Copyright _ 2017-2019 Pleroma Authors <https://pleroma.social/>
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
|
defmodule Pleroma.Web.RichMedia.Helpers do
|
||||||
|
alias Pleroma.{Repo, Activity, Object, HTML}
|
||||||
|
alias Pleroma.Web.RichMedia.Parser
|
||||||
|
|
||||||
|
def fetch_data_for_activity(%Activity{} = activity) do
|
||||||
|
with %Object{} = object <- Object.normalize(activity.data["object"]),
|
||||||
|
page_url <- HTML.extract_first_external_url(object, object.data["content"]),
|
||||||
|
{:ok, rich_media} <- Parser.parse(page_url) do
|
||||||
|
%{page_url: page_url, rich_media: rich_media}
|
||||||
|
else
|
||||||
|
_ -> %{}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -12,7 +12,6 @@ defmodule Pleroma.Web.TwitterAPI.Representers.ActivityRepresenter do
|
||||||
alias Pleroma.Web.CommonAPI.Utils
|
alias Pleroma.Web.CommonAPI.Utils
|
||||||
alias Pleroma.Formatter
|
alias Pleroma.Formatter
|
||||||
alias Pleroma.HTML
|
alias Pleroma.HTML
|
||||||
alias Pleroma.Web.MastodonAPI
|
|
||||||
alias Pleroma.Web.MastodonAPI.StatusView
|
alias Pleroma.Web.MastodonAPI.StatusView
|
||||||
|
|
||||||
defp user_by_ap_id(user_list, ap_id) do
|
defp user_by_ap_id(user_list, ap_id) do
|
||||||
|
@ -188,7 +187,11 @@ def to_map(
|
||||||
|
|
||||||
summary = HTML.strip_tags(object["summary"])
|
summary = HTML.strip_tags(object["summary"])
|
||||||
|
|
||||||
card = StatusView.render("card.json", MastodonAPI.get_status_card(activity.id))
|
card =
|
||||||
|
StatusView.render(
|
||||||
|
"card.json",
|
||||||
|
Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity)
|
||||||
|
)
|
||||||
|
|
||||||
%{
|
%{
|
||||||
"id" => activity.id,
|
"id" => activity.id,
|
||||||
|
|
|
@ -10,7 +10,6 @@ defmodule Pleroma.Web.TwitterAPI.ActivityView do
|
||||||
alias Pleroma.Web.TwitterAPI.ActivityView
|
alias Pleroma.Web.TwitterAPI.ActivityView
|
||||||
alias Pleroma.Web.TwitterAPI.TwitterAPI
|
alias Pleroma.Web.TwitterAPI.TwitterAPI
|
||||||
alias Pleroma.Web.TwitterAPI.Representers.ObjectRepresenter
|
alias Pleroma.Web.TwitterAPI.Representers.ObjectRepresenter
|
||||||
alias Pleroma.Web.MastodonAPI
|
|
||||||
alias Pleroma.Web.MastodonAPI.StatusView
|
alias Pleroma.Web.MastodonAPI.StatusView
|
||||||
alias Pleroma.Activity
|
alias Pleroma.Activity
|
||||||
alias Pleroma.HTML
|
alias Pleroma.HTML
|
||||||
|
@ -276,7 +275,11 @@ def render(
|
||||||
|
|
||||||
summary = HTML.strip_tags(summary)
|
summary = HTML.strip_tags(summary)
|
||||||
|
|
||||||
card = StatusView.render("card.json", MastodonAPI.get_status_card(activity.id))
|
card =
|
||||||
|
StatusView.render(
|
||||||
|
"card.json",
|
||||||
|
Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity)
|
||||||
|
)
|
||||||
|
|
||||||
%{
|
%{
|
||||||
"id" => activity.id,
|
"id" => activity.id,
|
||||||
|
|
Loading…
Reference in a new issue