diff options
author | Maxim Filippov <colixer@gmail.com> | 2019-10-11 19:12:29 +0300 |
---|---|---|
committer | Maxim Filippov <colixer@gmail.com> | 2019-10-11 19:12:29 +0300 |
commit | cc6875b582df49d2cb780e0940b85d5b04fe0e74 (patch) | |
tree | 70703b6c81e3bded68b6e583d3ef381f4b8e5570 /lib/pleroma/web | |
parent | 44afe4c8870d14ae2cd22ff5cfa04555cf5907bd (diff) | |
download | pleroma-cc6875b582df49d2cb780e0940b85d5b04fe0e74.tar.gz |
Add `GET /api/pleroma/admin/relay` endpoint - lists all followed relays
Diffstat (limited to 'lib/pleroma/web')
-rw-r--r-- | lib/pleroma/web/activity_pub/relay.ex | 14 | ||||
-rw-r--r-- | lib/pleroma/web/admin_api/admin_api_controller.ex | 10 | ||||
-rw-r--r-- | lib/pleroma/web/router.ex | 1 |
3 files changed, 25 insertions, 0 deletions
diff --git a/lib/pleroma/web/activity_pub/relay.ex b/lib/pleroma/web/activity_pub/relay.ex index c2ac38907..03fc434a9 100644 --- a/lib/pleroma/web/activity_pub/relay.ex +++ b/lib/pleroma/web/activity_pub/relay.ex @@ -51,6 +51,20 @@ defmodule Pleroma.Web.ActivityPub.Relay do def publish(_), do: {:error, "Not implemented"} + @spec list() :: {:ok, [String.t()]} | {:error, any()} + def list do + with %User{following: following} = _user <- get_actor() do + list = + following + |> Enum.map(fn entry -> URI.parse(entry).host end) + |> Enum.uniq() + + {:ok, list} + else + error -> format_error(error) + end + end + defp format_error({:error, error}), do: format_error(error) defp format_error(error) do diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex index 513bae800..24dda75a9 100644 --- a/lib/pleroma/web/admin_api/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/admin_api_controller.ex @@ -401,6 +401,16 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do end end + def relay_list(conn, _params) do + with {:ok, list} <- Relay.list() do + json(conn, %{relays: list}) + else + _ -> + conn + |> put_status(500) + end + end + def relay_follow(%{assigns: %{user: admin}} = conn, %{"relay_url" => target}) do with {:ok, _message} <- Relay.follow(target) do ModerationLog.insert_log(%{ diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index ae799b8ac..8cc967af9 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -152,6 +152,7 @@ defmodule Pleroma.Web.Router do put("/users/:nickname/activation_status", AdminAPIController, :set_activation_status) + get("/relay", AdminAPIController, :relay_list) post("/relay", AdminAPIController, :relay_follow) delete("/relay", AdminAPIController, :relay_unfollow) |