rich media: add helpers module, use instead of MastodonAPI module
authorWilliam Pitcock <nenolod@dereferenced.org>
Mon, 28 Jan 2019 06:04:54 +0000 (06:04 +0000)
committerWilliam Pitcock <nenolod@dereferenced.org>
Mon, 28 Jan 2019 06:04:54 +0000 (06:04 +0000)
lib/pleroma/web/mastodon_api/mastodon_api.ex
lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
lib/pleroma/web/mastodon_api/views/status_view.ex
lib/pleroma/web/rich_media/helpers.ex [new file with mode: 0644]
lib/pleroma/web/twitter_api/representers/activity_representer.ex
lib/pleroma/web/twitter_api/views/activity_view.ex

index 9d1fb22ea467a2f38ce43e13846e23e40ae244ce..8b137891791fe96927ad78e64b0aad7bded08bdc 100644 (file)
@@ -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
index b5231a326347b49941d5384160b156e541718323..65b61202624a2bb76bb4ac9862074960901516ab 100644 (file)
@@ -7,8 +7,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
   alias Pleroma.{Repo, Object, Activity, User, Notification, Stats}
   alias Pleroma.Web
 
-  alias Pleroma.Web.MastodonAPI
-
   alias Pleroma.Web.MastodonAPI.{
     StatusView,
     AccountView,
@@ -1347,9 +1345,19 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
   end
 
   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
 
   def try_render(conn, target, params)
index ccc95498500249b8a1cc285e862262ce0e75ad78..68df1623e7eb0d87f7a98b797ae46456a73ddb23 100644 (file)
@@ -11,7 +11,6 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do
   alias Pleroma.User
   alias Pleroma.Web.CommonAPI.Utils
   alias Pleroma.Web.MediaProxy
-  alias Pleroma.Web.MastodonAPI
   alias Pleroma.Web.MastodonAPI.AccountView
   alias Pleroma.Web.MastodonAPI.StatusView
 
@@ -141,7 +140,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do
         __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),
diff --git a/lib/pleroma/web/rich_media/helpers.ex b/lib/pleroma/web/rich_media/helpers.ex
new file mode 100644 (file)
index 0000000..e90e351
--- /dev/null
@@ -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
index 364aa7af3906025e18f4c4d09c043b8c1500f696..c4025cbd78c47e3597e1232f97f7d40b4f1f0acb 100644 (file)
@@ -12,7 +12,6 @@ defmodule Pleroma.Web.TwitterAPI.Representers.ActivityRepresenter do
   alias Pleroma.Web.CommonAPI.Utils
   alias Pleroma.Formatter
   alias Pleroma.HTML
-  alias Pleroma.Web.MastodonAPI
   alias Pleroma.Web.MastodonAPI.StatusView
 
   defp user_by_ap_id(user_list, ap_id) do
@@ -188,7 +187,11 @@ defmodule Pleroma.Web.TwitterAPI.Representers.ActivityRepresenter do
 
     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,
index 77e9af34839f06cb10eed614e00be6e9d4fec71b..d0d1221c347111d176107bd78de79b24281d1759 100644 (file)
@@ -10,7 +10,6 @@ defmodule Pleroma.Web.TwitterAPI.ActivityView do
   alias Pleroma.Web.TwitterAPI.ActivityView
   alias Pleroma.Web.TwitterAPI.TwitterAPI
   alias Pleroma.Web.TwitterAPI.Representers.ObjectRepresenter
-  alias Pleroma.Web.MastodonAPI
   alias Pleroma.Web.MastodonAPI.StatusView
   alias Pleroma.Activity
   alias Pleroma.HTML
@@ -276,7 +275,11 @@ defmodule Pleroma.Web.TwitterAPI.ActivityView do
 
     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,