class Hamburglar::Gateways::Base

Hamburglar::Gateways::Base is the main class that handles sending API requests to upstream providers. All other gateways should inherit from this class

Attributes

api_url[R]

The API URL

errors[R]

Errors returned when validating or submitting a request

params[R]

The parameters for the API request

response[R]

Response returned by an API call

Public Class Methods

new(params = {}) click to toggle source
# File lib/hamburglar/gateways/base.rb, line 21
def initialize(params = {})
  @params   = Hash[Hamburglar.config.credentials].merge(params)
  @errors   = {}
  @response = {}
end
required_params() click to toggle source

Required parameters for an API call

# File lib/hamburglar/gateways/base.rb, line 33
def self.required_params
  @required_params || []
end
set_required_params(*params) click to toggle source

Set required parameters for an API call

# File lib/hamburglar/gateways/base.rb, line 28
def self.set_required_params(*params)
  @required_params = params
end

Public Instance Methods

submit() click to toggle source

Subclasses need to implement this.

# File lib/hamburglar/gateways/base.rb, line 63
def submit
  raise NotImplementedError
end
valid?(revalidate = false)
Alias for: validate
validate(revalidate = false) click to toggle source

Validate presence of required_params

Returns false if a parameter isn't set

# File lib/hamburglar/gateways/base.rb, line 40
def validate(revalidate = false)
  @validated = false if revalidate
  unless @validated
    @errors[:missing_parameters] = []
    self.class.required_params.each do |req|
      unless @params.has_key?(req)
        @errors[:missing_parameters] << req
      end
    end
    @validated = true
  end
  @errors[:missing_parameters].empty?
end
Also aliased as: valid?
validate!() click to toggle source

Validate presence of required_params

Raises Hamburglar::InvalidRequest if validation fails

# File lib/hamburglar/gateways/base.rb, line 58
def validate!
  validate || raise(Hamburglar::InvalidRequest)
end