Class: Mobius::Client::App
- Inherits:
-
Object
- Object
- Mobius::Client::App
- Extended by:
- Dry::Initializer
- Defined in:
- lib/mobius/client/app.rb
Overview
Interface to user balance in application.
Instance Method Summary collapse
-
#app_balance ⇒ Float
Returns application balance.
-
#authorized? ⇒ Bool
Checks if developer is authorized to use an application.
-
#balance ⇒ Float
Returns user balance.
- #initialize(seed) ⇒ Object constructor
-
#pay(amount, target_address: nil) ⇒ Object
Makes payment.
-
#transfer(amount, address) ⇒ Object
Sends money from application account to third party.
Constructor Details
#initialize(seed) ⇒ Object
9 |
# File 'lib/mobius/client/app.rb', line 9 param :seed |
Instance Method Details
#app_balance ⇒ Float
Returns application balance.
27 28 29 |
# File 'lib/mobius/client/app.rb', line 27 def app_balance app_balance_object["balance"].to_f end |
#authorized? ⇒ Bool
Checks if developer is authorized to use an application.
14 15 16 |
# File 'lib/mobius/client/app.rb', line 14 def user_account.(app_keypair) end |
#balance ⇒ Float
Returns user balance.
20 21 22 23 |
# File 'lib/mobius/client/app.rb', line 20 def balance validate! balance_object["balance"].to_f end |
#pay(amount, target_address: nil) ⇒ Object
Makes payment. rubocop:disable Metrics/AbcSize
35 36 37 38 39 40 41 42 43 44 |
# File 'lib/mobius/client/app.rb', line 35 def pay(amount, target_address: nil) current_balance = balance raise Mobius::Client::Error::InsufficientFunds if current_balance < amount.to_f envelope_base64 = payment_tx(amount.to_f, target_address).to_envelope(app_keypair).to_xdr(:base64) post_tx(envelope_base64).tap do [app_account, user_account].each(&:reload!) end rescue Faraday::ClientError => err handle(err) end |
#transfer(amount, address) ⇒ Object
Sends money from application account to third party. rubocop:disable Metrics/AbcSize
51 52 53 54 55 56 57 58 59 60 |
# File 'lib/mobius/client/app.rb', line 51 def transfer(amount, address) current_balance = app_balance raise Mobius::Client::Error::InsufficientFunds if current_balance < amount.to_f envelope_base64 = transfer_tx(amount.to_f, address).to_envelope(app_keypair).to_xdr(:base64) post_tx(envelope_base64).tap do [app_account, user_account].each(&:reload!) end rescue Faraday::ClientError => err handle(err) end |