joshmn/caffeinate

View on GitHub
app/controllers/caffeinate/campaign_subscriptions_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

module Caffeinate
  class CampaignSubscriptionsController < ApplicationController
    layout '_caffeinate'

    helper_method :caffeinate_unsubscribe_url, :caffeinate_subscribe_url

    before_action :find_campaign_subscription!

    def unsubscribe
      @campaign_subscription.unsubscribe!(true)
    end

    def subscribe
      @campaign_subscription.resubscribe!(true)
    end

    private

    def caffeinate_subscribe_url(**options)
      Caffeinate::UrlHelpers.caffeinate_subscribe_url(@campaign_subscription, **options)
    end

    def caffeinate_unsubscribe_url(**options)
      Caffeinate::UrlHelpers.caffeinate_unsubscribe_url(@campaign_subscription, **options)
    end

    def find_campaign_subscription!
      @campaign_subscription = ::Caffeinate::CampaignSubscription.find_by(token: params[:token])
      raise ::ActiveRecord::RecordNotFound if @campaign_subscription.nil?
    end
  end
end