Use Tombstone and _:atomUri in Delete activities as fallback (#4704)

signup-info-prompt
Eugen Rochko 2017-08-26 16:10:35 +02:00 committed by GitHub
parent 2a2698e450
commit 884b085f53
2 changed files with 21 additions and 6 deletions

View File

@ -2,7 +2,8 @@
class ActivityPub::Activity::Delete < ActivityPub::Activity class ActivityPub::Activity::Delete < ActivityPub::Activity
def perform def perform
status = Status.find_by(uri: object_uri, account: @account) status = Status.find_by(uri: object_uri, account: @account)
status ||= Status.find_by(uri: @object['_:atomUri'], account: @account) if @object.is_a?(Hash) && @object['_:atomUri'].present?
if status.nil? if status.nil?
delete_later!(object_uri) delete_later!(object_uri)

View File

@ -1,8 +1,26 @@
# frozen_string_literal: true # frozen_string_literal: true
class ActivityPub::DeleteSerializer < ActiveModel::Serializer class ActivityPub::DeleteSerializer < ActiveModel::Serializer
class TombstoneSerializer < ActiveModel::Serializer
attributes :id, :type
attribute :atom_uri, key: '_:atomUri'
def id
ActivityPub::TagManager.instance.uri_for(object)
end
def type
'Tombstone'
end
def atom_uri
::TagManager.instance.uri_for(object)
end
end
attributes :id, :type, :actor attributes :id, :type, :actor
attribute :virtual_object, key: :object
has_one :object, serializer: TombstoneSerializer
def id def id
[ActivityPub::TagManager.instance.uri_for(object), '#delete'].join [ActivityPub::TagManager.instance.uri_for(object), '#delete'].join
@ -15,8 +33,4 @@ class ActivityPub::DeleteSerializer < ActiveModel::Serializer
def actor def actor
ActivityPub::TagManager.instance.uri_for(object.account) ActivityPub::TagManager.instance.uri_for(object.account)
end end
def virtual_object
ActivityPub::TagManager.instance.uri_for(object)
end
end end