Class: Transaction::Client
- Inherits:
-
Object
- Object
- Transaction::Client
- Defined in:
- lib/transaction.rb
Instance Attribute Summary collapse
-
#attributes ⇒ Object
readonly
Returns the value of attribute attributes.
-
#status ⇒ Object
readonly
Returns the value of attribute status.
-
#transaction_id ⇒ Object
readonly
Returns the value of attribute transaction_id.
Instance Method Summary collapse
- #clear! ⇒ Object
- #finish!(status = 'success', clear = false) ⇒ Object
-
#initialize(transaction_id: nil, options: {}) ⇒ Client
constructor
A new instance of Client.
- #refresh! ⇒ Object
- #start! ⇒ Object
- #update_attributes(options) ⇒ Object
- #update_status(status) ⇒ Object
Constructor Details
#initialize(transaction_id: nil, options: {}) ⇒ Client
Returns a new instance of Client.
35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/transaction.rb', line 35 def initialize(transaction_id: nil, options: {}) @transaction_id = transaction_id || "transact-#{SecureRandom.urlsafe_base64(16)}" @redis_client = Transaction.redis = DEFAULT_ATTRIBUTES.merge() @attributes = parsed_attributes || {} update_attributes() if @attributes.empty? @status = @attributes[:status].to_s end |
Instance Attribute Details
#attributes ⇒ Object (readonly)
Returns the value of attribute attributes.
33 34 35 |
# File 'lib/transaction.rb', line 33 def attributes @attributes end |
#status ⇒ Object (readonly)
Returns the value of attribute status.
33 34 35 |
# File 'lib/transaction.rb', line 33 def status @status end |
#transaction_id ⇒ Object (readonly)
Returns the value of attribute transaction_id.
33 34 35 |
# File 'lib/transaction.rb', line 33 def transaction_id @transaction_id end |
Instance Method Details
#clear! ⇒ Object
75 76 77 78 |
# File 'lib/transaction.rb', line 75 def clear! @attributes = @status = nil redis_delete end |
#finish!(status = 'success', clear = false) ⇒ Object
69 70 71 72 73 |
# File 'lib/transaction.rb', line 69 def finish!(status = 'success', clear = false) update_status(status) redis_delete if clear end |
#refresh! ⇒ Object
80 81 82 83 84 85 |
# File 'lib/transaction.rb', line 80 def refresh! @attributes = parsed_attributes raise StandardError, 'Transaction expired' if @attributes.nil? @status = @attributes[:status].to_s end |
#start! ⇒ Object
65 66 67 |
# File 'lib/transaction.rb', line 65 def start! update_status(:processing) end |
#update_attributes(options) ⇒ Object
48 49 50 51 52 53 54 55 56 |
# File 'lib/transaction.rb', line 48 def update_attributes() unless .is_a? Hash raise ArgumentError, 'Invalid type. Expected Hash' end @attributes = symbolize_keys!(@attributes.merge!()) redis_set(@transaction_id, @attributes.to_json) @status = @attributes[:status].to_s end |
#update_status(status) ⇒ Object
58 59 60 61 62 63 |
# File 'lib/transaction.rb', line 58 def update_status(status) status = status.to_sym raise 'Invalid Status' unless STATUSES.include?(status.to_sym) update_attributes(status: status) end |