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
551c3d93
Commit
551c3d93
authored
Jan 01, 2019
by
sxsdv1
Browse files
Split create activity specifics from update_outbox
parent
32bed664
Changes
2
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/web/activity_pub/activity_pub_controller.ex
View file @
551c3d93
...
...
@@ -165,9 +165,29 @@ def read_inbox(%{assigns: %{user: user}} = conn, %{"nickname" => nickname} = par
end
end
def
handle_user_activity
(
user
,
%{
"type"
=>
"Create"
}
=
params
)
do
object
=
params
[
"object"
]
|>
Map
.
merge
(
Map
.
take
(
params
,
[
"to"
,
"cc"
]))
|>
Map
.
put
(
"attributedTo"
,
user
.
ap_id
())
|>
Transmogrifier
.
fix_object
()
ActivityPub
.
create
(%{
to:
params
[
"to"
],
actor:
user
,
context:
object
[
"context"
],
object:
object
,
additional:
Map
.
take
(
params
,
[
"cc"
])
})
end
def
handle_user_activity
(
_
,
_
)
do
{
:error
,
"Unhandled activity type"
}
end
def
update_outbox
(
%{
assigns:
%{
user:
user
}}
=
conn
,
%{
"nickname"
=>
nickname
,
"type"
=>
"Create"
}
=
params
%{
"nickname"
=>
nickname
}
=
params
)
do
if
nickname
==
user
.
nickname
do
actor
=
user
.
ap_id
()
...
...
@@ -178,24 +198,16 @@ def update_outbox(
|>
Map
.
put
(
"actor"
,
actor
)
|>
Transmogrifier
.
fix_addressing
()
object
=
params
[
"object"
]
|>
Map
.
merge
(
Map
.
take
(
params
,
[
"to"
,
"cc"
]))
|>
Map
.
put
(
"attributedTo"
,
actor
)
|>
Transmogrifier
.
fix_object
()
with
{
:ok
,
%
Activity
{}
=
activity
}
<-
ActivityPub
.
create
(%{
to:
params
[
"to"
],
actor:
user
,
context:
object
[
"context"
],
object:
object
,
additional:
Map
.
take
(
params
,
[
"cc"
])
})
do
with
{
:ok
,
%
Activity
{}
=
activity
}
<-
handle_user_activity
(
user
,
params
)
do
conn
|>
put_status
(
:created
)
|>
put_resp_header
(
"location"
,
activity
.
data
[
"id"
])
|>
json
(
activity
.
data
)
else
{
:error
,
message
}
->
conn
|>
put_status
(
:bad_request
)
|>
json
(
message
)
end
else
conn
...
...
test/web/activity_pub/activity_pub_controller_test.exs
View file @
551c3d93
...
...
@@ -192,6 +192,23 @@ test "it inserts an incoming activity into the database", %{conn: conn} do
result
=
json_response
(
conn
,
201
)
assert
Activity
.
get_by_ap_id
(
result
[
"id"
])
end
test
"it rejects an incoming activity with bogus type"
,
%{
conn:
conn
}
do
data
=
File
.
read!
(
"test/fixtures/activitypub-client-post-activity.json"
)
|>
Poison
.
decode!
()
user
=
insert
(
:user
)
data
=
data
|>
Map
.
put
(
"type"
,
"BadType"
)
conn
=
conn
|>
assign
(
:user
,
user
)
|>
put_req_header
(
"content-type"
,
"application/activity+json"
)
|>
post
(
"/users/
#{
user
.
nickname
}
/outbox"
,
data
)
assert
json_response
(
conn
,
400
)
end
end
describe
"/users/:nickname/followers"
do
...
...
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