From f2b743e715758f6af818f68fb77cd44d2451ae48 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/lib/activitypub/activity/follow.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'app/lib') diff --git a/app/lib/activitypub/activity/follow.rb b/app/lib/activitypub/activity/follow.rb index 1e805c0d1..3eb88339a 100644 --- a/app/lib/activitypub/activity/follow.rb +++ b/app/lib/activitypub/activity/follow.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class ActivityPub::Activity::Follow < ActivityPub::Activity + include Payloadable + def perform target_account = account_from_uri(object_uri) @@ -28,7 +30,7 @@ class ActivityPub::Activity::Follow < ActivityPub::Activity end def reject_follow_request!(target_account) - json = ActiveModelSerializers::SerializableResource.new(FollowRequest.new(account: @account, target_account: target_account, uri: @json['id']), serializer: ActivityPub::RejectFollowSerializer, adapter: ActivityPub::Adapter).to_json + json = Oj.dump(serialize_payload(FollowRequest.new(account: @account, target_account: target_account, uri: @json['id']), ActivityPub::RejectFollowSerializer)) ActivityPub::DeliveryWorker.perform_async(json, target_account.id, @account.inbox_url) end end -- cgit From 6c464cd42439ae2140b3a6975bc075ba06c71bcb Mon Sep 17 00:00:00 2001 From: ThibG Date: Tue, 4 Jun 2019 23:24:31 +0200 Subject: Do not misattribute inlined boosts if `attributedTo` isn't present (#10967) * Do not misattribute inlined boosts if `attributedTo` isn't present Fixes #10950 * Fix tests --- app/lib/activitypub/activity.rb | 2 +- spec/lib/activitypub/activity/announce_spec.rb | 18 +++--------------- 2 files changed, 4 insertions(+), 16 deletions(-) (limited to 'app/lib') diff --git a/app/lib/activitypub/activity.rb b/app/lib/activitypub/activity.rb index 54b175613..66b5763a9 100644 --- a/app/lib/activitypub/activity.rb +++ b/app/lib/activitypub/activity.rb @@ -143,7 +143,7 @@ class ActivityPub::Activity # If the boosted toot is embedded and it is a self-boost, handle it like a Create unless unsupported_object_type? - actor_id = value_or_id(first_of_value(@object['attributedTo'])) || @account.uri + actor_id = value_or_id(first_of_value(@object['attributedTo'])) if actor_id == @account.uri return ActivityPub::Activity.factory({ 'type' => 'Create', 'actor' => actor_id, 'object' => @object }, @account).perform diff --git a/spec/lib/activitypub/activity/announce_spec.rb b/spec/lib/activitypub/activity/announce_spec.rb index 926083a4f..60fd96a18 100644 --- a/spec/lib/activitypub/activity/announce_spec.rb +++ b/spec/lib/activitypub/activity/announce_spec.rb @@ -58,21 +58,6 @@ RSpec.describe ActivityPub::Activity::Announce do end end - context 'self-boost of a previously unknown status with missing attributedTo' do - let(:object_json) do - { - id: 'https://example.com/actor#bar', - type: 'Note', - content: 'Lorem ipsum', - to: 'http://example.com/followers', - } - end - - it 'creates a reblog by sender of status' do - expect(sender.reblogged?(sender.statuses.first)).to be true - end - end - context 'self-boost of a previously unknown status with correct attributedTo' do let(:object_json) do { @@ -122,6 +107,7 @@ RSpec.describe ActivityPub::Activity::Announce do type: 'Note', content: 'Lorem ipsum', to: 'http://example.com/followers', + attributedTo: 'https://example.com/actor', } end @@ -141,6 +127,7 @@ RSpec.describe ActivityPub::Activity::Announce do type: 'Note', content: 'Lorem ipsum', to: 'http://example.com/followers', + attributedTo: 'https://example.com/actor', } end @@ -161,6 +148,7 @@ RSpec.describe ActivityPub::Activity::Announce do type: 'Note', content: 'Lorem ipsum', to: 'http://example.com/followers', + attributedTo: 'https://example.com/actor', } end -- cgit