Handle incoming deletes.

This commit is contained in:
lain 2018-03-03 18:37:40 +01:00
parent 1377b2e569
commit d2ad99298e
3 changed files with 65 additions and 13 deletions

View File

@ -138,6 +138,21 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
end end
end end
# TODO: Make secure.
def handle_incoming(%{"type" => "Delete", "object" => object_id, "actor" => actor, "id" => id} = data) do
object_id = case object_id do
%{"id" => id} -> id
id -> id
end
with %User{} = actor <- User.get_or_fetch_by_ap_id(actor),
{:ok, object} <- get_obj_helper(object_id) || ActivityPub.fetch_object_from_id(object_id),
{:ok, activity} <- ActivityPub.delete(object, false) do
{:ok, activity}
else
e -> :error
end
end
# TODO # TODO
# Accept # Accept
# Undo # Undo

33
test/fixtures/mastodon-delete.json vendored Normal file
View File

@ -0,0 +1,33 @@
{
"type": "Delete",
"signature": {
"type": "RsaSignature2017",
"signatureValue": "cw0RlfNREf+5VdsOYcCBDrv521eiLsDTAYNHKffjF0bozhCnOh+wHkFik7WamUk$
uEiN4L2H6vPlGRprAZGRhEwgy+A7rIFQNmLrpW5qV5UNVI/2F7kngEHqZQgbQYj9hW+5GMYmPkHdv3D72ZefGw$
4Xa2NBLGFpAjQllfzt7kzZLKKY2DM99FdUa64I2Wj3iD04Hs23SbrUdAeuGk/c1Cg6bwGNG4vxoiwn1jikgJLA$
NAlSGjsRGdR7LfbC7GqWWsW3cSNsLFPoU6FyALjgTrrYoHiXe0QHggw+L3yMLfzB2S/L46/VRbyb+WDKMBIXUL$
5owmzHSi6e/ZtCI3w==",
"creator": "http://mastodon.example.org/users/gargron#main-key", "created": "2018-03-03T16:24:11Z"
},
"object": {
"type": "Tombstone",
"id": "http://mastodon.example.org/users/gargron/statuses/99620895606148759",
"atomUri": "http://mastodon.example.org/users/gargron/statuses/99620895606148759"
},
"id": "http://mastodon.example.org/users/gargron/statuses/99620895606148759#delete",
"actor": "http://mastodon.example.org/users/gargron",
"@context": [
{
"toot": "http://joinmastodon.org/ns#",
"sensitive": "as:sensitive",
"ostatus": "http://ostatus.org#",
"movedTo": "as:movedTo",
"manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
"inReplyToAtomUri": "ostatus:inReplyToAtomUri",
"conversation": "ostatus:conversation",
"atomUri": "ostatus:atomUri",
"Hashtag": "as:Hashtag",
"Emoji": "toot:Emoji"
}
]
}

View File

@ -148,6 +148,23 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do
assert user.info["banner"]["url"] == [%{"href" => "https://cd.niu.moe/accounts/headers/000/033/323/original/850b3448fa5fd477.png"}] assert user.info["banner"]["url"] == [%{"href" => "https://cd.niu.moe/accounts/headers/000/033/323/original/850b3448fa5fd477.png"}]
assert user.bio == "<p>Some bio</p>" assert user.bio == "<p>Some bio</p>"
end end
test "it works for incoming deletes" do
activity = insert(:note_activity)
data = File.read!("test/fixtures/mastodon-delete.json")
|> Poison.decode!
object = data["object"]
|> Map.put("id", activity.data["object"]["id"])
data = data
|> Map.put("object", object)
|> Map.put("actor", activity.data["actor"])
{:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data)
refute Repo.get(Activity, activity.id)
end
end end
describe "prepare outgoing" do describe "prepare outgoing" do
@ -256,18 +273,5 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do
refute Repo.get(WebsubClientSubscription, ws.id) refute Repo.get(WebsubClientSubscription, ws.id)
assert Repo.get(WebsubClientSubscription, ws2.id) assert Repo.get(WebsubClientSubscription, ws2.id)
end end
test "it deletes all websub server subscriptions with the server as callback" do
subscription = %WebsubClientSubscription{topic: "https://niu.moe/users/rye.atom"}
{:ok, ws} = Repo.insert(subscription)
subscription = %WebsubClientSubscription{topic: "https://niu.moe/users/pasty.atom"}
{:ok, ws2} = Repo.insert(subscription)
Transmogrifier.maybe_retire_websub("https://niu.moe/users/rye")
refute Repo.get(WebsubClientSubscription, ws.id)
assert Repo.get(WebsubClientSubscription, ws2.id)
end
end end
end end