module Supercharged
  module Helpers
    @gateways = {}

    def self.gateway(name)
      @gateways[name.to_sym] || raise("Gateway not registered")
    end

    def self.init_gateway(name, options)
      klass = gateway_class_by_name(name)
      gateway = klass.new(options)
      add_gateway(name, gateway)
    end

    private

  	def self.gateway_class_by_name(name)
      "ActiveMerchant::Billing::#{name.to_s.camelcase}Gateway".classify.constantize
    rescue NameError
      raise "Unknown gateway '#{name}'"
    end

    def self.add_gateway(name, gateway)
      @gateways[name.to_sym] = gateway
    end
  end
end