class TransactPro::Gateway

Attributes

options[R]

Public Class Methods

new(options) click to toggle source
# File lib/transact_pro/gateway.rb, line 4
def initialize(options)
  test = TransactPro::DEFAULTS[:TEST] || !!options[:TEST]
  verbose = !!options[:VERBOSE]

  env_key = (test ? :TEST_ENV : :PRODUCTION_ENV)

  @options = {
    pwd: Digest::SHA1.hexdigest(options[:PASSWORD].to_s),
    guid: options[:GUID].to_s
  }.merge(TransactPro::DEFAULTS[env_key])

  @options.merge!(options.merge(TEST: test, VERBOSE: verbose))

  unless @options[:GUID].to_s[%r'\A(?:\w){4}-(?:\w){4}-(?:\w){4}-(?:\w){4}\z']
    raise ArgumentError.new(
      "'#{@options[:GUID]}' is not a valid GUID for a gateway"
    )
  end

  unless @options[:PASSWORD].to_s.size > 0
    raise ArgumentError.new(
      "'#{@options[:PASSWORD]}' is not a valid PASSWORD for a gateway"
    )
  end

  if @options[:ACCOUNT_3D].to_s.size < 1 && @options[:ACCOUNT_NON3D].to_s.size < 1
    raise ArgumentError.new(
      "As a minimum specify a ACCOUNT_3D or a ACCOUNT_NON3D for a gateway"
    )
  end
end

Public Instance Methods

request(request_options) click to toggle source
# File lib/transact_pro/gateway.rb, line 36
def request(request_options)
  TransactPro::Request.new(options.merge(request_options))
end