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
da22119c
Verified
Commit
da22119c
authored
Jun 08, 2020
by
minibikini
Browse files
Merge branch 'develop' into global-status-expiration
parents
a7627bdc
d1924926
Changes
82
Expand all
Hide whitespace changes
Inline
Side-by-side
benchmarks/load_testing/activities.ex
View file @
da22119c
This diff is collapsed.
Click to expand it.
benchmarks/load_testing/fetcher.ex
View file @
da22119c
...
...
@@ -36,6 +36,7 @@ defp fetch_timelines(user) do
fetch_home_timeline
(
user
)
fetch_direct_timeline
(
user
)
fetch_public_timeline
(
user
)
fetch_public_timeline
(
user
,
:with_blocks
)
fetch_public_timeline
(
user
,
:local
)
fetch_public_timeline
(
user
,
:tag
)
fetch_notifications
(
user
)
...
...
@@ -51,12 +52,12 @@ defp render_views(user) do
defp
opts_for_home_timeline
(
user
)
do
%{
"
blocking_user
"
=>
user
,
"
count
"
=>
"20"
,
"
muting_user
"
=>
user
,
"
type
"
=>
[
"Create"
,
"Announce"
],
"
user
"
=>
user
,
"
with_muted
"
=>
"
true
"
blocking_user
:
user
,
count
:
"20"
,
muting_user
:
user
,
type
:
[
"Create"
,
"Announce"
],
user
:
user
,
with_muted
:
true
}
end
...
...
@@ -69,17 +70,17 @@ defp fetch_home_timeline(user) do
ActivityPub
.
fetch_activities
(
recipients
,
opts
)
|>
Enum
.
reverse
()
|>
List
.
last
()
second_page_last
=
ActivityPub
.
fetch_activities
(
recipients
,
Map
.
put
(
opts
,
"
max_id
"
,
first_page_last
.
id
))
ActivityPub
.
fetch_activities
(
recipients
,
Map
.
put
(
opts
,
:
max_id
,
first_page_last
.
id
))
|>
Enum
.
reverse
()
|>
List
.
last
()
third_page_last
=
ActivityPub
.
fetch_activities
(
recipients
,
Map
.
put
(
opts
,
"
max_id
"
,
second_page_last
.
id
))
ActivityPub
.
fetch_activities
(
recipients
,
Map
.
put
(
opts
,
:
max_id
,
second_page_last
.
id
))
|>
Enum
.
reverse
()
|>
List
.
last
()
forth_page_last
=
ActivityPub
.
fetch_activities
(
recipients
,
Map
.
put
(
opts
,
"
max_id
"
,
third_page_last
.
id
))
ActivityPub
.
fetch_activities
(
recipients
,
Map
.
put
(
opts
,
:
max_id
,
third_page_last
.
id
))
|>
Enum
.
reverse
()
|>
List
.
last
()
...
...
@@ -89,19 +90,19 @@ defp fetch_home_timeline(user) do
},
inputs:
%{
"1 page"
=>
opts
,
"2 page"
=>
Map
.
put
(
opts
,
"
max_id
"
,
first_page_last
.
id
),
"3 page"
=>
Map
.
put
(
opts
,
"
max_id
"
,
second_page_last
.
id
),
"4 page"
=>
Map
.
put
(
opts
,
"
max_id
"
,
third_page_last
.
id
),
"5 page"
=>
Map
.
put
(
opts
,
"
max_id
"
,
forth_page_last
.
id
),
"1 page only media"
=>
Map
.
put
(
opts
,
"
only_media
"
,
"
true
"
),
"2 page"
=>
Map
.
put
(
opts
,
:
max_id
,
first_page_last
.
id
),
"3 page"
=>
Map
.
put
(
opts
,
:
max_id
,
second_page_last
.
id
),
"4 page"
=>
Map
.
put
(
opts
,
:
max_id
,
third_page_last
.
id
),
"5 page"
=>
Map
.
put
(
opts
,
:
max_id
,
forth_page_last
.
id
),
"1 page only media"
=>
Map
.
put
(
opts
,
:
only_media
,
true
),
"2 page only media"
=>
Map
.
put
(
opts
,
"
max_id
"
,
first_page_last
.
id
)
|>
Map
.
put
(
"
only_media
"
,
"
true
"
),
Map
.
put
(
opts
,
:
max_id
,
first_page_last
.
id
)
|>
Map
.
put
(
:
only_media
,
true
),
"3 page only media"
=>
Map
.
put
(
opts
,
"
max_id
"
,
second_page_last
.
id
)
|>
Map
.
put
(
"
only_media
"
,
"
true
"
),
Map
.
put
(
opts
,
:
max_id
,
second_page_last
.
id
)
|>
Map
.
put
(
:
only_media
,
true
),
"4 page only media"
=>
Map
.
put
(
opts
,
"
max_id
"
,
third_page_last
.
id
)
|>
Map
.
put
(
"
only_media
"
,
"
true
"
),
Map
.
put
(
opts
,
:
max_id
,
third_page_last
.
id
)
|>
Map
.
put
(
:
only_media
,
true
),
"5 page only media"
=>
Map
.
put
(
opts
,
"
max_id
"
,
forth_page_last
.
id
)
|>
Map
.
put
(
"
only_media
"
,
"
true
"
)
Map
.
put
(
opts
,
:
max_id
,
forth_page_last
.
id
)
|>
Map
.
put
(
:
only_media
,
true
)
},
formatters:
formatters
()
)
...
...
@@ -109,12 +110,12 @@ defp fetch_home_timeline(user) do
defp
opts_for_direct_timeline
(
user
)
do
%{
:
visibility
=>
"direct"
,
"
blocking_user
"
=>
user
,
"
count
"
=>
"20"
,
"
type
"
=>
"Create"
,
"
user
"
=>
user
,
"
with_muted
"
=>
"
true
"
visibility
:
"direct"
,
blocking_user
:
user
,
count
:
"20"
,
type
:
"Create"
,
user
:
user
,
with_muted
:
true
}
end
...
...
@@ -129,7 +130,7 @@ defp fetch_direct_timeline(user) do
|>
Pagination
.
fetch_paginated
(
opts
)
|>
List
.
last
()
opts2
=
Map
.
put
(
opts
,
"
max_id
"
,
first_page_last
.
id
)
opts2
=
Map
.
put
(
opts
,
:
max_id
,
first_page_last
.
id
)
second_page_last
=
recipients
...
...
@@ -137,7 +138,7 @@ defp fetch_direct_timeline(user) do
|>
Pagination
.
fetch_paginated
(
opts2
)
|>
List
.
last
()
opts3
=
Map
.
put
(
opts
,
"
max_id
"
,
second_page_last
.
id
)
opts3
=
Map
.
put
(
opts
,
:
max_id
,
second_page_last
.
id
)
third_page_last
=
recipients
...
...
@@ -145,7 +146,7 @@ defp fetch_direct_timeline(user) do
|>
Pagination
.
fetch_paginated
(
opts3
)
|>
List
.
last
()
opts4
=
Map
.
put
(
opts
,
"
max_id
"
,
third_page_last
.
id
)
opts4
=
Map
.
put
(
opts
,
:
max_id
,
third_page_last
.
id
)
forth_page_last
=
recipients
...
...
@@ -164,7 +165,7 @@ defp fetch_direct_timeline(user) do
"2 page"
=>
opts2
,
"3 page"
=>
opts3
,
"4 page"
=>
opts4
,
"5 page"
=>
Map
.
put
(
opts4
,
"
max_id
"
,
forth_page_last
.
id
)
"5 page"
=>
Map
.
put
(
opts4
,
:
max_id
,
forth_page_last
.
id
)
},
formatters:
formatters
()
)
...
...
@@ -172,34 +173,34 @@ defp fetch_direct_timeline(user) do
defp
opts_for_public_timeline
(
user
)
do
%{
"
type
"
=>
[
"Create"
,
"Announce"
],
"
local_only
"
=>
false
,
"
blocking_user
"
=>
user
,
"
muting_user
"
=>
user
type
:
[
"Create"
,
"Announce"
],
local_only
:
false
,
blocking_user
:
user
,
muting_user
:
user
}
end
defp
opts_for_public_timeline
(
user
,
:local
)
do
%{
"
type
"
=>
[
"Create"
,
"Announce"
],
"
local_only
"
=>
true
,
"
blocking_user
"
=>
user
,
"
muting_user
"
=>
user
type
:
[
"Create"
,
"Announce"
],
local_only
:
true
,
blocking_user
:
user
,
muting_user
:
user
}
end
defp
opts_for_public_timeline
(
user
,
:tag
)
do
%{
"
blocking_user
"
=>
user
,
"
count
"
=>
"20"
,
"
local_only
"
=>
nil
,
"
muting_user
"
=>
user
,
"
tag
"
=>
[
"tag"
],
"
tag_all
"
=>
[],
"
tag_reject
"
=>
[],
"
type
"
=>
"Create"
,
"
user
"
=>
user
,
"
with_muted
"
=>
"
true
"
blocking_user
:
user
,
count
:
"20"
,
local_only
:
nil
,
muting_user
:
user
,
tag
:
[
"tag"
],
tag_all
:
[],
tag_reject
:
[],
type
:
"Create"
,
user
:
user
,
with_muted
:
true
}
end
...
...
@@ -222,24 +223,72 @@ defp fetch_public_timeline(user, :tag) do
end
defp
fetch_public_timeline
(
user
,
:only_media
)
do
opts
=
opts_for_public_timeline
(
user
)
|>
Map
.
put
(
"
only_media
"
,
"
true
"
)
opts
=
opts_for_public_timeline
(
user
)
|>
Map
.
put
(
:
only_media
,
true
)
fetch_public_timeline
(
opts
,
"public timeline only media"
)
end
defp
fetch_public_timeline
(
user
,
:with_blocks
)
do
opts
=
opts_for_public_timeline
(
user
)
remote_non_friends
=
Agent
.
get
(
:non_friends_remote
,
&
&1
)
Benchee
.
run
(%{
"public timeline without blocks"
=>
fn
->
ActivityPub
.
fetch_public_activities
(
opts
)
end
})
Enum
.
each
(
remote_non_friends
,
fn
non_friend
->
{
:ok
,
_
}
=
User
.
block
(
user
,
non_friend
)
end
)
user
=
User
.
get_by_id
(
user
.
id
)
opts
=
Map
.
put
(
opts
,
:blocking_user
,
user
)
Benchee
.
run
(%{
"public timeline with user block"
=>
fn
->
ActivityPub
.
fetch_public_activities
(
opts
)
end
})
domains
=
Enum
.
reduce
(
remote_non_friends
,
[],
fn
non_friend
,
domains
->
{
:ok
,
_user
}
=
User
.
unblock
(
user
,
non_friend
)
%{
host:
host
}
=
URI
.
parse
(
non_friend
.
ap_id
)
[
host
|
domains
]
end
)
domains
=
Enum
.
uniq
(
domains
)
Enum
.
each
(
domains
,
fn
domain
->
{
:ok
,
_
}
=
User
.
block_domain
(
user
,
domain
)
end
)
user
=
User
.
get_by_id
(
user
.
id
)
opts
=
Map
.
put
(
opts
,
:blocking_user
,
user
)
Benchee
.
run
(%{
"public timeline with domain block"
=>
fn
->
ActivityPub
.
fetch_public_activities
(
opts
)
end
})
end
defp
fetch_public_timeline
(
opts
,
title
)
when
is_binary
(
title
)
do
first_page_last
=
ActivityPub
.
fetch_public_activities
(
opts
)
|>
List
.
last
()
second_page_last
=
ActivityPub
.
fetch_public_activities
(
Map
.
put
(
opts
,
"
max_id
"
,
first_page_last
.
id
))
ActivityPub
.
fetch_public_activities
(
Map
.
put
(
opts
,
:
max_id
,
first_page_last
.
id
))
|>
List
.
last
()
third_page_last
=
ActivityPub
.
fetch_public_activities
(
Map
.
put
(
opts
,
"
max_id
"
,
second_page_last
.
id
))
ActivityPub
.
fetch_public_activities
(
Map
.
put
(
opts
,
:
max_id
,
second_page_last
.
id
))
|>
List
.
last
()
forth_page_last
=
ActivityPub
.
fetch_public_activities
(
Map
.
put
(
opts
,
"
max_id
"
,
third_page_last
.
id
))
ActivityPub
.
fetch_public_activities
(
Map
.
put
(
opts
,
:
max_id
,
third_page_last
.
id
))
|>
List
.
last
()
Benchee
.
run
(
...
...
@@ -250,17 +299,17 @@ defp fetch_public_timeline(opts, title) when is_binary(title) do
},
inputs:
%{
"1 page"
=>
opts
,
"2 page"
=>
Map
.
put
(
opts
,
"
max_id
"
,
first_page_last
.
id
),
"3 page"
=>
Map
.
put
(
opts
,
"
max_id
"
,
second_page_last
.
id
),
"4 page"
=>
Map
.
put
(
opts
,
"
max_id
"
,
third_page_last
.
id
),
"5 page"
=>
Map
.
put
(
opts
,
"
max_id
"
,
forth_page_last
.
id
)
"2 page"
=>
Map
.
put
(
opts
,
:
max_id
,
first_page_last
.
id
),
"3 page"
=>
Map
.
put
(
opts
,
:
max_id
,
second_page_last
.
id
),
"4 page"
=>
Map
.
put
(
opts
,
:
max_id
,
third_page_last
.
id
),
"5 page"
=>
Map
.
put
(
opts
,
:
max_id
,
forth_page_last
.
id
)
},
formatters:
formatters
()
)
end
defp
opts_for_notifications
do
%{
"
count
"
=>
"20"
,
"
with_muted
"
=>
"
true
"
}
%{
count
:
"20"
,
with_muted
:
true
}
end
defp
fetch_notifications
(
user
)
do
...
...
@@ -269,15 +318,15 @@ defp fetch_notifications(user) do
first_page_last
=
MastodonAPI
.
get_notifications
(
user
,
opts
)
|>
List
.
last
()
second_page_last
=
MastodonAPI
.
get_notifications
(
user
,
Map
.
put
(
opts
,
"
max_id
"
,
first_page_last
.
id
))
MastodonAPI
.
get_notifications
(
user
,
Map
.
put
(
opts
,
:
max_id
,
first_page_last
.
id
))
|>
List
.
last
()
third_page_last
=
MastodonAPI
.
get_notifications
(
user
,
Map
.
put
(
opts
,
"
max_id
"
,
second_page_last
.
id
))
MastodonAPI
.
get_notifications
(
user
,
Map
.
put
(
opts
,
:
max_id
,
second_page_last
.
id
))
|>
List
.
last
()
forth_page_last
=
MastodonAPI
.
get_notifications
(
user
,
Map
.
put
(
opts
,
"
max_id
"
,
third_page_last
.
id
))
MastodonAPI
.
get_notifications
(
user
,
Map
.
put
(
opts
,
:
max_id
,
third_page_last
.
id
))
|>
List
.
last
()
Benchee
.
run
(
...
...
@@ -288,10 +337,10 @@ defp fetch_notifications(user) do
},
inputs:
%{
"1 page"
=>
opts
,
"2 page"
=>
Map
.
put
(
opts
,
"
max_id
"
,
first_page_last
.
id
),
"3 page"
=>
Map
.
put
(
opts
,
"
max_id
"
,
second_page_last
.
id
),
"4 page"
=>
Map
.
put
(
opts
,
"
max_id
"
,
third_page_last
.
id
),
"5 page"
=>
Map
.
put
(
opts
,
"
max_id
"
,
forth_page_last
.
id
)
"2 page"
=>
Map
.
put
(
opts
,
:
max_id
,
first_page_last
.
id
),
"3 page"
=>
Map
.
put
(
opts
,
:
max_id
,
second_page_last
.
id
),
"4 page"
=>
Map
.
put
(
opts
,
:
max_id
,
third_page_last
.
id
),
"5 page"
=>
Map
.
put
(
opts
,
:
max_id
,
forth_page_last
.
id
)
},
formatters:
formatters
()
)
...
...
@@ -301,13 +350,13 @@ defp fetch_favourites(user) do
first_page_last
=
ActivityPub
.
fetch_favourites
(
user
)
|>
List
.
last
()
second_page_last
=
ActivityPub
.
fetch_favourites
(
user
,
%{
"
max_id
"
=>
first_page_last
.
id
})
|>
List
.
last
()
ActivityPub
.
fetch_favourites
(
user
,
%{
:
max_id
=>
first_page_last
.
id
})
|>
List
.
last
()
third_page_last
=
ActivityPub
.
fetch_favourites
(
user
,
%{
"
max_id
"
=>
second_page_last
.
id
})
|>
List
.
last
()
ActivityPub
.
fetch_favourites
(
user
,
%{
:
max_id
=>
second_page_last
.
id
})
|>
List
.
last
()
forth_page_last
=
ActivityPub
.
fetch_favourites
(
user
,
%{
"
max_id
"
=>
third_page_last
.
id
})
|>
List
.
last
()
ActivityPub
.
fetch_favourites
(
user
,
%{
:
max_id
=>
third_page_last
.
id
})
|>
List
.
last
()
Benchee
.
run
(
%{
...
...
@@ -317,10 +366,10 @@ defp fetch_favourites(user) do
},
inputs:
%{
"1 page"
=>
%{},
"2 page"
=>
%{
"
max_id
"
=>
first_page_last
.
id
},
"3 page"
=>
%{
"
max_id
"
=>
second_page_last
.
id
},
"4 page"
=>
%{
"
max_id
"
=>
third_page_last
.
id
},
"5 page"
=>
%{
"
max_id
"
=>
forth_page_last
.
id
}
"2 page"
=>
%{
:
max_id
=>
first_page_last
.
id
},
"3 page"
=>
%{
:
max_id
=>
second_page_last
.
id
},
"4 page"
=>
%{
:
max_id
=>
third_page_last
.
id
},
"5 page"
=>
%{
:
max_id
=>
forth_page_last
.
id
}
},
formatters:
formatters
()
)
...
...
@@ -328,8 +377,8 @@ defp fetch_favourites(user) do
defp
opts_for_long_thread
(
user
)
do
%{
"
blocking_user
"
=>
user
,
"
user
"
=>
user
blocking_user
:
user
,
user
:
user
}
end
...
...
@@ -339,9 +388,9 @@ defp fetch_long_thread(user) do
opts
=
opts_for_long_thread
(
user
)
private_input
=
{
private
.
data
[
"context"
],
Map
.
put
(
opts
,
"
exclude_id
"
,
private
.
id
)}
private_input
=
{
private
.
data
[
"context"
],
Map
.
put
(
opts
,
:
exclude_id
,
private
.
id
)}
public_input
=
{
public
.
data
[
"context"
],
Map
.
put
(
opts
,
"
exclude_id
"
,
public
.
id
)}
public_input
=
{
public
.
data
[
"context"
],
Map
.
put
(
opts
,
:
exclude_id
,
public
.
id
)}
Benchee
.
run
(
%{
...
...
@@ -461,13 +510,13 @@ defp render_long_thread(user) do
public_context
=
ActivityPub
.
fetch_activities_for_context
(
public
.
data
[
"context"
],
Map
.
put
(
fetch_opts
,
"
exclude_id
"
,
public
.
id
)
Map
.
put
(
fetch_opts
,
:
exclude_id
,
public
.
id
)
)
private_context
=
ActivityPub
.
fetch_activities_for_context
(
private
.
data
[
"context"
],
Map
.
put
(
fetch_opts
,
"
exclude_id
"
,
private
.
id
)
Map
.
put
(
fetch_opts
,
:
exclude_id
,
private
.
id
)
)
Benchee
.
run
(
...
...
@@ -498,14 +547,14 @@ defp fetch_timelines_with_reply_filtering(user) do
end
,
"Public timeline with reply filtering - following"
=>
fn
->
public_params
|>
Map
.
put
(
"
reply_visibility
"
,
"following"
)
|>
Map
.
put
(
"
reply_filtering_user
"
,
user
)
|>
Map
.
put
(
:
reply_visibility
,
"following"
)
|>
Map
.
put
(
:
reply_filtering_user
,
user
)
|>
ActivityPub
.
fetch_public_activities
()
end
,
"Public timeline with reply filtering - self"
=>
fn
->
public_params
|>
Map
.
put
(
"
reply_visibility
"
,
"self"
)
|>
Map
.
put
(
"
reply_filtering_user
"
,
user
)
|>
Map
.
put
(
:
reply_visibility
,
"self"
)
|>
Map
.
put
(
:
reply_filtering_user
,
user
)
|>
ActivityPub
.
fetch_public_activities
()
end
},
...
...
@@ -524,16 +573,16 @@ defp fetch_timelines_with_reply_filtering(user) do
"Home timeline with reply filtering - following"
=>
fn
->
private_params
=
private_params
|>
Map
.
put
(
"
reply_filtering_user
"
,
user
)
|>
Map
.
put
(
"
reply_visibility
"
,
"following"
)
|>
Map
.
put
(
:
reply_filtering_user
,
user
)
|>
Map
.
put
(
:
reply_visibility
,
"following"
)
ActivityPub
.
fetch_activities
(
recipients
,
private_params
)
end
,
"Home timeline with reply filtering - self"
=>
fn
->
private_params
=
private_params
|>
Map
.
put
(
"
reply_filtering_user
"
,
user
)
|>
Map
.
put
(
"
reply_visibility
"
,
"self"
)
|>
Map
.
put
(
:
reply_filtering_user
,
user
)
|>
Map
.
put
(
:
reply_visibility
,
"self"
)
ActivityPub
.
fetch_activities
(
recipients
,
private_params
)
end
...
...
benchmarks/load_testing/users.ex
View file @
da22119c
...
...
@@ -27,7 +27,7 @@ def generate(opts \\ []) do
make_friends
(
main_user
,
opts
[
:friends
])
Repo
.
get
(
User
,
main_user
.
id
)
User
.
get_by_id
(
main_user
.
id
)
end
def
generate_users
(
max
)
do
...
...
@@ -166,4 +166,24 @@ defp run_stream(users, main_user) do
)
|>
Stream
.
run
()
end
@spec
prepare_users
(
User
.
t
(),
keyword
())
::
map
()
def
prepare_users
(
user
,
opts
)
do
friends_limit
=
opts
[
:friends_used
]
non_friends_limit
=
opts
[
:non_friends_used
]
%{
user:
user
,
friends_local:
fetch_users
(
user
,
friends_limit
,
:local
,
true
),
friends_remote:
fetch_users
(
user
,
friends_limit
,
:external
,
true
),
non_friends_local:
fetch_users
(
user
,
non_friends_limit
,
:local
,
false
),
non_friends_remote:
fetch_users
(
user
,
non_friends_limit
,
:external
,
false
)
}
end
defp
fetch_users
(
user
,
limit
,
local
,
friends?
)
do
user
|>
get_users
(
limit:
limit
,
local:
local
,
friends?:
friends?
)
|>
Enum
.
shuffle
()
end
end
benchmarks/mix/tasks/pleroma/benchmarks/tags.ex
View file @
da22119c
...
...
@@ -5,7 +5,6 @@ defmodule Mix.Tasks.Pleroma.Benchmarks.Tags do
import
Ecto
.
Query
alias
Pleroma
.
Repo
alias
Pleroma
.
Web
.
MastodonAPI
.
TimelineController
def
run
(
_args
)
do
Mix
.
Pleroma
.
start_pleroma
()
...
...
@@ -37,7 +36,7 @@ def run(_args) do
Benchee
.
run
(
%{
"Hashtag fetching, any"
=>
fn
tags
->
TimelineController
.
hashtag_fetching
(
hashtag_fetching
(
%{
"any"
=>
tags
},
...
...
@@ -47,7 +46,7 @@ def run(_args) do
end
,
# Will always return zero results because no overlapping hashtags are generated.
"Hashtag fetching, all"
=>
fn
tags
->
TimelineController
.
hashtag_fetching
(
hashtag_fetching
(
%{
"all"
=>
tags
},
...
...
@@ -67,7 +66,7 @@ def run(_args) do
Benchee
.
run
(
%{
"Hashtag fetching"
=>
fn
tag
->
TimelineController
.
hashtag_fetching
(
hashtag_fetching
(
%{
"tag"
=>
tag
},
...
...
@@ -80,4 +79,35 @@ def run(_args) do
time:
5
)
end
defp
hashtag_fetching
(
params
,
user
,
local_only
)
do
tags
=
[
params
[
"tag"
],
params
[
"any"
]]
|>
List
.
flatten
()
|>
Enum
.
uniq
()
|>
Enum
.
filter
(
&
&1
)
|>
Enum
.
map
(
&
String
.
downcase
(
&1
))
tag_all
=
params
|>
Map
.
get
(
"all"
,
[])
|>
Enum
.
map
(
&
String
.
downcase
(
&1
))
tag_reject
=
params
|>
Map
.
get
(
"none"
,
[])
|>
Enum
.
map
(
&
String
.
downcase
(
&1
))
_activities
=
params
|>
Map
.
put
(
:type
,
"Create"
)
|>
Map
.
put
(
:local_only
,
local_only
)
|>
Map
.
put
(
:blocking_user
,
user
)
|>
Map
.
put
(
:muting_user
,
user
)
|>
Map
.
put
(
:user
,
user
)
|>
Map
.
put
(
:tag
,
tags
)
|>
Map
.
put
(
:tag_all
,
tag_all
)
|>
Map
.
put
(
:tag_reject
,
tag_reject
)
|>
Pleroma
.
Web
.
ActivityPub
.
ActivityPub
.
fetch_public_activities
()
end
end
config/config.exs
View file @
da22119c
...
...
@@ -171,7 +171,8 @@
"application/ld+json"
=>
[
"activity+json"
]
}
config
:tesla
,
adapter:
Tesla
.
Adapter
.
Gun
config
:tesla
,
adapter:
Tesla
.
Adapter
.
Hackney
# Configures http settings, upstream proxy etc.
config
:pleroma
,
:http
,
proxy_url:
nil
,
...
...
@@ -183,7 +184,7 @@
name:
"Pleroma"
,
email:
"example@example.com"
,
notify_email:
"noreply@example.com"
,
description:
"
A
Pleroma
instance, an alternativ
e fediverse server"
,
description:
"Pleroma
: An efficient and flexibl
e fediverse server"
,
background_image:
"/images/city.jpg"
,
limit:
5_000
,
chat_limit:
5_000
,
...
...
docs/API/admin_api.md
View file @
da22119c
...
...
@@ -547,7 +547,7 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret
```
json
{
"total
Reports
"
:
1
,
"total"
:
1
,
"reports"
:
[
{
"account"
:
{
...
...
@@ -768,7 +768,7 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret
-
400 Bad Request
`"Invalid parameters"`
when
`status`
is missing
-
On success:
`204`
, empty response
## `
POST
/api/pleroma/admin/reports/:report_id/notes/:id`
## `
DELETE
/api/pleroma/admin/reports/:report_id/notes/:id`
### Delete report note
...
...
docs/clients.md
View file @
da22119c
...
...
@@ -42,6 +42,12 @@ Feel free to contact us to be added to this list!
-
Platforms: SailfishOS
-
Features: No Streaming
### Husky
-
Source code:
<https://git.mentality.rip/FWGS/Husky>
-
Contact:
[
@Husky@enigmatic.observer
](
https://enigmatic.observer/users/Husky
)
-
Platforms: Android
-
Features: No Streaming, Emoji Reactions, Text Formatting, FE Stickers
### Nekonium
-
Homepage:
[
F-Droid Repository
](
https://repo.gdgd.jp.net/
)
,
[
Google Play
](
https://play.google.com/store/apps/details?id=com.apps.nekonium
)
,
[
Amazon
](
https://www.amazon.co.jp/dp/B076FXPRBC/
)
-
Source:
<https://gogs.gdgd.jp.net/lin/nekonium>
...
...
lib/pleroma/bbs/handler.ex
View file @
da22119c
...
...
@@ -92,10 +92,10 @@ def handle_command(state, "home") do
params
=
%{}
|>
Map
.
put
(
"
type
"
,
[
"Create"
])
|>
Map
.
put
(
"
blocking_user
"
,
user
)
|>
Map
.
put
(
"
muting_user
"
,
user
)
|>
Map
.
put
(
"
user
"
,
user
)
|>
Map
.
put
(
:
type
,
[
"Create"
])
|>
Map
.
put
(
:
blocking_user
,
user
)
|>
Map
.
put
(
:
muting_user
,
user
)
|>
Map
.
put
(
:
user
,
user
)
activities
=
[
user
.
ap_id
|
Pleroma
.
User
.
following
(
user
)]
...
...
lib/pleroma/constants.ex