Class: Veritrans::Result

Inherits:
Object
  • Object
show all
Defined in:
lib/veritrans/result.rb

Direct Known Subclasses

SnapResult

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(response, url, request_options, time) ⇒ Result

Returns a new instance of Result.



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/veritrans/result.rb', line 10

def initialize(response, url, request_options, time)
  begin
    if url =~ %r{/v2/.+/transcript$}
      @data = {}
    else
      @data = Veritrans::Client._json_decode(response.body)

      # Failback for Hash#symbolize_keys
      @data.keys.each do |key|
        @data[(key.to_sym rescue key) || key] = @data.delete(key)
      end
    end

  rescue => e
    Veritrans.logger.info "Error parsing Veritrans response #{e.message}"
    Veritrans.logger.info e.backtrace.join("\n")
    @data = {}
  end

  @time = time
  @status = response.status
  @response = response
  @url = url
  @request_options = request_options
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_name, *args) ⇒ Object



74
75
76
77
78
79
80
# File 'lib/veritrans/result.rb', line 74

def method_missing(method_name, *args)
  if args.size == 0 && @data && @data.has_key?(method_name)
    return @data[method_name]
  else
    super
  end
end

Instance Attribute Details

#dataObject (readonly)

Returns the value of attribute data.



3
4
5
# File 'lib/veritrans/result.rb', line 3

def data
  @data
end

#request_optionsObject (readonly)

Returns the value of attribute request_options.



6
7
8
# File 'lib/veritrans/result.rb', line 6

def request_options
  @request_options
end

#responseObject (readonly)

Returns the value of attribute response.



5
6
7
# File 'lib/veritrans/result.rb', line 5

def response
  @response
end

#statusObject (readonly)

Returns the value of attribute status.



4
5
6
# File 'lib/veritrans/result.rb', line 4

def status
  @status
end

#timeObject (readonly)

Returns the value of attribute time.



7
8
9
# File 'lib/veritrans/result.rb', line 7

def time
  @time
end

#urlObject (readonly)

Returns the value of attribute url.



8
9
10
# File 'lib/veritrans/result.rb', line 8

def url
  @url
end

Instance Method Details

#bodyObject



70
71
72
# File 'lib/veritrans/result.rb', line 70

def body
  response.body
end

#created?Boolean

for VT-Link

Returns:

  • (Boolean)


41
42
43
# File 'lib/veritrans/result.rb', line 41

def created?
  @data[:status_code] == '201'
end

#inspectObject



82
83
84
85
86
# File 'lib/veritrans/result.rb', line 82

def inspect
  time_ms = (@time * 1000).round
  data = @data.inspect.gsub(/:([^\s]+)=>/, "\\1: ")
  "#<#{self.class.to_s}:#{object_id} ^^ status: #{@status} time: #{time_ms}ms ^^ data: #{data}>"
end

#messagesObject



62
63
64
65
66
67
68
# File 'lib/veritrans/result.rb', line 62

def messages
  if @data[:message].present?
    @data[:message].chomp(']').sub(/^\[/, '').split(',').map(&:strip)
  else
    []
  end
end

#redirect_urlObject



54
55
56
# File 'lib/veritrans/result.rb', line 54

def redirect_url
  @data[:redirect_url]
end

#status_codeObject



46
47
48
# File 'lib/veritrans/result.rb', line 46

def status_code
  @data[:status_code].to_i
end

#status_messageObject



50
51
52
# File 'lib/veritrans/result.rb', line 50

def status_message
  @data[:status_message]
end

#success?Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/veritrans/result.rb', line 36

def success?
  @data[:status_code] == '200' || @data[:status_code] == '201' || @data[:status_code] == '407'
end

#transaction_idObject



58
59
60
# File 'lib/veritrans/result.rb', line 58

def transaction_id
  @data[:transaction_id]
end