cns 2.1.4 → 2.1.6
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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/cns/apibc.rb +6 -2
- data/lib/cns/apice.rb +27 -12
- data/lib/cns/bitcoinde.rb +4 -1
- data/lib/cns/etherscan.rb +3 -8
- data/lib/cns/kraken.rb +4 -4
- data/lib/cns/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 300bd8b7884a5a043bbf53ac8f0988c18ab4d000ae3b25e553d9ac7bd3bfa062
|
|
4
|
+
data.tar.gz: b9700d5c257cda68e02a5343f3cd1189284bf5cbf535a9fe94403ea58b96aa51
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: df2ffc60bc381a981b74e0b26f454d7d288a39d88e525876ab0dc86e8cb3d7b6296b304c32b0d39217c5a62f492d211540f77c6f4ffb502ac6d38480f8216b2c
|
|
7
|
+
data.tar.gz: 67ed5480a8877d5add19e7cb1adcfa0ea9c70e05a6324eb9df7daf97016a9e94ae7092ce11329132e727ceaccc8cea78707a315be430637caf6520349c166614
|
data/Gemfile.lock
CHANGED
data/lib/cns/apibc.rb
CHANGED
|
@@ -73,11 +73,14 @@ module Cns
|
|
|
73
73
|
|
|
74
74
|
private
|
|
75
75
|
|
|
76
|
-
#
|
|
76
|
+
# cache block number for N days ago to avoid multiple API calls
|
|
77
|
+
# @param [Integer] days number of days in the past to get block number for
|
|
78
|
+
# @return [Integer] ethereum block number corresponding to N days ago
|
|
77
79
|
def start_block(days)
|
|
78
80
|
return 0 if days.nil?
|
|
79
81
|
return @blks[days] if @blks.key?(days)
|
|
80
82
|
|
|
83
|
+
# unix timestamp para obter transacoes 24x60x60 = 86400 segundos
|
|
81
84
|
res = block_req(Integer(Time.now - (days * 86_400)))
|
|
82
85
|
if res[:status] == '1'
|
|
83
86
|
blk = Integer(res[:result], 10)
|
|
@@ -90,7 +93,8 @@ module Cns
|
|
|
90
93
|
0
|
|
91
94
|
end
|
|
92
95
|
|
|
93
|
-
#
|
|
96
|
+
# @param [Integer] timestamp unix timestamp
|
|
97
|
+
# @return [Hash] ethereum block number corresponding to the given timestamp
|
|
94
98
|
def block_req(timestamp)
|
|
95
99
|
prm = {chainid: 1, module: 'block', action: 'getblocknobytime', timestamp: timestamp, closest: 'after', apikey: @esky}
|
|
96
100
|
pjsn(@escn.get('/v2/api', prm))
|
data/lib/cns/apice.rb
CHANGED
|
@@ -36,25 +36,34 @@ module Cns
|
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
# Get trades from Bitcoin.de
|
|
39
|
+
# @param [Integer] tsp optional unix timestamp (start date) to fetch trades from
|
|
39
40
|
# @return [Array<Hash>] trades bitcoinde
|
|
40
|
-
def trades_de
|
|
41
|
-
|
|
41
|
+
def trades_de(tsp = nil)
|
|
42
|
+
prm = {state: 1}
|
|
43
|
+
prm[:date_start] = Time.at(tsp).utc.iso8601 if tsp
|
|
44
|
+
pag_de_req("#{API[:de]}/trades", prm, :trades)
|
|
42
45
|
rescue Curl::Err::CurlError
|
|
43
46
|
[]
|
|
44
47
|
end
|
|
45
48
|
|
|
46
49
|
# Get deposits from Bitcoin.de, uniformly formatted
|
|
50
|
+
# @param [Integer] tsp optional unix timestamp (seconds) to fetch deposits from (start date on bitcoin.de API)
|
|
47
51
|
# @return [Array<Hash>] depositos uniformizados bitcoinde
|
|
48
|
-
def deposits_de
|
|
49
|
-
|
|
52
|
+
def deposits_de(tsp = nil)
|
|
53
|
+
prm = {state: 2}
|
|
54
|
+
prm[:date_start] = Time.at(tsp).utc.iso8601 if tsp
|
|
55
|
+
pag_de_req("#{API[:de]}/btc/deposits", prm, :deposits) { |i| i.map { |h| deposit_unif(h) } }
|
|
50
56
|
rescue Curl::Err::CurlError
|
|
51
57
|
[]
|
|
52
58
|
end
|
|
53
59
|
|
|
54
60
|
# Get withdrawals from Bitcoin.de, uniformly formatted
|
|
61
|
+
# @param [Integer] tsp optional unix timestamp (seconds) to fetch withdrawals from (start date on bitcoin.de API)
|
|
55
62
|
# @return [Array<Hash>] withdrawals uniformizadas bitcoinde
|
|
56
|
-
def withdrawals_de
|
|
57
|
-
|
|
63
|
+
def withdrawals_de(tsp = nil)
|
|
64
|
+
prm = {state: 1}
|
|
65
|
+
prm[:date_start] = Time.at(tsp).utc.iso8601 if tsp
|
|
66
|
+
pag_de_req("#{API[:de]}/btc/withdrawals", prm, :withdrawals) { |i| i.map { |h| withdrawal_unif(h) } }
|
|
58
67
|
rescue Curl::Err::CurlError
|
|
59
68
|
[]
|
|
60
69
|
end
|
|
@@ -71,19 +80,25 @@ module Cns
|
|
|
71
80
|
end
|
|
72
81
|
|
|
73
82
|
# Get trades from Kraken
|
|
74
|
-
# @param [Integer]
|
|
83
|
+
# @param [Integer] tsp optional timestamp to fetch trades from (last N seconds)
|
|
75
84
|
# @return [Hash] trades kraken
|
|
76
|
-
def trades_us(
|
|
77
|
-
|
|
85
|
+
def trades_us(tsp = nil)
|
|
86
|
+
# last TradesHistory was 2023-06-03 (after that was discontinued by kraken)
|
|
87
|
+
if tsp && tsp > Integer(Time.new(2023, 6, 3))
|
|
88
|
+
# return empty array to avoid unnecessary API calls
|
|
89
|
+
[]
|
|
90
|
+
else
|
|
91
|
+
pag_us_req('TradesHistory', :trades, tsp ? {start: tsp} : {})
|
|
92
|
+
end
|
|
78
93
|
rescue Curl::Err::CurlError
|
|
79
94
|
[]
|
|
80
95
|
end
|
|
81
96
|
|
|
82
97
|
# Get ledger from Kraken
|
|
83
|
-
# @param [Integer]
|
|
98
|
+
# @param [Integer] tsp optional timestamp to fetch ledger from (last N seconds)
|
|
84
99
|
# @return [Hash] ledger kraken
|
|
85
|
-
def ledger_us(
|
|
86
|
-
pag_us_req('Ledgers', :ledger,
|
|
100
|
+
def ledger_us(tsp = nil)
|
|
101
|
+
pag_us_req('Ledgers', :ledger, tsp ? {start: tsp} : {})
|
|
87
102
|
rescue Curl::Err::CurlError
|
|
88
103
|
[]
|
|
89
104
|
end
|
data/lib/cns/bitcoinde.rb
CHANGED
|
@@ -8,6 +8,7 @@ module Cns
|
|
|
8
8
|
# classe para processar transacoes trades/ledger do bitcoinde
|
|
9
9
|
class Bitcoinde
|
|
10
10
|
extend Memoist
|
|
11
|
+
|
|
11
12
|
# @return [Array<Hash>] todos os dados bigquery
|
|
12
13
|
# @return [Thor::CoreExt::HashWithIndifferentAccess] opcoes trabalho
|
|
13
14
|
attr_reader :bqd, :ops
|
|
@@ -158,7 +159,9 @@ module Cns
|
|
|
158
159
|
|
|
159
160
|
# @return [Hash] dados exchange bitcoinde - saldos & trades & deposits & withdrawals
|
|
160
161
|
memoize def exd
|
|
161
|
-
|
|
162
|
+
# unix timestamp para obter transacoes 24x60x60 = 86400 segundos
|
|
163
|
+
tsp = ops&.[](:d)&.positive? ? Integer(Time.now - (ops[:d] * 86_400)) : nil
|
|
164
|
+
{sl: pdea(api.account_de), tt: pdet(api.trades_de(tsp)), tl: pdel(api.deposits_de(tsp) + api.withdrawals_de(tsp))}
|
|
162
165
|
end
|
|
163
166
|
|
|
164
167
|
# @return [Array<String>] indices trades bigquery
|
data/lib/cns/etherscan.rb
CHANGED
|
@@ -214,12 +214,6 @@ module Cns
|
|
|
214
214
|
ops[:t] || false
|
|
215
215
|
end
|
|
216
216
|
|
|
217
|
-
# Numero dias para buscar transacoes
|
|
218
|
-
# @return [Integer] days in the past to get transacoes
|
|
219
|
-
def dias
|
|
220
|
-
ops&.[](:d)&.positive? ? ops[:d] : nil
|
|
221
|
-
end
|
|
222
|
-
|
|
223
217
|
# Process timestamp
|
|
224
218
|
# @param [Hash] htx transacao
|
|
225
219
|
# @return [Hash] transaccao filtrada
|
|
@@ -259,13 +253,14 @@ module Cns
|
|
|
259
253
|
# @return [Hash] dados etherscan - address, saldo & transacoes
|
|
260
254
|
def esd(aes)
|
|
261
255
|
acc = aes[:account].downcase
|
|
262
|
-
dys =
|
|
256
|
+
dys = ops&.[](:d)&.positive? ? ops[:d] : nil
|
|
263
257
|
{
|
|
264
258
|
ax: acc,
|
|
265
259
|
sl: aes[:balance].to_d / (10**18),
|
|
266
260
|
tx: ftik(acc, api.norml_es(acc, days: dys)),
|
|
267
261
|
ix: ftik(acc, api.inter_es(acc, days: dys)),
|
|
268
|
-
|
|
262
|
+
# block_es (mining) does not support timestamp filtering
|
|
263
|
+
px: fppp(acc, api.block_es(acc)),
|
|
269
264
|
wx: fwww(acc, api.withw_es(acc, days: dys)),
|
|
270
265
|
kx: ftik(acc, api.token_es(acc, days: dys))
|
|
271
266
|
}
|
data/lib/cns/kraken.rb
CHANGED
|
@@ -48,7 +48,7 @@ module Cns
|
|
|
48
48
|
vkt, vnt = exd[:kt].count, bqd[:nt].count
|
|
49
49
|
vkl, vnl = exd[:kl].count, bqd[:nl].count
|
|
50
50
|
|
|
51
|
-
puts("TRADES #{format('%<a>20i %<b>21i %<o>3.3s', a: vkt, b: vnt, o: vkt == vnt ? 'OK' : 'NOK')}")
|
|
51
|
+
puts("TRADES #{format('%<a>20i %<b>21i %<o>3.3s', a: vkt, b: vnt, o: vkt == vnt ? 'OK' : 'NOK')}") if vkt.positive?
|
|
52
52
|
puts("LEDGER #{format('%<c>20i %<d>21i %<o>3.3s', c: vkl, d: vnl, o: vkl == vnl ? 'OK' : 'NOK')}")
|
|
53
53
|
end
|
|
54
54
|
|
|
@@ -155,9 +155,9 @@ module Cns
|
|
|
155
155
|
|
|
156
156
|
# @return [Hash] dados exchange kraken - saldos & transacoes trades e ledger
|
|
157
157
|
memoize def exd
|
|
158
|
-
#
|
|
159
|
-
|
|
160
|
-
{sl: pusa(api.account_us), kt: pust(api.trades_us(
|
|
158
|
+
# unix timestamp para obter transacoes 24x60x60 = 86400 segundos
|
|
159
|
+
tsp = ops&.[](:d)&.positive? ? Integer(Time.now - (ops[:d] * 86_400)) : nil
|
|
160
|
+
{sl: pusa(api.account_us), kt: pust(api.trades_us(tsp)), kl: pusl(api.ledger_us(tsp))}
|
|
161
161
|
end
|
|
162
162
|
|
|
163
163
|
# @return [Array<String>] indices trades bigquery
|
data/lib/cns/version.rb
CHANGED