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
d4cf273f
Commit
d4cf273f
authored
Mar 21, 2017
by
lain
Browse files
Add limiting to activity pub fetching.
parent
ad303783
Changes
3
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/web/activity_pub/activity_pub.ex
View file @
d4cf273f
...
...
@@ -9,8 +9,11 @@ def insert(map) when is_map(map) do
def
fetch_public_activities
do
query
=
from
activity
in
Activity
,
where:
fragment
(
~s(? @> '{"to": ["https://www.w3.org/ns/activitystreams#Public"]}')
,
activity
.
data
)
where:
fragment
(
~s(? @> '{"to": ["https://www.w3.org/ns/activitystreams#Public"]}')
,
activity
.
data
),
limit:
20
,
order_by:
[
desc:
:inserted_at
]
Repo
.
all
(
query
)
|>
Enum
.
reverse
end
end
test/support/builders/activity_builder.ex
View file @
d4cf273f
defmodule
Pleroma
.
Builders
.
ActivityBuilder
do
alias
Pleroma
.
Builders
.
UserBuilder
alias
Pleroma
.
Web
.
ActivityPub
.
ActivityPub
alias
Pleroma
.
User
def
public_and_non_public
do
{
:ok
,
user
}
=
UserBuilder
.
insert
public
=
%{
def
build
(
data
\\
%{},
opts
\\
%{})
do
user
=
opts
[
:user
]
||
UserBuilder
.
build
activity
=
%{
"id"
=>
1
,
"actor"
=>
user
.
ap_id
,
"to"
=>
[
"https://www.w3.org/ns/activitystreams#Public"
],
...
...
@@ -14,16 +13,26 @@ def public_and_non_public do
"content"
=>
"test"
}
}
Map
.
merge
(
activity
,
data
)
end
non_public
=
%{
"id"
=>
2
,
"actor"
=>
user
.
ap_id
,
"to"
=>
[],
"object"
=>
%{
"type"
=>
"Note"
,
"content"
=>
"test"
}
}
def
insert
(
data
\\
%{},
opts
\\
%{})
do
activity
=
build
(
data
,
opts
)
ActivityPub
.
insert
(
activity
)
end
def
insert_list
(
times
,
data
\\
%{},
opts
\\
%{})
do
Enum
.
map
(
1
..
times
,
fn
(
n
)
->
{
:ok
,
activity
}
=
insert
(%{
"id"
=>
n
})
activity
end
)
end
def
public_and_non_public
do
{
:ok
,
user
}
=
UserBuilder
.
insert
public
=
build
(%{
"id"
=>
1
},
%{
user:
user
})
non_public
=
build
(%{
"id"
=>
2
,
"to"
=>
[]},
%{
user:
user
})
{
:ok
,
public
}
=
ActivityPub
.
insert
(
public
)
{
:ok
,
non_public
}
=
ActivityPub
.
insert
(
non_public
)
...
...
test/web/activity_pub/activity_pub_test.exs
View file @
d4cf273f
...
...
@@ -15,13 +15,24 @@ test "inserts a given map into the activity database" do
end
end
describe
"fetch activities"
do
test
"retrieves
all
public activities"
do
describe
"
public
fetch activities"
do
test
"retrieves public activities"
do
%{
public:
public
}
=
ActivityBuilder
.
public_and_non_public
activities
=
ActivityPub
.
fetch_public_activities
assert
length
(
activities
)
==
1
assert
Enum
.
at
(
activities
,
0
)
==
public
end
test
"retrieves a maximum of 20 activities"
do
activities
=
ActivityBuilder
.
insert_list
(
30
)
last_expected
=
List
.
last
(
activities
)
activities
=
ActivityPub
.
fetch_public_activities
last
=
List
.
last
(
activities
)
assert
length
(
activities
)
==
20
assert
last
==
last_expected
end
end
end
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