encode data properly
authorstwf <steven.fuchs@dockyard.com>
Tue, 2 Jun 2020 14:18:06 +0000 (10:18 -0400)
committerstwf <steven.fuchs@dockyard.com>
Tue, 2 Jun 2020 14:18:06 +0000 (10:18 -0400)
lib/pleroma/web/fallback_redirect_controller.ex
lib/pleroma/web/preload.ex
lib/pleroma/web/preload/timelines.ex
test/web/fallback_test.exs
test/web/preload/timeline_test.exs
test/web/streamer/streamer_test.exs

index 932fb8d7ef647220261c4525cde604c220a25674..431ad5485b2371fbf267692ab12dd54c90fc7198 100644 (file)
@@ -4,7 +4,9 @@
 
 defmodule Fallback.RedirectController do
   use Pleroma.Web, :controller
+
   require Logger
+
   alias Pleroma.User
   alias Pleroma.Web.Metadata
   alias Pleroma.Web.Preload
@@ -38,8 +40,7 @@ defmodule Fallback.RedirectController do
 
     response =
       index_content
-      |> String.replace("<!--server-generated-meta-->", tags)
-      |> String.replace("<!--server-generated-initial-data-->", preloads)
+      |> String.replace("<!--server-generated-meta-->", tags <> preloads)
 
     conn
     |> put_resp_content_type("text/html")
@@ -56,7 +57,7 @@ defmodule Fallback.RedirectController do
 
     response =
       index_content
-      |> String.replace("<!--server-generated-initial-data-->", preloads)
+      |> String.replace("<!--server-generated-meta-->", preloads)
 
     conn
     |> put_resp_content_type("text/html")
index c2211c59742a7926259750106813b22ddf614f4a..f13932b890a0fa025954f8ba1341ce8cd935bbf5 100644 (file)
@@ -22,6 +22,8 @@ defmodule Pleroma.Web.Preload do
   end
 
   def build_script_tag(content) do
+    content = Base.encode64(content)
+
     HTML.Tag.content_tag(:script, HTML.raw(content),
       id: "initial-results",
       type: "application/json"
index dbd7db407ba0e52ae1a117881397e3d28a8adc11..2bb57567bbc7e92dbbd801a0cf51b2d6795131ea 100644 (file)
@@ -11,32 +11,29 @@ defmodule Pleroma.Web.Preload.Providers.Timelines do
   @public_url :"/api/v1/timelines/public"
 
   @impl Provider
-  def generate_terms(_params) do
-    build_public_tag(%{})
+  def generate_terms(params) do
+    build_public_tag(%{}, params)
   end
 
-  def build_public_tag(acc) do
+  def build_public_tag(acc, params) do
     if Pleroma.Config.get([:restrict_unauthenticated, :timelines, :federated], true) do
       acc
     else
-      Map.put(acc, @public_url, public_timeline(nil))
+      Map.put(acc, @public_url, public_timeline(params))
     end
   end
 
-  defp public_timeline(user) do
-    activities =
-      create_timeline_params(user)
-      |> Map.put("local_only", false)
-      |> ActivityPub.fetch_public_activities()
+  defp public_timeline(%{"path" => ["main", "all"]}), do: get_public_timeline(false)
 
-    StatusView.render("index.json", activities: activities, for: user, as: :activity)
-  end
+  defp public_timeline(_params), do: get_public_timeline(true)
+
+  defp get_public_timeline(local_only) do
+    activities =
+      ActivityPub.fetch_public_activities(%{
+        "type" => ["Create"],
+        "local_only" => local_only
+      })
 
-  defp create_timeline_params(user) do
-    %{}
-    |> Map.put("type", ["Create", "Announce"])
-    |> Map.put("blocking_user", user)
-    |> Map.put("muting_user", user)
-    |> Map.put("user", user)
+    StatusView.render("index.json", activities: activities, for: nil, as: :activity)
   end
 end
index 3b7a51d5e2757a6b0ad8e76f546ceaf08dbbc8a8..a658658603fcb0efce803a0bf52b92f5a5285d31 100644 (file)
@@ -11,7 +11,12 @@ defmodule Pleroma.Web.FallbackTest do
       response = get(conn, "/registration/foo")
 
       assert html_response(response, 200) =~ "<!--server-generated-meta-->"
-      assert html_response(response, 200) =~ "<!--server-generated-initial-data-->"
+    end
+
+    test "GET /*path", %{conn: conn} do
+      assert conn
+             |> get("/foo")
+             |> html_response(200) =~ "<!--server-generated-meta-->"
     end
   end
 
@@ -21,20 +26,35 @@ defmodule Pleroma.Web.FallbackTest do
       user_missing = get(conn, "/foo")
       user_present = get(conn, "/#{user.nickname}")
 
-      assert html_response(user_missing, 200) =~ "<!--server-generated-meta-->"
+      assert(html_response(user_missing, 200) =~ "<!--server-generated-meta-->")
       refute html_response(user_present, 200) =~ "<!--server-generated-meta-->"
+      assert html_response(user_present, 200) =~ "initial-results"
+    end
 
-      assert html_response(user_missing, 200) =~ "<!--server-generated-initial-data-->"
-      refute html_response(user_present, 200) =~ "<!--server-generated-initial-data-->"
+    test "GET /*path", %{conn: conn} do
+      assert conn
+             |> get("/foo")
+             |> html_response(200) =~ "<!--server-generated-meta-->"
+
+      refute conn
+             |> get("/foo/bar")
+             |> html_response(200) =~ "<!--server-generated-meta-->"
     end
   end
 
-  describe "preloaded data only attached to" do
-    test "GET /*path", %{conn: conn} do
+  describe "preloaded data is attached to" do
+    test "GET /main/public", %{conn: conn} do
       public_page = get(conn, "/main/public")
 
-      assert html_response(public_page, 200) =~ "<!--server-generated-meta-->"
-      refute html_response(public_page, 200) =~ "<!--server-generated-initial-data-->"
+      refute html_response(public_page, 200) =~ "<!--server-generated-meta-->"
+      assert html_response(public_page, 200) =~ "initial-results"
+    end
+
+    test "GET /main/all", %{conn: conn} do
+      public_page = get(conn, "/main/all")
+
+      refute html_response(public_page, 200) =~ "<!--server-generated-meta-->"
+      assert html_response(public_page, 200) =~ "initial-results"
     end
   end
 
@@ -48,16 +68,6 @@ defmodule Pleroma.Web.FallbackTest do
     assert redirected_to(get(conn, "/pleroma/admin")) =~ "/pleroma/admin/"
   end
 
-  test "GET /*path", %{conn: conn} do
-    assert conn
-           |> get("/foo")
-           |> html_response(200) =~ "<!--server-generated-meta-->"
-
-    assert conn
-           |> get("/foo/bar")
-           |> html_response(200) =~ "<!--server-generated-meta-->"
-  end
-
   test "OPTIONS /*path", %{conn: conn} do
     assert conn
            |> options("/foo")
index 00b10d0abbab3f10db5815d00ef518a774f08a9f..da6a3aded001e05b6592c4808bfddb9b1de9c23b 100644 (file)
@@ -52,9 +52,9 @@ defmodule Pleroma.Web.Preload.Providers.TimelineTest do
     end
 
     test "returns public items", %{user: user} do
-      {:ok, _} = CommonAPI.post(user, %{"status" => "it's post 1!"})
-      {:ok, _} = CommonAPI.post(user, %{"status" => "it's post 2!"})
-      {:ok, _} = CommonAPI.post(user, %{"status" => "it's post 3!"})
+      {:ok, _} = CommonAPI.post(user, %{status: "it's post 1!"})
+      {:ok, _} = CommonAPI.post(user, %{status: "it's post 2!"})
+      {:ok, _} = CommonAPI.post(user, %{status: "it's post 3!"})
 
       assert Timelines.generate_terms(%{})
              |> Map.fetch!(@public_url)
@@ -62,9 +62,9 @@ defmodule Pleroma.Web.Preload.Providers.TimelineTest do
     end
 
     test "does not return non-public items", %{user: user} do
-      {:ok, _} = CommonAPI.post(user, %{"status" => "it's post 1!", "visibility" => "unlisted"})
-      {:ok, _} = CommonAPI.post(user, %{"status" => "it's post 2!", "visibility" => "direct"})
-      {:ok, _} = CommonAPI.post(user, %{"status" => "it's post 3!"})
+      {:ok, _} = CommonAPI.post(user, %{status: "it's post 1!", visibility: "unlisted"})
+      {:ok, _} = CommonAPI.post(user, %{status: "it's post 2!", visibility: "direct"})
+      {:ok, _} = CommonAPI.post(user, %{status: "it's post 3!"})
 
       assert Timelines.generate_terms(%{})
              |> Map.fetch!(@public_url)
index 4cf640ce8a4b3f2cc050deccdefc576e7f5f636e..3f012259a0a07ad1a5c514c09f70eef05d723fa9 100644 (file)
@@ -124,7 +124,7 @@ defmodule Pleroma.Web.StreamerTest do
         |> Map.put("object", activity.data["object"])
         |> Map.put("actor", user.ap_id)
 
-      {:ok, %Pleroma.Activity{data: data, local: false} = announce} =
+      {:ok, %Pleroma.Activity{data: _data, local: false} = announce} =
         Pleroma.Web.ActivityPub.Transmogrifier.handle_incoming(data)
 
       assert_receive {:render_with_user, Pleroma.Web.StreamerView, "update.json", ^announce}