# 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