Class: KasPay::Transaction

Inherits:
Object
  • Object
show all
Defined in:
lib/kaspay/transaction.rb

Overview

Inner class Transaction

Instance Method Summary collapse

Constructor Details

#initialize(trx_id, browser) ⇒ Transaction

Returns a new instance of Transaction.



4
5
6
7
# File 'lib/kaspay/transaction.rb', line 4

def initialize trx_id, browser
   @trx_id = trx_id
   @browser = browser
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args, &block) ⇒ Object



75
76
77
78
79
80
81
82
# File 'lib/kaspay/transaction.rb', line 75

def method_missing(name, *args, &block)
   if data_available?
      super
   else
      data_build
      send(name, *args, &block)
   end
end

Instance Method Details

#data_available?Boolean

Returns:

  • (Boolean)


9
10
11
# File 'lib/kaspay/transaction.rb', line 9

def data_available?
   respond_to? :amount
end

#data_buildObject

To be called only when needed



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/kaspay/transaction.rb', line 14

def data_build
   @browser.goto(KasPay::TRANSACTION_URL + @trx_id)
   data = []
   @browser.tds.each_slice(3){|a, b, c| data << c.text}
   @date = DateTime.parse(data[0] + "T" \
                             + data[1] + "+07:00")
   @trx_id = data[2]
   @trx_type = data[3]
   @remark = data[4]
   @status = data[5]
   m1_in_sym = []
   (instance_variables - [:@browser]).each do |v|
      m1_in_sym << v.to_s.sub(/@/, '').to_sym
   end
   m1_in_sym.each do |m|
      define_singleton_method m do
         eval "@#{m.to_s}"
      end
   end

   non_payment_type = ["Transaction correction", "Topup"]
   unless non_payment_type.include? @trx_type
      @seller = data[6]
      @merchant_trx_id = data[7]
      @product_id = data[8]
      @product_name = data[9]
      @quantity = data[10].gsub(/[^0-9]/, '').to_i
      @description = data[11]
      m2_in_sym = []
      (instance_variables - [:@browser]).each do |v|
         m2_in_sym << v.to_s.sub(/@/, '').to_sym
      end
      m2_in_sym = m2_in_sym - m1_in_sym
      m2_in_sym.each do |m|
         define_singleton_method m do
            eval "@#{m.to_s}"
         end
      end
      @amount = Money.new data[12]
   else
      @amount = Money.new data[6]
   end

   define_singleton_method :amount do
      @amount
   end
end

#inspectObject



71
72
73
# File 'lib/kaspay/transaction.rb', line 71

def inspect
   "#<#{self.class}:0x#{(object_id << 1).to_s(16)} id=#{@trx_id} browser=#{@browser}>"
end

#to_hObject Also known as: to_s



62
63
64
65
66
67
68
69
# File 'lib/kaspay/transaction.rb', line 62

def to_h
   h = {}
   instance_variables.each do |v|
      m_in_sym = v.to_s.sub(/@/, '').to_sym
      h[m_in_sym] = send m_in_sym
   end
   return h
end