Class: CoinPortfolio::ExchangeClient

Inherits:
Object
  • Object
show all
Defined in:
lib/coin_portfolio/exchange_client.rb

Instance Method Summary collapse

Constructor Details

#initialize(api_key:, api_secret:, client_factory: Coinbase::Wallet::Client) ⇒ ExchangeClient

Returns a new instance of ExchangeClient.



5
6
7
8
9
# File 'lib/coin_portfolio/exchange_client.rb', line 5

def initialize(api_key:, api_secret:, client_factory: Coinbase::Wallet::Client)
  @api_key = api_key
  @api_secret = api_secret
  @client_factory = client_factory
end

Instance Method Details

#priceObject



11
12
13
14
# File 'lib/coin_portfolio/exchange_client.rb', line 11

def price
  sell_price = client.sell_price
  CoinPortfolio::Money.new(amount: BigDecimal.new(sell_price["amount"]), currency: sell_price["currency"])
end

#transactionsObject



16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/coin_portfolio/exchange_client.rb', line 16

def transactions
  transactions_from_client.map do |transaction|
    amount = transaction["amount"]
    money_amount = CoinPortfolio::Money.new(amount: BigDecimal.new(amount["amount"]).abs, currency: amount["currency"])

    native_amount = transaction["native_amount"]
    money_native_amount = CoinPortfolio::Money.new(amount: BigDecimal.new(native_amount["amount"]).abs, currency: native_amount["currency"])

    incoming = amount["amount"][0] != "-"

    CoinPortfolio::Transaction.new(amount: money_amount, native_amount: money_native_amount, incoming: incoming)
  end
end