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
49929321
Commit
49929321
authored
Sep 13, 2017
by
Roger Braun
Browse files
Add relationships to masto api.
parent
f0352480
Changes
5
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
View file @
49929321
...
...
@@ -7,6 +7,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
alias
Pleroma
.
Web
.
ActivityPub
.
ActivityPub
alias
Pleroma
.
Web
.
TwitterAPI
.
TwitterAPI
alias
Pleroma
.
Web
.
CommonAPI
import
Ecto
.
Query
import
Logger
def
create_app
(
conn
,
params
)
do
...
...
@@ -177,6 +178,14 @@ def notifications(%{assigns: %{user: user}} = conn, params) do
|>
json
(
result
)
end
def
relationships
(%{
assigns:
%{
user:
user
}}
=
conn
,
%{
"id"
=>
id
})
do
id
=
List
.
wrap
(
id
)
q
=
from
u
in
User
,
where:
u
.
id
in
^
id
targets
=
Repo
.
all
(
q
)
render
conn
,
AccountView
,
"relationships.json"
,
%{
user:
user
,
targets:
targets
}
end
def
empty_array
(
conn
,
_
)
do
Logger
.
debug
(
"Unimplemented, returning an empty array"
)
json
(
conn
,
[])
...
...
lib/pleroma/web/mastodon_api/views/account_view.ex
View file @
49929321
defmodule
Pleroma
.
Web
.
MastodonAPI
.
AccountView
do
use
Pleroma
.
Web
,
:view
alias
Pleroma
.
User
alias
Pleroma
.
Web
.
MastodonAPI
.
AccountView
defp
image_url
(%{
"url"
=>
[
%{
"href"
=>
href
}
|
t
]}),
do
:
href
defp
image_url
(
_
),
do
:
nil
...
...
@@ -38,4 +39,20 @@ def render("mention.json", %{user: user}) do
url:
user
.
ap_id
}
end
def
render
(
"relationship.json"
,
%{
user:
user
,
target:
target
})
do
%{
id:
target
.
id
,
following:
User
.
following?
(
target
,
user
),
followed_by:
User
.
following?
(
user
,
target
),
blocking:
false
,
muting:
false
,
requested:
false
,
domain_blocking:
false
}
end
def
render
(
"relationships.json"
,
%{
user:
user
,
targets:
targets
})
do
render_many
(
targets
,
AccountView
,
"relationship.json"
,
user:
user
,
as:
:target
)
end
end
lib/pleroma/web/router.ex
View file @
49929321
...
...
@@ -56,6 +56,8 @@ def user_fetcher(username) do
pipe_through
:authenticated_api
get
"/accounts/verify_credentials"
,
MastodonAPIController
,
:verify_credentials
get
"/accounts/relationships"
,
MastodonAPIController
,
:relationships
get
"/timelines/home"
,
MastodonAPIController
,
:home_timeline
post
"/statuses"
,
MastodonAPIController
,
:post_status
...
...
test/web/mastodon_api/account_view_test.exs
View file @
49929321
...
...
@@ -2,6 +2,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do
use
Pleroma
.
DataCase
import
Pleroma
.
Factory
alias
Pleroma
.
Web
.
MastodonAPI
.
AccountView
alias
Pleroma
.
User
test
"Represent a user account"
do
user
=
insert
(
:user
,
%{
info:
%{
"note_count"
=>
5
,
"follower_count"
=>
3
},
nickname:
"shp@shitposter.club"
})
...
...
@@ -39,4 +40,23 @@ test "Represent a smaller mention" do
assert
expected
==
AccountView
.
render
(
"mention.json"
,
%{
user:
user
})
end
test
"represent a relationship"
do
user
=
insert
(
:user
)
other_user
=
insert
(
:user
)
{
:ok
,
user
}
=
User
.
follow
(
user
,
other_user
)
expected
=
%{
id:
other_user
.
id
,
following:
false
,
followed_by:
true
,
blocking:
false
,
muting:
false
,
requested:
false
,
domain_blocking:
false
}
assert
expected
==
AccountView
.
render
(
"relationship.json"
,
%{
user:
user
,
target:
other_user
})
end
end
test/web/mastodon_api/mastodon_api_controller_test.exs
View file @
49929321
...
...
@@ -181,4 +181,21 @@ test "gets a users statuses", %{conn: conn} do
assert
id
==
note_two
.
id
end
end
describe
"user relationships"
do
test
"returns the relationships for the current user"
,
%{
conn:
conn
}
do
user
=
insert
(
:user
)
other_user
=
insert
(
:user
)
{
:ok
,
user
}
=
User
.
follow
(
user
,
other_user
)
conn
=
conn
|>
assign
(
:user
,
user
)
|>
get
(
"/api/v1/accounts/relationships"
,
%{
"id"
=>
[
other_user
.
id
]})
assert
[
relationship
]
=
json_response
(
conn
,
200
)
assert
other_user
.
id
==
relationship
[
"id"
]
end
end
end
Write
Preview
Markdown
is supported
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