catstodon/app/services/pubsubhubbub/unsubscribe_service.rb

32 lines
681 B
Ruby
Raw Normal View History

2016-11-28 13:36:47 +01:00
# frozen_string_literal: true
2016-11-28 18:14:49 +01:00
class Pubsubhubbub::UnsubscribeService < BaseService
attr_reader :account, :callback
2016-11-28 13:36:47 +01:00
def call(account, callback)
@account = account
@callback = Addressable::URI.parse(callback).normalize.to_s
2016-11-28 13:36:47 +01:00
process_unsubscribe
end
private
def process_unsubscribe
if account.nil?
['Invalid topic URL', 422]
else
confirm_unsubscribe unless subscription.nil?
['', 202]
2016-11-28 13:36:47 +01:00
end
end
def confirm_unsubscribe
Pubsubhubbub::ConfirmationWorker.perform_async(subscription.id, 'unsubscribe')
end
2016-11-28 13:36:47 +01:00
def subscription
@_subscription ||= Subscription.find_by(account: account, callback_url: callback)
2016-11-28 13:36:47 +01:00
end
end