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
ea9a776d
Commit
ea9a776d
authored
Nov 13, 2018
by
lain
Browse files
TwitterApi: Add direct message endpoint
parent
2cf40237
Pipeline
#4441
passed with stages
in 6 minutes and 35 seconds
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/web/router.ex
View file @
ea9a776d
...
...
@@ -270,6 +270,7 @@ defmodule Pleroma.Web.Router do
get
(
"/statuses/friends_timeline"
,
TwitterAPI
.
Controller
,
:friends_timeline
)
get
(
"/statuses/mentions"
,
TwitterAPI
.
Controller
,
:mentions_timeline
)
get
(
"/statuses/mentions_timeline"
,
TwitterAPI
.
Controller
,
:mentions_timeline
)
get
(
"/statuses/dm_timeline"
,
TwitterAPI
.
Controller
,
:dm_timeline
)
get
(
"/qvitter/statuses/notifications"
,
TwitterAPI
.
Controller
,
:notifications
)
# XXX: this is really a pleroma API, but we want to keep the pleroma namespace clean
...
...
lib/pleroma/web/twitter_api/twitter_api_controller.ex
View file @
ea9a776d
...
...
@@ -126,6 +126,19 @@ def mentions_timeline(%{assigns: %{user: user}} = conn, params) do
|>
render
(
ActivityView
,
"index.json"
,
%{
activities:
activities
,
for:
user
})
end
def
dm_timeline
(%{
assigns:
%{
user:
user
}}
=
conn
,
params
)
do
query
=
ActivityPub
.
fetch_activities_query
(
[
user
.
ap_id
],
Map
.
merge
(
params
,
%{
"type"
=>
"Create"
,
visibility:
"direct"
})
)
activities
=
Repo
.
all
(
query
)
conn
|>
render
(
ActivityView
,
"index.json"
,
%{
activities:
activities
,
for:
user
})
end
def
notifications
(%{
assigns:
%{
user:
user
}}
=
conn
,
params
)
do
notifications
=
Notification
.
for_user
(
user
,
params
)
...
...
test/web/twitter_api/twitter_api_controller_test.exs
View file @
ea9a776d
...
...
@@ -271,6 +271,36 @@ test "with credentials", %{conn: conn, user: current_user} do
end
end
describe
"GET /statuses/dm_timeline.json"
do
test
"it show direct messages"
,
%{
conn:
conn
}
do
user_one
=
insert
(
:user
)
user_two
=
insert
(
:user
)
{
:ok
,
user_two
}
=
User
.
follow
(
user_two
,
user_one
)
{
:ok
,
direct
}
=
CommonAPI
.
post
(
user_one
,
%{
"status"
=>
"Hi @
#{
user_two
.
nickname
}
!"
,
"visibility"
=>
"direct"
})
{
:ok
,
_follower_only
}
=
CommonAPI
.
post
(
user_one
,
%{
"status"
=>
"Hi @
#{
user_two
.
nickname
}
!"
,
"visibility"
=>
"private"
})
# Only direct should be visible here
res_conn
=
conn
|>
assign
(
:user
,
user_two
)
|>
get
(
"/api/statuses/dm_timeline.json"
)
[
status
]
=
json_response
(
res_conn
,
200
)
assert
status
[
"id"
]
==
direct
.
id
end
end
describe
"GET /statuses/mentions.json"
do
setup
[
:valid_user
]
...
...
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