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
32a95d73
Commit
32a95d73
authored
May 02, 2017
by
lain
Browse files
Add twkn timeline.
parent
6dd83354
Changes
5
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/web/activity_pub/activity_pub.ex
View file @
32a95d73
...
...
@@ -149,6 +149,12 @@ def fetch_activities(recipients, opts \\ %{}) do
query
=
from
activity
in
query
,
where:
activity
.
id
>
^
since_id
query
=
if
opts
[
"local_only"
]
do
from
activity
in
query
,
where:
activity
.
local
==
true
else
query
end
query
=
if
opts
[
"max_id"
]
do
from
activity
in
query
,
where:
activity
.
id
<
^
opts
[
"max_id"
]
else
...
...
lib/pleroma/web/router.ex
View file @
32a95d73
...
...
@@ -30,7 +30,7 @@ def user_fetcher(username) do
get
"/statusnet/config"
,
TwitterAPI
.
Controller
,
:config
get
"/statuses/public_timeline"
,
TwitterAPI
.
Controller
,
:public_timeline
get
"/statuses/public_and_external_timeline"
,
TwitterAPI
.
Controller
,
:public_timeline
get
"/statuses/public_and_external_timeline"
,
TwitterAPI
.
Controller
,
:public_
and_external_
timeline
get
"/statuses/user_timeline"
,
TwitterAPI
.
Controller
,
:user_timeline
get
"/statuses/show/:id"
,
TwitterAPI
.
Controller
,
:fetch_status
...
...
lib/pleroma/web/twitter_api/twitter_api.ex
View file @
32a95d73
...
...
@@ -84,6 +84,12 @@ def fetch_friend_statuses(user, opts \\ %{}) do
end
def
fetch_public_statuses
(
user
,
opts
\\
%{})
do
opts
=
Map
.
put
(
opts
,
"local_only"
,
true
)
ActivityPub
.
fetch_public_activities
(
opts
)
|>
activities_to_statuses
(%{
for:
user
})
end
def
fetch_public_and_external_statuses
(
user
,
opts
\\
%{})
do
ActivityPub
.
fetch_public_activities
(
opts
)
|>
activities_to_statuses
(%{
for:
user
})
end
...
...
lib/pleroma/web/twitter_api/twitter_api_controller.ex
View file @
32a95d73
...
...
@@ -41,6 +41,14 @@ defp extract_media_ids(status_data) do
end
end
def
public_and_external_timeline
(%{
assigns:
%{
user:
user
}}
=
conn
,
params
)
do
statuses
=
TwitterAPI
.
fetch_public_and_external_statuses
(
user
,
params
)
{
:ok
,
json
}
=
Poison
.
encode
(
statuses
)
conn
|>
json_reply
(
200
,
json
)
end
def
public_timeline
(%{
assigns:
%{
user:
user
}}
=
conn
,
params
)
do
statuses
=
TwitterAPI
.
fetch_public_statuses
(
user
,
params
)
{
:ok
,
json
}
=
Poison
.
encode
(
statuses
)
...
...
test/web/twitter_api/twitter_api_test.exs
View file @
32a95d73
...
...
@@ -73,8 +73,9 @@ test "create a status that is a reply" do
assert
Enum
.
member?
(
get_in
(
reply
.
data
,
[
"to"
]),
"some_cool_id"
)
end
test
"fetch public statuses"
do
test
"fetch public statuses
, excluding remote ones.
"
do
%{
public:
activity
,
user:
user
}
=
ActivityBuilder
.
public_and_non_public
insert
(
:note_activity
,
%{
local:
false
})
follower
=
insert
(
:user
,
following:
[
User
.
ap_followers
(
user
)])
...
...
@@ -84,6 +85,18 @@ test "fetch public statuses" do
assert
Enum
.
at
(
statuses
,
0
)
==
ActivityRepresenter
.
to_map
(
activity
,
%{
user:
user
,
for:
follower
})
end
test
"fetch whole known network statuses"
do
%{
public:
activity
,
user:
user
}
=
ActivityBuilder
.
public_and_non_public
insert
(
:note_activity
,
%{
local:
false
})
follower
=
insert
(
:user
,
following:
[
User
.
ap_followers
(
user
)])
statuses
=
TwitterAPI
.
fetch_public_and_external_statuses
(
follower
)
assert
length
(
statuses
)
==
2
assert
Enum
.
at
(
statuses
,
0
)
==
ActivityRepresenter
.
to_map
(
activity
,
%{
user:
user
,
for:
follower
})
end
test
"fetch friends' statuses"
do
user
=
insert
(
:user
,
%{
following:
[
"someguy/followers"
]})
{
:ok
,
activity
}
=
ActivityBuilder
.
insert
(%{
"to"
=>
[
"someguy/followers"
]})
...
...
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