Add vapid_key to the `POST /api/v1/apps` response

stable
eugenijm 6 years ago
parent 691d1208b5
commit a4ab60ac54

@ -52,16 +52,9 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
with cs <- App.register_changeset(%App{}, app_attrs), with cs <- App.register_changeset(%App{}, app_attrs),
false <- cs.changes[:client_name] == @local_mastodon_name, false <- cs.changes[:client_name] == @local_mastodon_name,
{:ok, app} <- Repo.insert(cs) do {:ok, app} <- Repo.insert(cs) do
res = %{ conn
id: app.id |> to_string, |> put_view(AppView)
name: app.client_name, |> render("show.json", %{app: app})
client_id: app.client_id,
client_secret: app.client_secret,
redirect_uri: app.redirect_uris,
website: app.website
}
json(conn, res)
end end
end end
@ -137,7 +130,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
with %Token{app: %App{} = app} <- Repo.preload(token, :app) do with %Token{app: %App{} = app} <- Repo.preload(token, :app) do
conn conn
|> put_view(AppView) |> put_view(AppView)
|> render("show.json", %{app: app}) |> render("short.json", %{app: app})
end end
end end

@ -7,21 +7,35 @@ defmodule Pleroma.Web.MastodonAPI.AppView do
alias Pleroma.Web.OAuth.App alias Pleroma.Web.OAuth.App
def render("show.json", %{app: %App{website: webiste, client_name: name}}) do @vapid_key :web_push_encryption
result = %{ |> Application.get_env(:vapid_details, [])
|> Keyword.get(:public_key)
def render("show.json", %{app: %App{} = app}) do
%{
id: app.id |> to_string,
name: app.client_name,
client_id: app.client_id,
client_secret: app.client_secret,
redirect_uri: app.redirect_uris,
website: app.website
}
|> with_vapid_key()
end
def render("short.json", %{app: %App{website: webiste, client_name: name}}) do
%{
name: name, name: name,
website: webiste website: webiste
} }
|> with_vapid_key()
end
vapid_key = Pleroma.Web.Push.vapid_config() |> Keyword.get(:public_key) defp with_vapid_key(data) do
if @vapid_key do
result = Map.put(data, "vapid_key", @vapid_key)
if vapid_key do
Map.put(result, "vapid_key", vapid_key)
else else
result data
end end
result
end end
end end

@ -14,7 +14,9 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.ActivityPub.ActivityPub
alias Pleroma.Web.CommonAPI alias Pleroma.Web.CommonAPI
alias Pleroma.Web.MastodonAPI.FilterView alias Pleroma.Web.MastodonAPI.FilterView
alias Pleroma.Web.OAuth.App
alias Pleroma.Web.OStatus alias Pleroma.Web.OStatus
alias Pleroma.Web.Push
alias Pleroma.Web.TwitterAPI.TwitterAPI alias Pleroma.Web.TwitterAPI.TwitterAPI
import Pleroma.Factory import Pleroma.Factory
import ExUnit.CaptureLog import ExUnit.CaptureLog
@ -346,7 +348,34 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
expected = %{ expected = %{
"name" => app.client_name, "name" => app.client_name,
"website" => app.website, "website" => app.website,
"vapid_key" => Pleroma.Web.Push.vapid_config() |> Keyword.get(:public_key) "vapid_key" => Push.vapid_config() |> Keyword.get(:public_key)
}
assert expected == json_response(conn, 200)
end
test "creates an oauth app", %{conn: conn} do
user = insert(:user)
app_attrs = build(:oauth_app)
conn =
conn
|> assign(:user, user)
|> post("/api/v1/apps", %{
client_name: app_attrs.client_name,
redirect_uris: app_attrs.redirect_uris
})
[app] = Repo.all(App)
expected = %{
"name" => app.client_name,
"website" => app.website,
"client_id" => app.client_id,
"client_secret" => app.client_secret,
"id" => app.id |> to_string(),
"redirect_uri" => app.redirect_uris,
"vapid_key" => Push.vapid_config() |> Keyword.get(:public_key)
} }
assert expected == json_response(conn, 200) assert expected == json_response(conn, 200)

Loading…
Cancel
Save