Class: Cns::Apice
- Inherits:
-
Object
- Object
- Cns::Apice
- Defined in:
- lib/cns/apice.rb
Overview
classe para acesso dados centralized exchanges
Constant Summary collapse
- API =
{de: 'https://api.bitcoin.de/v4', us: 'https://api.kraken.com/0/private'}.freeze
- MDE =
%w[btc eth].freeze
Instance Method Summary collapse
-
#account_de ⇒ Hash
Get account balances from Bitcoin.de.
-
#account_us ⇒ Hash
Get account balances from Kraken.
-
#deposits_de ⇒ Array<Hash>
Get deposits from Bitcoin.de, uniformly formatted.
-
#initialize ⇒ Apice
constructor
A new instance of Apice.
-
#ledger_us(tsp = nil) ⇒ Hash
Get ledger from Kraken.
-
#trades_de(tsp = nil) ⇒ Array<Hash>
Get trades from Bitcoin.de.
-
#trades_us(tsp = nil) ⇒ Hash
Get trades from Kraken.
-
#withdrawals_de ⇒ Array<Hash>
Get withdrawals from Bitcoin.de, uniformly formatted.
Constructor Details
#initialize ⇒ Apice
Returns a new instance of Apice.
15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/cns/apice.rb', line 15 def initialize @curl = Curl::Easy.new.tap do |c| c.timeout = 30 c.connect_timeout = 10 c.follow_location = true c.ssl_verify_peer = true end @deky = ENV.fetch('BITCOINDE_API_KEY', nil) @desc = ENV.fetch('BITCOINDE_API_SECRET', nil) @usky = ENV.fetch('KRAKEN_API_KEY', nil) @ussc = ENV.fetch('KRAKEN_API_SECRET', nil) end |
Instance Method Details
#account_de ⇒ Hash
Get account balances from Bitcoin.de
31 32 33 34 35 36 37 |
# File 'lib/cns/apice.rb', line 31 def account_de uri = "#{API[:de]}/account" rcrl(@curl, uri, headers: hde(uri)) pjsn(@curl).dig(:data, :balances) || {} rescue Curl::Err::CurlError {} end |
#account_us ⇒ Hash
Get account balances from Kraken
75 76 77 78 79 80 81 82 |
# File 'lib/cns/apice.rb', line 75 def account_us uri = 'Balance' ops = {nonce: nnc} rcrl(@curl, "#{API[:us]}/#{uri}", method: 'POST', post_data: ops, headers: hus(uri, ops)) pjsn(@curl).fetch(:result, {}) rescue Curl::Err::CurlError {} end |
#deposits_de ⇒ Array<Hash>
Get deposits from Bitcoin.de, uniformly formatted
53 54 55 56 57 58 59 60 |
# File 'lib/cns/apice.rb', line 53 def deposits_de MDE.flat_map do |cry| pag_de_req("#{API[:de]}/#{cry}/deposits", {}, :deposits) { |i| i.map { |h| deposit_unif(h, cry.upcase) } } end # pag_de_req("#{API[:de]}/btc/deposits", {}, :deposits) { |i| i.map { |h| deposit_unif(h) } } rescue Curl::Err::CurlError [] end |
#ledger_us(tsp = nil) ⇒ Hash
Get ledger from Kraken
102 103 104 105 106 |
# File 'lib/cns/apice.rb', line 102 def ledger_us(tsp = nil) pag_us_req('Ledgers', :ledger, tsp ? {start: tsp} : {}) rescue Curl::Err::CurlError [] end |
#trades_de(tsp = nil) ⇒ Array<Hash>
Get trades from Bitcoin.de
42 43 44 45 46 47 48 49 |
# File 'lib/cns/apice.rb', line 42 def trades_de(tsp = nil) prm = {state: 1} # Bitcoin.de API needs round UTC Time down to nearest 15-minute mark (00,15,30,45) and format as RFC 3339 with +00:00 prm[:date_start] = Time.at(tsp).utc.then { |t| Time.utc(t.year, t.month, t.day, t.hour, 0, 0).strftime('%Y-%m-%dT%H:%M:%S+00:00') } if tsp pag_de_req("#{API[:de]}/trades", prm, :trades) rescue Curl::Err::CurlError [] end |
#trades_us(tsp = nil) ⇒ Hash
Get trades from Kraken
87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/cns/apice.rb', line 87 def trades_us(tsp = nil) # last TradesHistory was 2023-06-03 (after that was discontinued by kraken) if tsp && tsp > Integer(Time.new(2023, 6, 3)) # return empty array to avoid unnecessary API calls [] else pag_us_req('TradesHistory', :trades, tsp ? {start: tsp} : {}) end rescue Curl::Err::CurlError [] end |
#withdrawals_de ⇒ Array<Hash>
Get withdrawals from Bitcoin.de, uniformly formatted
64 65 66 67 68 69 70 71 |
# File 'lib/cns/apice.rb', line 64 def withdrawals_de MDE.flat_map do |cry| pag_de_req("#{API[:de]}/#{cry}/withdrawals", {}, :withdrawals) { |i| i.map { |h| withdrawal_unif(h, cry.upcase) } } end # pag_de_req("#{API[:de]}/btc/withdrawals", {}, :withdrawals) { |i| i.map { |h| withdrawal_unif(h) } } rescue Curl::Err::CurlError [] end |