about summary refs log tree commit diff
path: root/app/services/concerns/payloadable.rb
diff options
context:
space:
mode:
authorClaire <claire.github-309c@sitedethib.com>2022-02-11 22:22:25 +0100
committerGitHub <noreply@github.com>2022-02-11 22:22:25 +0100
commit59b7ba451b4ded817c98abfa8c88738de0484917 (patch)
tree86a6af23cb16f45a5bfb660d8edd70ad57d4a30c /app/services/concerns/payloadable.rb
parent776e337b8d2aa66440bc4565617b5440ca781e1a (diff)
parenta34e4f7e279e14b304ed81f698feb19d18a74d04 (diff)
Merge pull request #1684 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes
Diffstat (limited to 'app/services/concerns/payloadable.rb')
-rw-r--r--app/services/concerns/payloadable.rb18
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