add status_net/config
authorstwf <steven.fuchs@dockyard.com>
Wed, 3 Jun 2020 17:40:48 +0000 (13:40 -0400)
committerstwf <steven.fuchs@dockyard.com>
Wed, 3 Jun 2020 20:34:03 +0000 (16:34 -0400)
config/config.exs
lib/pleroma/web/preload.ex
lib/pleroma/web/preload/status_net.ex [new file with mode: 0644]
lib/pleroma/web/twitter_api/controllers/util_controller.ex
lib/pleroma/web/twitter_api/views/util_view.ex
test/web/preload/status_net_test.exs [new file with mode: 0644]

index ee81eb89959419cf5a1e8430c32c027843186022..0dca261526660c73c1d0c830ac4f7ca759d0bf3e 100644 (file)
@@ -420,7 +420,8 @@ config :pleroma, Pleroma.Web.Preload,
   providers: [
     Pleroma.Web.Preload.Providers.Instance,
     Pleroma.Web.Preload.Providers.User,
-    Pleroma.Web.Preload.Providers.Timelines
+    Pleroma.Web.Preload.Providers.Timelines,
+    Pleroma.Web.Preload.Providers.StatusNet
   ]
 
 config :pleroma, :http_security,
index f13932b890a0fa025954f8ba1341ce8cd935bbf5..90e4544686435b1cd6472008aa90d552e5bbd0aa 100644 (file)
@@ -9,7 +9,13 @@ defmodule Pleroma.Web.Preload do
   def build_tags(_conn, params) do
     preload_data =
       Enum.reduce(Pleroma.Config.get([__MODULE__, :providers], []), %{}, fn parser, acc ->
-        Map.merge(acc, parser.generate_terms(params))
+        terms =
+          params
+          |> parser.generate_terms()
+          |> Enum.map(fn {k, v} -> {k, Base.encode64(Jason.encode!(v))} end)
+          |> Enum.into(%{})
+
+        Map.merge(acc, terms)
       end)
 
     rendered_html =
@@ -22,8 +28,6 @@ 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"
diff --git a/lib/pleroma/web/preload/status_net.ex b/lib/pleroma/web/preload/status_net.ex
new file mode 100644 (file)
index 0000000..7e592d6
--- /dev/null
@@ -0,0 +1,24 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Web.Preload.Providers.StatusNet do
+  alias Pleroma.Web.TwitterAPI.UtilView
+  alias Pleroma.Web.Preload.Providers.Provider
+
+  @behaviour Provider
+  @config_url :"/api/statusnet/config.json"
+
+  @impl Provider
+  def generate_terms(_params) do
+    %{}
+    |> build_config_tag()
+  end
+
+  defp build_config_tag(acc) do
+    instance = Pleroma.Config.get(:instance)
+    info_data = UtilView.status_net_config(instance)
+
+    Map.put(acc, @config_url, info_data)
+  end
+end
index fd2aee17569c241ca4d715349f27e0a65a8ad40c..aaca182ecc1ac5c194abfdb4e86a501585cddc5a 100644 (file)
@@ -15,6 +15,7 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do
   alias Pleroma.User
   alias Pleroma.Web
   alias Pleroma.Web.CommonAPI
+  alias Pleroma.Web.TwitterAPI.UtilView
   alias Pleroma.Web.WebFinger
 
   plug(Pleroma.Web.FederatingPlug when action == :remote_subscribe)
@@ -90,17 +91,7 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do
 
   def config(%{assigns: %{format: "xml"}} = conn, _params) do
     instance = Pleroma.Config.get(:instance)
-
-    response = """
-    <config>
-    <site>
-    <name>#{Keyword.get(instance, :name)}</name>
-    <site>#{Web.base_url()}</site>
-    <textlimit>#{Keyword.get(instance, :limit)}</textlimit>
-    <closed>#{!Keyword.get(instance, :registrations_open)}</closed>
-    </site>
-    </config>
-    """
+    response = UtilView.status_net_config(instance)
 
     conn
     |> put_resp_content_type("application/xml")
index 52054e020dbeda1a4ef53df39e366e74a879b58f..d3bdb4f6230662f7cf62e57672dc352729ebc145 100644 (file)
@@ -5,4 +5,18 @@
 defmodule Pleroma.Web.TwitterAPI.UtilView do
   use Pleroma.Web, :view
   import Phoenix.HTML.Form
+  alias Pleroma.Web
+
+  def status_net_config(instance) do
+    """
+    <config>
+    <site>
+    <name>#{Keyword.get(instance, :name)}</name>
+    <site>#{Web.base_url()}</site>
+    <textlimit>#{Keyword.get(instance, :limit)}</textlimit>
+    <closed>#{!Keyword.get(instance, :registrations_open)}</closed>
+    </site>
+    </config>
+    """
+  end
 end
diff --git a/test/web/preload/status_net_test.exs b/test/web/preload/status_net_test.exs
new file mode 100644 (file)
index 0000000..ab6823a
--- /dev/null
@@ -0,0 +1,14 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Web.Preload.Providers.StatusNetTest do
+  use Pleroma.DataCase
+  alias Pleroma.Web.Preload.Providers.StatusNet
+
+  setup do: {:ok, StatusNet.generate_terms(nil)}
+
+  test "it renders the info", %{"/api/statusnet/config.json": info} do
+    assert info =~ "<name>Pleroma</name>"
+  end
+end