class ActiveMerchant::Billing::MultiResponse

Attributes

primary_response[R]
responses[R]

Public Class Methods

new(use_first_response = false) click to toggle source
# File lib/active_merchant/billing/response.rb, line 55
def initialize(use_first_response = false)
  @responses = []
  @use_first_response = use_first_response
  @primary_response = nil
end
run(use_first_response = false, &block) click to toggle source
# File lib/active_merchant/billing/response.rb, line 49
def self.run(use_first_response = false, &block)
  new(use_first_response).tap(&block)
end

Public Instance Methods

<<(response) click to toggle source
# File lib/active_merchant/billing/response.rb, line 76
def <<(response)
  if response.is_a?(MultiResponse)
    response.responses.each { |r| @responses << r }
  else
    @responses << response
  end
end
avs_result() click to toggle source
# File lib/active_merchant/billing/response.rb, line 88
def avs_result
  return @primary_response.try(:avs_result) if @use_first_response

  result = responses.reverse.find { |r| r.avs_result['code'].present? }
  result.try(:avs_result) || responses.last.try(:avs_result)
end
cvv_result() click to toggle source
# File lib/active_merchant/billing/response.rb, line 95
def cvv_result
  return @primary_response.try(:cvv_result) if @use_first_response

  result = responses.reverse.find { |r| r.cvv_result['code'].present? }
  result.try(:cvv_result) || responses.last.try(:cvv_result)
end
process(ignore_result = false) { || ... } click to toggle source
# File lib/active_merchant/billing/response.rb, line 61
def process(ignore_result = false)
  return unless success?

  response = yield
  self << response

  unless ignore_result
    if @use_first_response && response.success?
      @primary_response ||= response
    else
      @primary_response = response
    end
  end
end
success?() click to toggle source
# File lib/active_merchant/billing/response.rb, line 84
def success?
  (primary_response ? primary_response.success? : true)
end