diff options
author | Starfall <us@starfall.systems> | 2022-02-13 22:15:26 -0600 |
---|---|---|
committer | Starfall <us@starfall.systems> | 2022-02-13 22:15:26 -0600 |
commit | c0341f06be5310a00b85a5d48fa80891d47c6710 (patch) | |
tree | 907ef7f787f8bd446a6d9be1448a8bcff74e5a08 /app/services/concerns/payloadable.rb | |
parent | 169688aa9f2a69ac3d36332c833e9cad43b5f7a5 (diff) | |
parent | 6f78c66fe01921a4e7e01aa6e2386a5fce7f3afd (diff) |
Merge remote-tracking branch 'glitch/main'
Not at all sure where the admin UI is going to display English language names now but OK.
Diffstat (limited to 'app/services/concerns/payloadable.rb')
-rw-r--r-- | app/services/concerns/payloadable.rb | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/app/services/concerns/payloadable.rb b/app/services/concerns/payloadable.rb index 3e45570c3..04c3798fe 100644 --- a/app/services/concerns/payloadable.rb +++ b/app/services/concerns/payloadable.rb @@ -1,13 +1,21 @@ # 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 |