From fbf08920a0d73231c04b35c263ea4e04224b6e7d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 4 Jun 2019 23:11:18 +0200 Subject: Refactor all ActivityPub deliveries to be serialized and signed through one concern (#10966) --- app/services/concerns/payloadable.rb | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 app/services/concerns/payloadable.rb (limited to 'app/services/concerns') diff --git a/app/services/concerns/payloadable.rb b/app/services/concerns/payloadable.rb new file mode 100644 index 000000000..13d9c3548 --- /dev/null +++ b/app/services/concerns/payloadable.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +module Payloadable + 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 + + if (record.respond_to?(:sign?) && record.sign?) && signer && signing_enabled? + ActivityPub::LinkedDataSignature.new(payload).sign!(signer, sign_with: sign_with) + else + payload + end + end + + def signing_enabled? + true + end +end -- cgit