module Payola

Constants

DEFAULT_EMAILS
VERSION

Attributes

additional_charge_attributes[RW]
background_worker[RW]
charge_verifier[RW]
create_stripe_plans[RW]
default_currency[RW]
default_tax_percent[RW]
event_filter[RW]
guid_generator[RW]
pdf_receipt[RW]
publishable_key[RW]
publishable_key_retriever[RW]
secret_key[RW]
secret_key_retriever[RW]
sellables[RW]
subscribables[RW]
support_email[RW]

Public Class Methods

all(callable = Proc.new) click to toggle source
# File lib/payola.rb, line 57
def all(callable = Proc.new)
  StripeEvent.all(callable)
end
configure() { |self| ... } click to toggle source
# File lib/payola.rb, line 36
def configure(&block)
  raise ArgumentError, "must provide a block" unless block_given?
  block.arity.zero? ? instance_eval(&block) : yield(self)
end
instrument(name, object) click to toggle source
# File lib/payola.rb, line 53
def instrument(name, object)
  StripeEvent.backend.instrument(StripeEvent.namespace.call(name), object)
end
publishable_key_for_sale(sale) click to toggle source
# File lib/payola.rb, line 45
def publishable_key_for_sale(sale)
  return publishable_key_retriever.call(sale).to_s
end
queue!(klass, *args) click to toggle source
# File lib/payola.rb, line 61
def queue!(klass, *args)
  if background_worker.is_a? Symbol
    Payola::Worker.find(background_worker).call(klass, *args)
  elsif background_worker.respond_to?(:call)
    background_worker.call(klass, *args)
  else
    Payola::Worker.autofind.call(klass, *args)
  end
end
register_sellable(klass) click to toggle source
# File lib/payola.rb, line 97
def register_sellable(klass)
  sellables[klass.product_class] = klass
end
register_subscribable(klass) click to toggle source
# File lib/payola.rb, line 101
def register_subscribable(klass)
  subscribables[klass.plan_class] = klass
end
reset!() click to toggle source
# File lib/payola.rb, line 75
def reset!
  StripeEvent.event_retriever = Retriever
  Stripe.api_version = ENV['STRIPE_API_VERSION'] || '2015-02-18'

  self.background_worker = nil
  self.event_filter = lambda { |event| event }
  self.charge_verifier = lambda { |event| true }
  self.publishable_key = EnvWrapper.new('STRIPE_PUBLISHABLE_KEY')
  self.secret_key = EnvWrapper.new('STRIPE_SECRET_KEY')
  self.secret_key_retriever = lambda { |sale| Payola.secret_key  }
  self.publishable_key_retriever = lambda { |sale| Payola.publishable_key }
  self.support_email = 'sales@example.com'
  self.default_currency = 'usd'
  self.default_tax_percent = nil
  self.sellables = {}
  self.subscribables = {}
  self.additional_charge_attributes = lambda { |sale, customer| { } }
  self.pdf_receipt = false
  self.guid_generator = lambda { SecureRandom.random_number(1_000_000_000).to_s(32) }
  self.create_stripe_plans = true
end
secret_key_for_sale(sale) click to toggle source
# File lib/payola.rb, line 41
def secret_key_for_sale(sale)
  return secret_key_retriever.call(sale).to_s
end
send_email_for(*emails) click to toggle source
# File lib/payola.rb, line 105
def send_email_for(*emails)
  emails.each do |email|
    spec = DEFAULT_EMAILS[email].dup
    if spec
      Payola.subscribe(spec.shift) do |sale|
        if sale.is_a?(Stripe::Event)
          sale = Payola::Sale.find_by!(stripe_id: sale.data.object.id)
        end

        Payola.send_mail(*(spec + [sale.guid]))
      end
    end
  end
end
send_mail(mailer, method, *args) click to toggle source
# File lib/payola.rb, line 71
def send_mail(mailer, method, *args)
  Payola.queue!(Payola::SendMail, mailer.to_s, method.to_s, *args)
end
subscribe(name, callable = Proc.new) click to toggle source
# File lib/payola.rb, line 49
def subscribe(name, callable = Proc.new)
  StripeEvent.subscribe(name, callable)
end