cns 2.1.2 → 2.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2c039a56bcd426903a7ed40cb00b645466cca84e41ef4d7531b759232a86d2da
4
- data.tar.gz: aaea56ea2594357bebc070cecb16b6aff74095af1ddd41253719b94e535bf40e
3
+ metadata.gz: b0deb219876c5a8fd82a5338c9d7635b11356feffcdc908514be211fb0bbc909
4
+ data.tar.gz: b188c18e7a9226bded29d42d0f9142280c94e9230fe7d41ff94d4776dc56222c
5
5
  SHA512:
6
- metadata.gz: 142c33251cbd3229fa3918cb8b514dff1e3adcfdbd041ef737190be6b43b37a227900e66d44eb1aaba54449511de7e990caa3a3a6a9c1dbe3d457f92f2e212a0
7
- data.tar.gz: 02e44cf67cf50d342c48b956b9fd4ae18ae6cb9435673ba31675b241a57e489f3f8251bf37a37991fd6a5547f6590fc7e2c589552dc43e263506067990fc3d59
6
+ metadata.gz: 9833256521bb67118970871725a5ca3da4f5cc371a8aa3d531421238f66510a8040dd778de1a42506b6aeacda1deb581195f449cd883776951ba3b97b2d8bffc
7
+ data.tar.gz: 163a57bfbdfe4ba4a6f864db5ba97266c4e1f5088e2b72543137c20bcc4810bf1799d5bbc03e76aa929c6b8984ad75a212f7756471b1c4c968ba923cb17d8a8c
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cns (2.1.2)
4
+ cns (2.1.4)
5
5
  curb
6
6
  faraday
7
7
  faraday-retry
@@ -213,7 +213,7 @@ PLATFORMS
213
213
  DEPENDENCIES
214
214
  bundler
215
215
  cns!
216
- rake (~> 12.0)
216
+ rake (~> 12.0, >= 0)
217
217
  reek
218
218
  rubocop
219
219
  rubocop-rake
@@ -221,4 +221,4 @@ DEPENDENCIES
221
221
  yard
222
222
 
223
223
  BUNDLED WITH
224
- 2.6.9
224
+ 4.0.6
data/lib/cns/apice.rb CHANGED
@@ -71,17 +71,19 @@ module Cns
71
71
  end
72
72
 
73
73
  # Get trades from Kraken
74
+ # @param [Integer] days optional number of days to fetch trades from (last N days)
74
75
  # @return [Hash] trades kraken
75
- def trades_us
76
- pag_us_req('TradesHistory', :trades)
76
+ def trades_us(days = nil)
77
+ pag_us_req('TradesHistory', :trades, days ? {start: days} : {})
77
78
  rescue Curl::Err::CurlError
78
79
  []
79
80
  end
80
81
 
81
82
  # Get ledger from Kraken
83
+ # @param [Integer] days optional number of days to fetch ledger from (last N days)
82
84
  # @return [Hash] ledger kraken
83
- def ledger_us
84
- pag_us_req('Ledgers', :ledger)
85
+ def ledger_us(days = nil)
86
+ pag_us_req('Ledgers', :ledger, days ? {start: days} : {})
85
87
  rescue Curl::Err::CurlError
86
88
  []
87
89
  end
@@ -102,15 +104,16 @@ module Cns
102
104
  # Generic paginated request handler for Kraken
103
105
  # @param [String] uri API endpoint URI
104
106
  # @param [Symbol] key Key to extract from the result
107
+ # @param [Hash] prm Additional options for the request
105
108
  # @yield [Array<Hash>] Block to process each batch of results
106
109
  # @return [Array<Hash>] Combined results from all pages
107
- def pag_us_req(uri, key)
110
+ def pag_us_req(uri, key, prm = {})
108
111
  ary = []
109
112
  ofs = 0
110
113
  loop do
111
114
  # Rate limiting for page requests (2s in Kraken)
112
115
  sleep(@lpag - Time.now + 2) if @lpag && Time.now - @lpag < 2
113
- ops = {nonce: nnc, ofs: ofs}
116
+ ops = prm.merge({nonce: nnc, ofs: ofs})
114
117
  rcrl(@curl, "#{API[:us]}/#{uri}", method: 'POST', post_data: ops, headers: hus(uri, ops))
115
118
  bth = pjsn(@curl).fetch(:result, {}).fetch(key, []).map { |k, v| us_unif(k, v) }
116
119
  break if bth.empty?
data/lib/cns/bitcoinde.rb CHANGED
@@ -73,7 +73,7 @@ module Cns
73
73
  mo: moe.upcase,
74
74
  ex: vex,
75
75
  bq: vbq,
76
- ok: vex == vbq ? 'OK' : 'NOK'
76
+ ok: vex.round(9) == vbq.round(9) ? 'OK' : 'NOK'
77
77
  )
78
78
  end
79
79
 
data/lib/cns/kraken.rb CHANGED
@@ -26,7 +26,7 @@ module Cns
26
26
  # mosta resumo saldos & transacoes & ajuste dias
27
27
  def mresumo
28
28
  puts("\nKRAKEN\ntipo kraken bigquery")
29
- exd[:sl].sort.each { |key, val| puts(fos(key, val)) }
29
+ exd[:sl].transform_keys { |k| k.downcase.to_sym }.sort_by { |_, v| v }.each { |k, v| puts(fos(k, v)) }
30
30
  mtotais
31
31
 
32
32
  mtrades
@@ -68,17 +68,23 @@ module Cns
68
68
  novxl.sort_by { |i| -i[:srx] }.each { |o| puts(fol(o)) }
69
69
  end
70
70
 
71
- # @param [String] moe codigo kraken da moeda
71
+ # @param [Symbol] moe codigo kraken da moeda
72
+ # @return [String] moeda formatada
73
+ def normalize_moe(moe)
74
+ {xeth: 'ETH', xxbt: 'BTC', zeur: 'EUR'}[moe] || moe.to_s.upcase
75
+ end
76
+
77
+ # @param [Symbol] moe (see normalize_moe)
72
78
  # @param [BigDecimal] sal saldo kraken da moeda
73
79
  # @return [String] texto formatado saldos
74
80
  def fos(moe, sal)
75
- vbq = (bqd[:sl]&.fetch(moe.downcase.to_sym, nil) || 0).to_d
81
+ vbq = (bqd[:sl]&.fetch(moe, nil) || 0).to_d
76
82
  format(
77
83
  '%<mo>-5.5s %<kr>21.9f %<bq>21.9f %<ok>3.3s',
78
- mo: moe.upcase,
84
+ mo: normalize_moe(moe),
79
85
  kr: sal,
80
86
  bq: vbq,
81
- ok: vbq == sal ? 'OK' : 'NOK'
87
+ ok: vbq.round(9) == sal.round(9) ? 'OK' : 'NOK'
82
88
  )
83
89
  end
84
90
 
@@ -119,7 +125,7 @@ module Cns
119
125
  # @param [Hash] itm recursos kraken
120
126
  # @return [Hash<BigDecimal>] moedas & sados
121
127
  def pusa(itm)
122
- itm.select { |k, _| %i[XETH ZEUR].include?(k) }.transform_values { |v| v.to_d }
128
+ itm.select { |k, _| %i[XETH ZEUR XXBT].include?(k) }.transform_values { |v| v.to_d }
123
129
  end
124
130
 
125
131
  # @param [Array<Hash>] htx trades kraken
@@ -149,7 +155,9 @@ module Cns
149
155
 
150
156
  # @return [Hash] dados exchange kraken - saldos & transacoes trades e ledger
151
157
  memoize def exd
152
- {sl: pusa(api.account_us), kt: pust(api.trades_us), kl: pusl(api.ledger_us)}
158
+ # Numero dias para buscar transacoes
159
+ dys = ops&.[](:d)&.positive? ? Integer(Time.now - (ops[:d] * 86_400)) : nil
160
+ {sl: pusa(api.account_us), kt: pust(api.trades_us(dys)), kl: pusl(api.ledger_us(dys))}
153
161
  end
154
162
 
155
163
  # @return [Array<String>] indices trades bigquery
data/lib/cns/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Cns
4
- VERSION = '2.1.2'
4
+ VERSION = '2.1.4'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cns
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.2
4
+ version: 2.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hernâni Rodrigues Vaz