diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2017-08-13 00:44:41 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-13 00:44:41 +0200 |
commit | b7370ac8baa643d93ea727699b3b11f9d3a55bea (patch) | |
tree | 869a8c2d44f78d96255ae0bf20a84c150ca23702 /app/services/block_service.rb | |
parent | ccdd5a9576819cdc95946d98fea0e3c8bbd1d626 (diff) |
ActivityPub delivery (#4566)
* Deliver ActivityPub Like
* Deliver ActivityPub Undo-Like
* Deliver ActivityPub Create/Announce activities
* Deliver ActivityPub creates from mentions
* Deliver ActivityPub Block/Undo-Block
* Deliver ActivityPub Accept/Reject-Follow
* Deliver ActivityPub Undo-Follow
* Deliver ActivityPub Follow
* Deliver ActivityPub Delete activities
Incidentally fix #889
* Adjust BatchedRemoveStatusService for ActivityPub
* Add tests for ActivityPub workers
* Add tests for FollowService
* Add tests for FavouriteService, UnfollowService and PostStatusService
* Add tests for ReblogService, BlockService, UnblockService, ProcessMentionsService
* Add tests for AuthorizeFollowService, RejectFollowService, RemoveStatusService
* Add tests for BatchedRemoveStatusService
* Deliver updates to a local account to ActivityPub followers
* Minor adjustments
Diffstat (limited to 'app/services/block_service.rb')
-rw-r--r-- | app/services/block_service.rb | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/app/services/block_service.rb b/app/services/block_service.rb index 5d7bf6a3bc2..f2253226b55 100644 --- a/app/services/block_service.rb +++ b/app/services/block_service.rb @@ -12,11 +12,28 @@ class BlockService < BaseService block = account.block!(target_account) BlockWorker.perform_async(account.id, target_account.id) - NotificationWorker.perform_async(build_xml(block), account.id, target_account.id) unless target_account.local? + create_notification(block) unless target_account.local? + block end private + def create_notification(block) + if block.target_account.ostatus? + NotificationWorker.perform_async(build_xml(block), block.account_id, block.target_account_id) + elsif block.target_account.activitypub? + ActivityPub::DeliveryWorker.perform_async(build_json(block), block.account_id, block.target_account.inbox_url) + end + end + + def build_json(block) + ActiveModelSerializers::SerializableResource.new( + block, + serializer: ActivityPub::BlockSerializer, + adapter: ActivityPub::Adapter + ).to_json + end + def build_xml(block) OStatus::AtomSerializer.render(OStatus::AtomSerializer.new.block_salmon(block)) end |