aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/web/mastodon_api/controllers/app_controller.ex
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2019-10-02 13:27:55 +0200
committerlain <lain@soykaf.club>2019-10-02 13:27:55 +0200
commit557223b2b5b60956d3e1a19e9fdae9e9798c4fe2 (patch)
tree71d711f8932a2bd952f9f54ccef1322c55aed1d7 /lib/pleroma/web/mastodon_api/controllers/app_controller.ex
parent19bc0b8c79765dc485e081651a4e4c589d18b970 (diff)
parent433f2c0f6854d2838819e08f0fb0a9e8cf058021 (diff)
downloadpleroma-557223b2b5b60956d3e1a19e9fdae9e9798c4fe2.tar.gz
Merge remote-tracking branch 'origin/develop' into reactions
Diffstat (limited to 'lib/pleroma/web/mastodon_api/controllers/app_controller.ex')
-rw-r--r--lib/pleroma/web/mastodon_api/controllers/app_controller.ex39
1 files changed, 39 insertions, 0 deletions
diff --git a/lib/pleroma/web/mastodon_api/controllers/app_controller.ex b/lib/pleroma/web/mastodon_api/controllers/app_controller.ex
new file mode 100644
index 000000000..abbe16a88
--- /dev/null
+++ b/lib/pleroma/web/mastodon_api/controllers/app_controller.ex
@@ -0,0 +1,39 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Web.MastodonAPI.AppController do
+ use Pleroma.Web, :controller
+
+ alias Pleroma.Repo
+ alias Pleroma.Web.OAuth.App
+ alias Pleroma.Web.OAuth.Scopes
+ alias Pleroma.Web.OAuth.Token
+
+ action_fallback(Pleroma.Web.MastodonAPI.FallbackController)
+
+ @local_mastodon_name "Mastodon-Local"
+
+ @doc "POST /api/v1/apps"
+ def create(conn, params) do
+ scopes = Scopes.fetch_scopes(params, ["read"])
+
+ app_attrs =
+ params
+ |> Map.drop(["scope", "scopes"])
+ |> Map.put("scopes", scopes)
+
+ with cs <- App.register_changeset(%App{}, app_attrs),
+ false <- cs.changes[:client_name] == @local_mastodon_name,
+ {:ok, app} <- Repo.insert(cs) do
+ render(conn, "show.json", app: app)
+ end
+ end
+
+ @doc "GET /api/v1/apps/verify_credentials"
+ def verify_credentials(%{assigns: %{user: _user, token: token}} = conn, _) do
+ with %Token{app: %App{} = app} <- Repo.preload(token, :app) do
+ render(conn, "short.json", app: app)
+ end
+ end
+end