Class: PayTrace::API::Gateway

Inherits:
Object
  • Object
show all
Defined in:
lib/paytrace/api/gateway.rb

Overview

Helper for sending requests

Constant Summary collapse

@@debug =
false
@@last_request =
nil
@@last_response =
nil
@@last_response_object =
nil
@@next_response =
nil
@@raise_exceptions =
true

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(connection = nil) ⇒ Gateway

Creates a new gateway object, optionally using a supplied connection object



19
20
21
# File 'lib/paytrace/api/gateway.rb', line 19

def initialize(connection = nil)
  @connection = connection || PayTrace.configuration.connection
end

Instance Attribute Details

#connectionObject

:nodoc:



10
11
12
# File 'lib/paytrace/api/gateway.rb', line 10

def connection
  @connection
end

Class Method Details

.debug=(enable) ⇒ Object

Sets or clears a debug flag to enable testing



24
25
26
# File 'lib/paytrace/api/gateway.rb', line 24

def self.debug=(enable)
  @@debug = enable
end

.last_requestObject

Returns the last request sent (as raw text)



37
38
39
# File 'lib/paytrace/api/gateway.rb', line 37

def self.last_request
  @@last_request
end

.last_responseObject

Returns the last response received (as raw text)



42
43
44
# File 'lib/paytrace/api/gateway.rb', line 42

def self.last_response
  @@last_response
end

.last_response_objectObject

Returns the last response object received



47
48
49
# File 'lib/paytrace/api/gateway.rb', line 47

def self.last_response_object
  @@last_response_object
end

.next_response=(next_response) ⇒ Object

Use this to set the raw text of the next response; only used when debug is true



52
53
54
# File 'lib/paytrace/api/gateway.rb', line 52

def self.next_response=(next_response)
  @@next_response = next_response
end

.raise_exceptions=(raise_exceptions) ⇒ Object

Sets or clears a flag to raise exceptions on receiving server errors



57
58
59
# File 'lib/paytrace/api/gateway.rb', line 57

def self.raise_exceptions=(raise_exceptions)
  @@raise_exceptions = raise_exceptions
end

.reset_traceObject

Clears debug data



29
30
31
32
33
34
# File 'lib/paytrace/api/gateway.rb', line 29

def self.reset_trace
  @@last_request = nil
  @@last_response = nil
  @@last_response_object = nil
  @@next_response = nil
end

Instance Method Details

#send_request(request, multi_value_response_fields = []) ⇒ Object

Sends a request object Params:

  • :multi_value_response_fields – response fields that may have multiple entries for the same key



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/paytrace/api/gateway.rb', line 64

def send_request(request, multi_value_response_fields = [])
  @@last_request = request.to_parms_string if @@debug
  unless (@@debug && @@next_response)
    res = @connection.post PayTrace.configuration.url, parmlist: request.to_parms_string
    raw_response = res.body
  else
    raw_response = @@next_response
  end
  
  @@last_response = raw_response
  response = PayTrace::API::Response.new(raw_response, multi_value_response_fields)
  @@last_response_object = response

  @@next_response = nil # just to be sure

  if @@raise_exceptions && response.has_errors?
    raise PayTrace::Exceptions::ErrorResponse.new(response.get_response())
  else
    response
  end
end