unsubscribe_service.rb (681B)
- # frozen_string_literal: true
- class Pubsubhubbub::UnsubscribeService < BaseService
- attr_reader :account, :callback
- def call(account, callback)
- @account = account
- @callback = Addressable::URI.parse(callback).normalize.to_s
- process_unsubscribe
- end
- private
- def process_unsubscribe
- if account.nil?
- ['Invalid topic URL', 422]
- else
- confirm_unsubscribe unless subscription.nil?
- ['', 202]
- end
- end
- def confirm_unsubscribe
- Pubsubhubbub::ConfirmationWorker.perform_async(subscription.id, 'unsubscribe')
- end
- def subscription
- @_subscription ||= Subscription.find_by(account: account, callback_url: callback)
- end
- end