add status_net/config
This commit is contained in:
parent
dbcc1b105e
commit
3b8180d7d1
6 changed files with 63 additions and 15 deletions
|
@ -420,7 +420,8 @@ config :pleroma, Pleroma.Web.Preload,
|
||||||
providers: [
|
providers: [
|
||||||
Pleroma.Web.Preload.Providers.Instance,
|
Pleroma.Web.Preload.Providers.Instance,
|
||||||
Pleroma.Web.Preload.Providers.User,
|
Pleroma.Web.Preload.Providers.User,
|
||||||
Pleroma.Web.Preload.Providers.Timelines
|
Pleroma.Web.Preload.Providers.Timelines,
|
||||||
|
Pleroma.Web.Preload.Providers.StatusNet
|
||||||
]
|
]
|
||||||
|
|
||||||
config :pleroma, :http_security,
|
config :pleroma, :http_security,
|
||||||
|
|
|
@ -9,7 +9,13 @@ defmodule Pleroma.Web.Preload do
|
||||||
def build_tags(_conn, params) do
|
def build_tags(_conn, params) do
|
||||||
preload_data =
|
preload_data =
|
||||||
Enum.reduce(Pleroma.Config.get([__MODULE__, :providers], []), %{}, fn parser, acc ->
|
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)
|
end)
|
||||||
|
|
||||||
rendered_html =
|
rendered_html =
|
||||||
|
@ -22,8 +28,6 @@ defmodule Pleroma.Web.Preload do
|
||||||
end
|
end
|
||||||
|
|
||||||
def build_script_tag(content) do
|
def build_script_tag(content) do
|
||||||
content = Base.encode64(content)
|
|
||||||
|
|
||||||
HTML.Tag.content_tag(:script, HTML.raw(content),
|
HTML.Tag.content_tag(:script, HTML.raw(content),
|
||||||
id: "initial-results",
|
id: "initial-results",
|
||||||
type: "application/json"
|
type: "application/json"
|
||||||
|
|
24
lib/pleroma/web/preload/status_net.ex
Normal file
24
lib/pleroma/web/preload/status_net.ex
Normal file
|
@ -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
|
|
@ -15,6 +15,7 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do
|
||||||
alias Pleroma.User
|
alias Pleroma.User
|
||||||
alias Pleroma.Web
|
alias Pleroma.Web
|
||||||
alias Pleroma.Web.CommonAPI
|
alias Pleroma.Web.CommonAPI
|
||||||
|
alias Pleroma.Web.TwitterAPI.UtilView
|
||||||
alias Pleroma.Web.WebFinger
|
alias Pleroma.Web.WebFinger
|
||||||
|
|
||||||
plug(Pleroma.Web.FederatingPlug when action == :remote_subscribe)
|
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
|
def config(%{assigns: %{format: "xml"}} = conn, _params) do
|
||||||
instance = Pleroma.Config.get(:instance)
|
instance = Pleroma.Config.get(:instance)
|
||||||
|
response = UtilView.status_net_config(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>
|
|
||||||
"""
|
|
||||||
|
|
||||||
conn
|
conn
|
||||||
|> put_resp_content_type("application/xml")
|
|> put_resp_content_type("application/xml")
|
||||||
|
|
|
@ -5,4 +5,18 @@
|
||||||
defmodule Pleroma.Web.TwitterAPI.UtilView do
|
defmodule Pleroma.Web.TwitterAPI.UtilView do
|
||||||
use Pleroma.Web, :view
|
use Pleroma.Web, :view
|
||||||
import Phoenix.HTML.Form
|
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
|
end
|
||||||
|
|
14
test/web/preload/status_net_test.exs
Normal file
14
test/web/preload/status_net_test.exs
Normal file
|
@ -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
|
Loading…
Reference in a new issue