Class: KasPay::Transaction
- Inherits:
-
Object
- Object
- KasPay::Transaction
- Defined in:
- lib/kaspay/transaction.rb
Overview
Inner class Transaction
Instance Method Summary collapse
- #data_available? ⇒ Boolean
-
#data_build ⇒ Object
To be called only when needed.
-
#initialize(trx_id, browser) ⇒ Transaction
constructor
A new instance of Transaction.
- #inspect ⇒ Object
- #method_missing(name, *args, &block) ⇒ Object
- #to_h ⇒ Object (also: #to_s)
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
9 10 11 |
# File 'lib/kaspay/transaction.rb', line 9 def data_available? respond_to? :amount end |
#data_build ⇒ Object
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 |
#inspect ⇒ Object
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_h ⇒ Object 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 |