# frozen_string_literal: true
module Payloadable
+ # @param [ActiveModelSerializers::Model] record
+ # @param [ActiveModelSerializers::Serializer] serializer
+ # @param [Hash] options
+ # @option options [Account] :signer
+ # @option options [String] :sign_with
+ # @option options [Boolean] :always_sign
+ # @return [Hash]
def serialize_payload(record, serializer, options = {})
- signer = options.delete(:signer)
- sign_with = options.delete(:sign_with)
- payload = ActiveModelSerializers::SerializableResource.new(record, options.merge(serializer: serializer, adapter: ActivityPub::Adapter)).as_json
- object = record.respond_to?(:virtual_object) ? record.virtual_object : record
+ signer = options.delete(:signer)
+ sign_with = options.delete(:sign_with)
+ always_sign = options.delete(:always_sign)
+ payload = ActiveModelSerializers::SerializableResource.new(record, options.merge(serializer: serializer, adapter: ActivityPub::Adapter)).as_json
+ object = record.respond_to?(:virtual_object) ? record.virtual_object : record
- if (object.respond_to?(:sign?) && object.sign?) && signer && signing_enabled?
+ if (object.respond_to?(:sign?) && object.sign?) && signer && (always_sign || signing_enabled?)
ActivityPub::LinkedDataSignature.new(payload).sign!(signer, sign_with: sign_with)
else
payload
end
def delete_actor_json
- @delete_actor_json ||= Oj.dump(serialize_payload(@account, ActivityPub::DeleteActorSerializer, signer: @account))
+ @delete_actor_json ||= Oj.dump(serialize_payload(@account, ActivityPub::DeleteActorSerializer, signer: @account, always_sign: true))
end
def delivery_inboxes
end
def signed_activity_json
- @signed_activity_json ||= Oj.dump(serialize_payload(@status, @status.reblog? ? ActivityPub::UndoAnnounceSerializer : ActivityPub::DeleteSerializer, signer: @account))
+ @signed_activity_json ||= Oj.dump(serialize_payload(@status, @status.reblog? ? ActivityPub::UndoAnnounceSerializer : ActivityPub::DeleteSerializer, signer: @account, always_sign: true))
end
def remove_reblogs