Move GET /api/v1/apps to GET /api/v1/pleroma/apps
authorSean King <seanking2919@protonmail.com>
Sun, 29 Aug 2021 00:02:36 +0000 (18:02 -0600)
committerSean King <seanking2919@protonmail.com>
Sun, 29 Aug 2021 00:02:36 +0000 (18:02 -0600)
lib/pleroma/web/api_spec/operations/app_operation.ex
lib/pleroma/web/api_spec/operations/pleroma_app_operation.ex [new file with mode: 0644]
lib/pleroma/web/mastodon_api/controllers/app_controller.ex
lib/pleroma/web/mastodon_api/views/app_view.ex
lib/pleroma/web/pleroma_api/controllers/app_controller.ex [new file with mode: 0644]
lib/pleroma/web/pleroma_api/views/app_view.ex [new file with mode: 0644]
lib/pleroma/web/router.ex

index 217609b0136414de3bd94bbfcfe638c56b870b5e..5e72c482434ddaf7b85e26a6f5db0e7ccc856b81 100644 (file)
@@ -14,19 +14,6 @@ defmodule Pleroma.Web.ApiSpec.AppOperation do
     apply(__MODULE__, operation, [])
   end
 
-  @spec index_operation() :: Operation.t()
-  def index_operation do
-    %Operation{
-      tags: ["Applications"],
-      summary: "List applications",
-      description: "List the OAuth applications for the current user",
-      operationId: "AppController.index",
-      responses: %{
-        200 => Operation.response("Array of App", "application/json", array_of_apps())
-      }
-    }
-  end
-
   @spec create_operation() :: Operation.t()
   def create_operation do
     %Operation{
@@ -137,8 +124,4 @@ defmodule Pleroma.Web.ApiSpec.AppOperation do
   defp create_response do
     Operation.response("App", "application/json", App)
   end
-
-  defp array_of_apps do
-    %Schema{type: :array, items: App, example: [App.schema().example]}
-  end
 end
diff --git a/lib/pleroma/web/api_spec/operations/pleroma_app_operation.ex b/lib/pleroma/web/api_spec/operations/pleroma_app_operation.ex
new file mode 100644 (file)
index 0000000..efaf81a
--- /dev/null
@@ -0,0 +1,31 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Web.ApiSpec.PleromaAppOperation do
+  alias OpenApiSpex.Operation
+  alias OpenApiSpex.Schema
+  alias Pleroma.Web.ApiSpec.Schemas.App
+
+  def open_api_operation(action) do
+    operation = String.to_existing_atom("#{action}_operation")
+    apply(__MODULE__, operation, [])
+  end
+
+  @spec index_operation() :: Operation.t()
+  def index_operation do
+    %Operation{
+      tags: ["Applications"],
+      summary: "List applications",
+      description: "List the OAuth applications for the current user",
+      operationId: "AppController.index",
+      responses: %{
+        200 => Operation.response("Array of App", "application/json", array_of_apps())
+      }
+    }
+  end
+
+  defp array_of_apps do
+    %Schema{type: :array, items: App, example: [App.schema().example]}
+  end
+end
\ No newline at end of file
index e44c4340ef808eb08cc33272798020c791d717eb..a95cc52fda151536ee6b4be6258cc5c5ceaa73d2 100644 (file)
@@ -14,27 +14,17 @@ defmodule Pleroma.Web.MastodonAPI.AppController do
   alias Pleroma.Web.OAuth.App
   alias Pleroma.Web.OAuth.Scopes
   alias Pleroma.Web.OAuth.Token
-  alias Pleroma.Web.Plugs.OAuthScopesPlug
 
   action_fallback(Pleroma.Web.MastodonAPI.FallbackController)
 
   plug(:skip_auth when action in [:create, :verify_credentials])
 
-  plug(OAuthScopesPlug, %{scopes: ["follow", "read"]} when action in [:index])
-
   plug(Pleroma.Web.ApiSpec.CastAndValidate)
 
   @local_mastodon_name "Mastodon-Local"
 
   defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.AppOperation
 
-  @doc "GET /api/v1/apps"
-  def index(%{assigns: %{user: user}} = conn, _params) do
-    with apps <- App.get_user_apps(user) do
-      render(conn, "index.json", %{apps: apps})
-    end
-  end
-
   @doc "POST /api/v1/apps"
   def create(%{body_params: params} = conn, _params) do
     scopes = Scopes.fetch_scopes(params, ["read"])
index 450943aee18862bd6c25c9cf45c541216393ee2c..c406b5a27f939a32d1a877182ed38f86a6d2d66e 100644 (file)
@@ -15,10 +15,6 @@ defmodule Pleroma.Web.MastodonAPI.AppView do
     }
   end
 
-  def render("index.json", %{apps: apps}) do
-    render_many(apps, Pleroma.Web.MastodonAPI.AppView, "show.json")
-  end
-
   def render("show.json", %{admin: true, app: %App{} = app} = assigns) do
     "show.json"
     |> render(Map.delete(assigns, :admin))
diff --git a/lib/pleroma/web/pleroma_api/controllers/app_controller.ex b/lib/pleroma/web/pleroma_api/controllers/app_controller.ex
new file mode 100644 (file)
index 0000000..6d46d91
--- /dev/null
@@ -0,0 +1,23 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Web.PleromaAPI.AppController do
+  use Pleroma.Web, :controller
+
+  alias Pleroma.Web.OAuth.App
+  alias Pleroma.Web.Plugs.OAuthScopesPlug
+
+  plug(OAuthScopesPlug, %{scopes: ["follow", "read"]} when action in [:index])
+
+  plug(Pleroma.Web.ApiSpec.CastAndValidate)
+
+  defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.PleromaAppOperation
+
+  @doc "GET /api/v1/pleroma/apps"
+  def index(%{assigns: %{user: user}} = conn, _params) do
+    with apps <- App.get_user_apps(user) do
+      render(conn, "index.json", %{apps: apps})
+    end
+  end
+end
\ No newline at end of file
diff --git a/lib/pleroma/web/pleroma_api/views/app_view.ex b/lib/pleroma/web/pleroma_api/views/app_view.ex
new file mode 100644 (file)
index 0000000..7dd560f
--- /dev/null
@@ -0,0 +1,11 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Web.PleromaAPI.AppView do
+  use Pleroma.Web, :view
+
+  def render("index.json", %{apps: apps}) do
+    render_many(apps, Pleroma.Web.MastodonAPI.AppView, "show.json")
+  end
+end
\ No newline at end of file
index 90443956408dc48bdbb70081a8a5525c27e09fb0..2dba219784923c34653a567a1933cbfcd301ca8d 100644 (file)
@@ -372,6 +372,7 @@ defmodule Pleroma.Web.Router do
   scope "/api/v1/pleroma", Pleroma.Web.PleromaAPI do
     pipe_through(:api)
 
+    get("/apps", AppController, :index)
     get("/statuses/:id/reactions/:emoji", EmojiReactionController, :index)
     get("/statuses/:id/reactions", EmojiReactionController, :index)
   end
@@ -444,8 +445,6 @@ defmodule Pleroma.Web.Router do
   scope "/api/v1", Pleroma.Web.MastodonAPI do
     pipe_through(:authenticated_api)
 
-    get("/apps", AppController, :index)
-
     get("/accounts/verify_credentials", AccountController, :verify_credentials)
     patch("/accounts/update_credentials", AccountController, :update_credentials)