Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Pleroma
pleroma
Commits
a4ab60ac
Commit
a4ab60ac
authored
Mar 26, 2019
by
Eugenij
Browse files
Add vapid_key to the `POST /api/v1/apps` response
parent
691d1208
Changes
3
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
View file @
a4ab60ac
...
...
@@ -52,16 +52,9 @@ def create_app(conn, params) do
with
cs
<-
App
.
register_changeset
(%
App
{},
app_attrs
),
false
<-
cs
.
changes
[
:client_name
]
==
@local_mastodon_name
,
{
:ok
,
app
}
<-
Repo
.
insert
(
cs
)
do
res
=
%{
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
}
json
(
conn
,
res
)
conn
|>
put_view
(
AppView
)
|>
render
(
"show.json"
,
%{
app:
app
})
end
end
...
...
@@ -137,7 +130,7 @@ def verify_app_credentials(%{assigns: %{user: _user, token: token}} = conn, _) d
with
%
Token
{
app:
%
App
{}
=
app
}
<-
Repo
.
preload
(
token
,
:app
)
do
conn
|>
put_view
(
AppView
)
|>
render
(
"sho
w
.json"
,
%{
app:
app
})
|>
render
(
"sho
rt
.json"
,
%{
app:
app
})
end
end
...
...
lib/pleroma/web/mastodon_api/views/app_view.ex
View file @
a4ab60ac
...
...
@@ -7,21 +7,35 @@ defmodule Pleroma.Web.MastodonAPI.AppView do
alias
Pleroma
.
Web
.
OAuth
.
App
def
render
(
"show.json"
,
%{
app:
%
App
{
website:
webiste
,
client_name:
name
}})
do
result
=
%{
@vapid_key
:web_push_encryption
|>
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
,
website:
webiste
}
|>
with_vapid_key
()
end
vapid_key
=
Pleroma
.
Web
.
Push
.
vapid_config
()
|>
Keyword
.
get
(
:public_key
)
result
=
if
vapid_key
do
Map
.
put
(
result
,
"vapid_key"
,
vapid_key
)
else
result
end
result
defp
with_vapid_key
(
data
)
do
if
@vapid_key
do
Map
.
put
(
data
,
"vapid_key"
,
@vapid_key
)
else
data
end
end
end
test/web/mastodon_api/mastodon_api_controller_test.exs
View file @
a4ab60ac
...
...
@@ -14,7 +14,9 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
alias
Pleroma
.
Web
.
ActivityPub
.
ActivityPub
alias
Pleroma
.
Web
.
CommonAPI
alias
Pleroma
.
Web
.
MastodonAPI
.
FilterView
alias
Pleroma
.
Web
.
OAuth
.
App
alias
Pleroma
.
Web
.
OStatus
alias
Pleroma
.
Web
.
Push
alias
Pleroma
.
Web
.
TwitterAPI
.
TwitterAPI
import
Pleroma
.
Factory
import
ExUnit
.
CaptureLog
...
...
@@ -346,7 +348,34 @@ test "apps/verify_credentials", %{conn: conn} do
expected
=
%{
"name"
=>
app
.
client_name
,
"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
)
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment