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
0f3ecb2b
Commit
0f3ecb2b
authored
Mar 14, 2019
by
kaniini
Browse files
activitypub: transmogrifier: accept remote Flag activities
parent
f86f7dbb
Changes
1
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/web/activity_pub/transmogrifier.ex
View file @
0f3ecb2b
...
...
@@ -355,6 +355,40 @@ defp get_follow_activity(follow_object, followed) do
end
end
# Flag objects are placed ahead of the ID check because Mastodon 2.8 and earlier send them
# with nil ID.
def
handle_incoming
(%{
"type"
=>
"Flag"
,
"object"
=>
objects
,
"actor"
=>
actor
}
=
data
)
do
with
context
<-
data
[
"context"
]
||
Utils
.
generate_context_id
(),
content
<-
data
[
"content"
]
||
""
,
%
User
{}
=
actor
<-
User
.
get_cached_by_ap_id
(
actor
),
# Reduce the object list to find the reported user.
%
User
{}
=
account
<-
Enum
.
reduce_while
(
objects
,
nil
,
fn
ap_id
,
_
->
with
%
User
{}
=
user
<-
User
.
get_cached_by_ap_id
(
ap_id
)
do
{
:halt
,
user
}
else
_
->
{
:cont
,
nil
}
end
end
),
# Remove the reported user from the object list.
statuses
<-
Enum
.
filter
(
objects
,
fn
ap_id
->
ap_id
!=
account
.
ap_id
end
)
do
params
=
%{
actor:
actor
,
context:
context
,
account:
account
,
statuses:
statuses
,
content:
content
,
additional:
%{
"cc"
=>
[
account
.
ap_id
]
}
}
ActivityPub
.
flag
(
params
)
end
end
# disallow objects with bogus IDs
def
handle_incoming
(%{
"id"
=>
nil
}),
do
:
:error
def
handle_incoming
(%{
"id"
=>
""
}),
do
:
:error
...
...
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