Class: Mobius::Client::App

Inherits:
Object
  • Object
show all
Extended by:
Dry::Initializer
Defined in:
lib/mobius/client/app.rb

Overview

Interface to user balance in application.

Instance Method Summary collapse

Constructor Details

#initialize(seed) ⇒ Object

Parameters:

  • seed (String)

    Developers private key.

  • address (String)

    Users public key.



9
# File 'lib/mobius/client/app.rb', line 9

param :seed

Instance Method Details

#app_balanceFloat

Returns application balance.

Returns:

  • (Float)

    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.

Returns:

  • (Bool)

    Authorization status.



14
15
16
# File 'lib/mobius/client/app.rb', line 14

def authorized?
  .authorized?(app_keypair)
end

#balanceFloat

Returns user balance.

Returns:

  • (Float)

    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

Parameters:

  • amount (Float)

    Payment amount.

  • target_address (String) (defaults to: nil)

    Optional: third party receiver address.



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
    [, ].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

Parameters:

  • amount (Float)

    Payment amount.

  • address (String)

    Target address.



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
    [, ].each(&:reload!)
  end
rescue Faraday::ClientError => err
  handle(err)
end