Merge remote-tracking branch 'origin/develop' into notice-routes
authorAlex Gleason <alex@alexgleason.me>
Sun, 26 Dec 2021 01:57:53 +0000 (19:57 -0600)
committerAlex Gleason <alex@alexgleason.me>
Sun, 26 Dec 2021 01:57:53 +0000 (19:57 -0600)
CHANGELOG.md
lib/pleroma/web/router.ex
lib/pleroma/web/static_fe/static_fe_controller.ex
test/pleroma/web/o_status/o_status_controller_test.exs
test/pleroma/web/plugs/frontend_static_plug_test.exs

index 8e97da1896ab9467f0bf9637588821c2c6d1b536..ee9e0456854b4165975101152bc557a7a0a7b16e 100644 (file)
@@ -19,6 +19,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
 ### Fixed
 - Subscription(Bell) Notifications: Don't create from Pipeline Ingested replies
 - Handle Reject for already-accepted Follows properly
+- Display OpenGraph data on alternative notice routes.
 
 ### Removed
 
index 9ce35ad6bd597d68ead6fd7af1bc72b4b139bfbc..e278036a269d3b279fc2f2fb7d7c39357362427b 100644 (file)
@@ -650,6 +650,11 @@ defmodule Pleroma.Web.Router do
     get("/activities/:uuid", OStatus.OStatusController, :activity)
     get("/notice/:id", OStatus.OStatusController, :notice)
 
+    # Notice compatibility routes for other frontends
+    get("/@:nickname/:id", OStatus.OStatusController, :notice)
+    get("/@:nickname/posts/:id", OStatus.OStatusController, :notice)
+    get("/:nickname/status/:id", OStatus.OStatusController, :notice)
+
     # Mastodon compatibility routes
     get("/users/:nickname/statuses/:id", OStatus.OStatusController, :object)
     get("/users/:nickname/statuses/:id/activity", OStatus.OStatusController, :activity)
index 50f0927a36c207863cb4a372856a8b1fa9245b51..827c0a384d4ab3b2ba0920ab54968e5684b367c1 100644 (file)
@@ -167,6 +167,15 @@ defmodule Pleroma.Web.StaticFE.StaticFEController do
   defp assign_id(%{path_info: ["notice", notice_id]} = conn, _opts),
     do: assign(conn, :notice_id, notice_id)
 
+  defp assign_id(%{path_info: ["@" <> _nickname, notice_id]} = conn, _opts),
+    do: assign(conn, :notice_id, notice_id)
+
+  defp assign_id(%{path_info: ["@" <> _nickname, "posts", notice_id]} = conn, _opts),
+    do: assign(conn, :notice_id, notice_id)
+
+  defp assign_id(%{path_info: [_nickname, "status", notice_id]} = conn, _opts),
+    do: assign(conn, :notice_id, notice_id)
+
   defp assign_id(%{path_info: ["users", user_id]} = conn, _opts),
     do: assign(conn, :username_or_id, user_id)
 
index 81d66983763b1f879775d0ab1aaeafaaddc5f68f..b243e16921f1c856ba64eb31e7c7e5cf49fa7b67 100644 (file)
@@ -343,4 +343,54 @@ defmodule Pleroma.Web.OStatus.OStatusControllerTest do
       |> response(200)
     end
   end
+
+  describe "notice compatibility routes" do
+    test "Soapbox FE", %{conn: conn} do
+      user = insert(:user)
+      note_activity = insert(:note_activity, user: user)
+
+      resp =
+        conn
+        |> put_req_header("accept", "text/html")
+        |> get("/@#{user.nickname}/posts/#{note_activity.id}")
+        |> response(200)
+
+      expected =
+        "<meta content=\"#{Pleroma.Web.base_url()}/notice/#{note_activity.id}\" property=\"og:url\">"
+
+      assert resp =~ expected
+    end
+
+    test "Mastodon", %{conn: conn} do
+      user = insert(:user)
+      note_activity = insert(:note_activity, user: user)
+
+      resp =
+        conn
+        |> put_req_header("accept", "text/html")
+        |> get("/@#{user.nickname}/#{note_activity.id}")
+        |> response(200)
+
+      expected =
+        "<meta content=\"#{Pleroma.Web.base_url()}/notice/#{note_activity.id}\" property=\"og:url\">"
+
+      assert resp =~ expected
+    end
+
+    test "Twitter", %{conn: conn} do
+      user = insert(:user)
+      note_activity = insert(:note_activity, user: user)
+
+      resp =
+        conn
+        |> put_req_header("accept", "text/html")
+        |> get("/#{user.nickname}/status/#{note_activity.id}")
+        |> response(200)
+
+      expected =
+        "<meta content=\"#{Pleroma.Web.base_url()}/notice/#{note_activity.id}\" property=\"og:url\">"
+
+      assert resp =~ expected
+    end
+  end
 end
index 52379b86a6d3355cb0076afb47228afc198bde74..4b3925ad2fd57f056e87bad47386338d03ae8f12 100644 (file)
@@ -86,6 +86,8 @@ defmodule Pleroma.Web.Plugs.FrontendStaticPlugTest do
       "objects",
       "activities",
       "notice",
+      "@:nickname",
+      ":nickname",
       "users",
       "tags",
       "mailer",