Add basic incoming deletions.

This commit is contained in:
Roger Braun 2017-08-01 17:05:07 +02:00
commit f226f46a09
5 changed files with 85 additions and 3 deletions

View file

@ -15,9 +15,13 @@ defmodule Pleroma.Activity do
where: fragment("(?)->>'id' = ?", activity.data, ^to_string(ap_id)))
end
def all_by_object_ap_id_q(ap_id) do
from activity in Activity,
where: fragment("(?)->'object'->>'id' = ?", activity.data, ^to_string(ap_id))
end
def all_by_object_ap_id(ap_id) do
Repo.all(from activity in Activity,
where: fragment("(?)->'object'->>'id' = ?", activity.data, ^to_string(ap_id)))
Repo.all(all_by_object_ap_id_q(ap_id))
end
def get_create_activity_by_object_ap_id(ap_id) do

View file

@ -0,0 +1,14 @@
defmodule Pleroma.Web.OStatus.DeleteHandler do
require Logger
alias Pleroma.Web.{XML, OStatus}
alias Pleroma.{Activity, Object, Repo}
def handle_delete(entry, doc \\ nil) do
with id <- XML.string_from_xpath("//id", entry),
object when not is_nil(object) <- Object.get_by_ap_id(id) do
Repo.delete(object)
Repo.delete_all(Activity.all_by_object_ap_id_q(id))
nil
end
end
end

View file

@ -9,7 +9,7 @@ defmodule Pleroma.Web.OStatus do
alias Pleroma.Web.ActivityPub.ActivityPub
alias Pleroma.Web.ActivityPub.Utils
alias Pleroma.Web.{WebFinger, Websub}
alias Pleroma.Web.OStatus.{FollowHandler, NoteHandler}
alias Pleroma.Web.OStatus.{FollowHandler, NoteHandler, DeleteHandler}
def feed_path(user) do
"#{user.ap_id}/feed.atom"
@ -34,6 +34,8 @@ defmodule Pleroma.Web.OStatus do
try do
case verb do
'http://activitystrea.ms/schema/1.0/delete' ->
with {:ok, activity} <- DeleteHandler.handle_delete(entry, doc), do: activity
'http://activitystrea.ms/schema/1.0/follow' ->
with {:ok, activity} <- FollowHandler.handle(entry, doc), do: activity
'http://activitystrea.ms/schema/1.0/share' ->