Adding embedded PuSH server
This commit is contained in:
@ -7,7 +7,9 @@ class FavouriteService < BaseService
|
||||
# @return [Favourite]
|
||||
def call(account, status)
|
||||
favourite = Favourite.create!(account: account, status: status)
|
||||
|
||||
HubPingWorker.perform_async(account.id)
|
||||
Pubsubhubbub::DistributionWorker.perform_async(favourite.stream_entry.id)
|
||||
|
||||
if status.local?
|
||||
NotifyService.new.call(status.account, favourite)
|
||||
|
@ -19,7 +19,10 @@ class FollowService < BaseService
|
||||
end
|
||||
|
||||
merge_into_timeline(target_account, source_account)
|
||||
|
||||
HubPingWorker.perform_async(source_account.id)
|
||||
Pubsubhubbub::DistributionWorker.perform_async(follow.stream_entry.id)
|
||||
|
||||
follow
|
||||
end
|
||||
|
||||
|
@ -14,8 +14,11 @@ class PostStatusService < BaseService
|
||||
attach_media(status, options[:media_ids])
|
||||
process_mentions_service.call(status)
|
||||
process_hashtags_service.call(status)
|
||||
|
||||
DistributionWorker.perform_async(status.id)
|
||||
HubPingWorker.perform_async(account.id)
|
||||
Pubsubhubbub::DistributionWorker.perform_async(status.stream_entry.id)
|
||||
|
||||
status
|
||||
end
|
||||
|
||||
|
13
app/services/pubsubhubbub/subscribe_service.rb
Normal file
13
app/services/pubsubhubbub/subscribe_service.rb
Normal file
@ -0,0 +1,13 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class Pubsubhubbub::SubscribeService < BaseService
|
||||
def call(account, callback, secret, lease_seconds)
|
||||
return ['Invalid topic URL', 422] if account.nil?
|
||||
return ['Invalid callback URL', 422] unless !callback.blank? && callback =~ /\A#{URI.regexp(%w(http https))}\z/
|
||||
|
||||
subscription = Subscription.where(account: account, callback_url: callback).first_or_create!(account: account, callback_url: callback)
|
||||
Pubsubhubbub::ConfirmationWorker.perform_async(subscription.id, 'subscribe', secret, lease_seconds)
|
||||
|
||||
['', 202]
|
||||
end
|
||||
end
|
15
app/services/pubsubhubbub/unsubscribe_service.rb
Normal file
15
app/services/pubsubhubbub/unsubscribe_service.rb
Normal file
@ -0,0 +1,15 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class Pubsubhubbub::SubscribeService < BaseService
|
||||
def call(account, callback)
|
||||
return ['Invalid topic URL', 422] if account.nil?
|
||||
|
||||
subscription = Subscription.where(account: account, callback_url: callback)
|
||||
|
||||
unless subscription.nil?
|
||||
Pubsubhubbub::ConfirmationWorker.perform_async(subscription.id, 'unsubscribe')
|
||||
end
|
||||
|
||||
['', 202]
|
||||
end
|
||||
end
|
@ -7,8 +7,10 @@ class ReblogService < BaseService
|
||||
# @return [Status]
|
||||
def call(account, reblogged_status)
|
||||
reblog = account.statuses.create!(reblog: reblogged_status, text: '')
|
||||
|
||||
DistributionWorker.perform_async(reblog.id)
|
||||
HubPingWorker.perform_async(account.id)
|
||||
Pubsubhubbub::DistributionWorker.perform_async(reblog.stream_entry.id)
|
||||
|
||||
if reblogged_status.local?
|
||||
NotifyService.new.call(reblogged_status.account, reblog)
|
||||
|
@ -10,6 +10,9 @@ class RemoveStatusService < BaseService
|
||||
remove_from_public(status)
|
||||
|
||||
status.destroy!
|
||||
|
||||
HubPingWorker.perform_async(status.account.id)
|
||||
Pubsubhubbub::DistributionWorker.perform_async(status.stream_entry.id)
|
||||
end
|
||||
|
||||
private
|
||||
|
Reference in New Issue
Block a user