cns 0.1.5 → 0.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/.reek.yml +64 -0
- data/.rubocop.yml +4 -3
- data/Gemfile.lock +19 -13
- data/cns.gemspec +1 -0
- data/lib/cns/apibc.rb +34 -48
- data/lib/cns/apice1.rb +22 -72
- data/lib/cns/apice2.rb +82 -39
- data/lib/cns/bigquery1.rb +5 -4
- data/lib/cns/bigquery3.rb +62 -47
- data/lib/cns/bigquery4.rb +51 -54
- data/lib/cns/bitcoinde.rb +21 -20
- data/lib/cns/etherscan1.rb +21 -19
- data/lib/cns/etherscan2.rb +7 -7
- data/lib/cns/greymass1.rb +23 -18
- data/lib/cns/greymass2.rb +8 -26
- data/lib/cns/kraken.rb +21 -20
- data/lib/cns/paymium.rb +15 -15
- data/lib/cns/therock.rb +16 -15
- data/lib/cns/version.rb +1 -1
- metadata +17 -2
data/lib/cns/bitcoinde.rb
CHANGED
@@ -27,25 +27,25 @@ module Cns
|
|
27
27
|
|
28
28
|
# @return [Array<Hash>] lista trades bitcoinde novos
|
29
29
|
def trades
|
30
|
-
@trades ||= exd[:tt].select { |
|
30
|
+
@trades ||= exd[:tt].select { |obj| kyt.include?(obj[:trade_id]) }
|
31
31
|
end
|
32
32
|
|
33
33
|
# @return [Array<Hash>] lista ledger (deposits + withdrawals) bitcoinde novos
|
34
34
|
def ledger
|
35
|
-
@ledger ||= exd[:tl].select { |
|
35
|
+
@ledger ||= exd[:tl].select { |obj| kyl.include?(obj[:txid]) }
|
36
36
|
end
|
37
37
|
|
38
38
|
# @return [String] texto saldos & transacoes & ajuste dias
|
39
39
|
def mostra_resumo
|
40
40
|
puts("\nBITCOINDE\ntipo bitcoinde bigquery")
|
41
|
-
exd[:sl].each { |
|
41
|
+
exd[:sl].each { |key, val| puts(formata_saldos(key, val)) }
|
42
42
|
mostra_totais
|
43
43
|
|
44
44
|
mostra_trades
|
45
45
|
mostra_ledger
|
46
46
|
return if trades.empty?
|
47
47
|
|
48
|
-
puts("\nstring ajuste dias dos trades\n-h=#{kyt.map { |
|
48
|
+
puts("\nstring ajuste dias dos trades\n-h=#{kyt.map { |obj| "#{obj}:0" }.join(' ')}")
|
49
49
|
end
|
50
50
|
|
51
51
|
# @return [Hash] dados exchange bitcoinde - saldos & trades & deposits & withdrawals
|
@@ -59,12 +59,12 @@ module Cns
|
|
59
59
|
|
60
60
|
# @return [Array<String>] lista txid dos trades novos
|
61
61
|
def kyt
|
62
|
-
@kyt ||= exd[:tt].map { |
|
62
|
+
@kyt ||= exd[:tt].map { |oex| oex[:trade_id] }.flatten - (ops[:t] ? [] : bqd[:nt].map { |obq| obq[:txid] })
|
63
63
|
end
|
64
64
|
|
65
65
|
# @return [Array<Integer>] lista txid dos ledger novos
|
66
66
|
def kyl
|
67
|
-
@kyl ||= exd[:tl].map { |
|
67
|
+
@kyl ||= exd[:tl].map { |oex| oex[:txid] }.flatten - (ops[:t] ? [] : bqd[:nl].map { |obq| obq[:txid] })
|
68
68
|
end
|
69
69
|
|
70
70
|
# @example (see Apice#account_de)
|
@@ -72,14 +72,14 @@ module Cns
|
|
72
72
|
# @param [Hash] hsx saldo bitcoinde da moeda
|
73
73
|
# @return [String] texto formatado saldos
|
74
74
|
def formata_saldos(moe, hsx)
|
75
|
-
|
76
|
-
|
75
|
+
vbq = bqd[:sl][moe.downcase.to_sym].to_d
|
76
|
+
vex = hsx[:total_amount].to_d
|
77
77
|
format(
|
78
78
|
'%<mo>-5.5s %<ex>21.9f %<bq>21.9f %<ok>3.3s',
|
79
79
|
mo: moe.upcase,
|
80
|
-
ex:
|
81
|
-
bq:
|
82
|
-
ok:
|
80
|
+
ex: vex,
|
81
|
+
bq: vbq,
|
82
|
+
ok: vex == vbq ? 'OK' : 'NOK'
|
83
83
|
)
|
84
84
|
end
|
85
85
|
|
@@ -117,13 +117,13 @@ module Cns
|
|
117
117
|
|
118
118
|
# @return [String] texto numero de transacoes
|
119
119
|
def mostra_totais
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
120
|
+
vtt = exd[:tt].count
|
121
|
+
vnt = bqd[:nt].count
|
122
|
+
vtl = exd[:tl].count
|
123
|
+
vnl = bqd[:nl].count
|
124
124
|
|
125
|
-
puts("TRADES #{format('%<a>20i %<b>21i %<o>3.3s', a:
|
126
|
-
puts("LEDGER #{format('%<c>20i %<d>21i %<o>3.3s', c:
|
125
|
+
puts("TRADES #{format('%<a>20i %<b>21i %<o>3.3s', a: vtt, b: vnt, o: vtt == vnt ? 'OK' : 'NOK')}")
|
126
|
+
puts("LEDGER #{format('%<c>20i %<d>21i %<o>3.3s', c: vtl, d: vnl, o: vtl == vnl ? 'OK' : 'NOK')}")
|
127
127
|
end
|
128
128
|
|
129
129
|
# @return [String] texto transacoes trades
|
@@ -131,8 +131,9 @@ module Cns
|
|
131
131
|
return unless ops[:v] && !trades.empty?
|
132
132
|
|
133
133
|
puts("\ntrades data hora dt criacao tipo par qtd eur")
|
134
|
-
trades
|
135
|
-
|
134
|
+
trades
|
135
|
+
.sort { |ant, prx| Time.parse(prx[:successfully_finished_at]) <=> Time.parse(ant[:successfully_finished_at]) }
|
136
|
+
.each { |obj| puts(formata_trades(obj)) }
|
136
137
|
end
|
137
138
|
|
138
139
|
# @return [String] texto transacoes ledger
|
@@ -140,7 +141,7 @@ module Cns
|
|
140
141
|
return unless ops[:v] && !ledger.empty?
|
141
142
|
|
142
143
|
puts("\nledger data hora tipo moe quantidade custo")
|
143
|
-
ledger.sort { |
|
144
|
+
ledger.sort { |ant, prx| prx[:time] <=> ant[:time] }.each { |obj| puts(formata_ledger(obj)) }
|
144
145
|
end
|
145
146
|
end
|
146
147
|
end
|
data/lib/cns/etherscan1.rb
CHANGED
@@ -29,49 +29,51 @@ module Cns
|
|
29
29
|
|
30
30
|
# @return [Array<Hash>] lista transacoes normais novas
|
31
31
|
def novtx
|
32
|
-
@novtx ||= bcd.map { |
|
32
|
+
@novtx ||= bcd.map { |obc| obc[:tx].select { |obj| idt.include?(obj[:itx]) } }.flatten
|
33
33
|
end
|
34
34
|
|
35
35
|
# @return [Array<Hash>] lista transacoes token novas
|
36
36
|
def novkx
|
37
|
-
@novkx ||= bcd.map { |
|
37
|
+
@novkx ||= bcd.map { |obc| obc[:kx].select { |obj| idk.include?(obj[:itx]) } }.flatten
|
38
38
|
end
|
39
39
|
|
40
40
|
# @return [Array<String>] lista dos meus enderecos
|
41
41
|
def lax
|
42
|
-
@lax ||= bqd[:wb].map { |
|
42
|
+
@lax ||= bqd[:wb].map { |obj| obj[:ax] }
|
43
43
|
end
|
44
44
|
|
45
45
|
# @return [Array<Hash>] todos os dados etherscan - saldos & transacoes
|
46
46
|
def bcd
|
47
|
-
@bcd ||= api.account_es(lax).map { |
|
47
|
+
@bcd ||= api.account_es(lax).map { |obj| base_bc(obj) }
|
48
48
|
end
|
49
49
|
|
50
50
|
# @return [Array<Hash>] todos os dados juntos bigquery & etherscan
|
51
51
|
def dados
|
52
|
-
@dados ||= bqd[:wb].map { |
|
52
|
+
@dados ||= bqd[:wb].map { |obq| bq_bc(obq, bcd.select { |obc| obq[:ax] == obc[:ax] }.first) }
|
53
53
|
end
|
54
54
|
|
55
55
|
# @return [Array<Integer>] lista indices transacoes normais novas
|
56
56
|
def idt
|
57
|
-
@idt ||=
|
57
|
+
@idt ||= bcd.map { |obc| obc[:tx].map { |obj| obj[:itx] } }.flatten -
|
58
|
+
(ops[:t] ? [] : bqd[:nt].map { |obq| obq[:itx] })
|
58
59
|
end
|
59
60
|
|
60
61
|
# @return [Array<Integer>] lista indices transacoes token novas
|
61
62
|
def idk
|
62
|
-
@idk ||=
|
63
|
+
@idk ||= bcd.map { |obc| obc[:kx].map { |obj| obj[:itx] } }.flatten -
|
64
|
+
(ops[:t] ? [] : bqd[:nk].map { |obq| obq[:itx] })
|
63
65
|
end
|
64
66
|
|
65
67
|
# @example (see Apibc#account_es)
|
66
68
|
# @param [Hash] abc account etherscan
|
67
69
|
# @return [Hash] dados etherscan - address, saldo & transacoes
|
68
70
|
def base_bc(abc)
|
69
|
-
|
71
|
+
acc = abc[:account]
|
70
72
|
{
|
71
|
-
ax:
|
73
|
+
ax: acc,
|
72
74
|
sl: (abc[:balance].to_d / 10**18).round(10),
|
73
|
-
tx: filtrar_tx(
|
74
|
-
kx: filtrar_tx(
|
75
|
+
tx: filtrar_tx(acc, api.norml_es(acc)),
|
76
|
+
kx: filtrar_tx(acc, api.token_es(acc))
|
75
77
|
}
|
76
78
|
end
|
77
79
|
|
@@ -81,10 +83,10 @@ module Cns
|
|
81
83
|
def bq_bc(wbq, hbc)
|
82
84
|
{
|
83
85
|
id: wbq[:id],
|
84
|
-
ax: wbq[:ax],
|
86
|
+
ax: xbq = wbq[:ax],
|
85
87
|
bs: wbq[:sl],
|
86
|
-
bt: bqd[:nt].select { |
|
87
|
-
bk: bqd[:nk].select { |
|
88
|
+
bt: bqd[:nt].select { |ont| ont[:iax] == xbq },
|
89
|
+
bk: bqd[:nk].select { |onk| onk[:iax] == xbq },
|
88
90
|
es: hbc[:sl],
|
89
91
|
et: hbc[:tx],
|
90
92
|
ek: hbc[:kx]
|
@@ -97,23 +99,23 @@ module Cns
|
|
97
99
|
def filtrar_tx(add, ary)
|
98
100
|
# elimina transferencia from: (lax) to: (add) - esta transferencia aparece em from: (add) to: (lax)
|
99
101
|
# elimina chaves irrelevantes (DL) & adiciona chave indice itx & adiciona identificador da carteira iax
|
100
|
-
ary.delete_if { |
|
101
|
-
.map { |
|
102
|
+
ary.delete_if { |odl| odl[:to] == add && lax.include?(odl[:from]) }
|
103
|
+
.map { |omp| omp.delete_if { |key, _| DL.include?(key) }.merge(itx: Integer(omp[:blockNumber]), iax: add) }
|
102
104
|
end
|
103
105
|
|
104
106
|
# @return [Array<Hash>] lista ordenada transacoes normais novas
|
105
107
|
def sortx
|
106
|
-
novtx.sort { |
|
108
|
+
novtx.sort { |ant, prx| ant[:itx] <=> prx[:itx] }
|
107
109
|
end
|
108
110
|
|
109
111
|
# @return [Array<Hash>] lista ordenada transacoes token novas
|
110
112
|
def sorkx
|
111
|
-
novkx.sort { |
|
113
|
+
novkx.sort { |ant, prx| ant[:itx] <=> prx[:itx] }
|
112
114
|
end
|
113
115
|
|
114
116
|
# @return [Array<Hash>] lista ordenada transacoes (normais & token) novas
|
115
117
|
def sorax
|
116
|
-
(novtx + novkx).sort { |
|
118
|
+
(novtx + novkx).sort { |ant, prx| ant[:itx] <=> prx[:itx] }
|
117
119
|
end
|
118
120
|
end
|
119
121
|
end
|
data/lib/cns/etherscan2.rb
CHANGED
@@ -9,7 +9,7 @@ module Cns
|
|
9
9
|
return unless dados.count.positive?
|
10
10
|
|
11
11
|
puts("\nid address etherscan nm tk bigquery nm tk")
|
12
|
-
dados.each { |
|
12
|
+
dados.each { |obj| puts(formata_carteira(obj)) }
|
13
13
|
mostra_transacao_norml
|
14
14
|
mostra_transacao_token
|
15
15
|
mostra_configuracao_ajuste_dias
|
@@ -52,9 +52,9 @@ module Cns
|
|
52
52
|
# @param [Integer] max chars a mostrar
|
53
53
|
# @return [String] endereco formatado
|
54
54
|
def formata_endereco(add, max)
|
55
|
-
|
56
|
-
|
57
|
-
max < 7 ? 'erro' : "#{
|
55
|
+
int = Integer((max - 2) / 2)
|
56
|
+
hid = (max <= 20 ? bqd[:wb].select { |obj| obj[:ax] == add }.first : nil) || { id: add }
|
57
|
+
max < 7 ? 'erro' : "#{hid[:id][0, int - 3]}..#{add[-int - 3..]}"
|
58
58
|
end
|
59
59
|
|
60
60
|
# @example (see Apibc#norml_es)
|
@@ -91,7 +91,7 @@ module Cns
|
|
91
91
|
return unless ops[:v] && novtx.count.positive?
|
92
92
|
|
93
93
|
puts("\ntx normal from to data valor")
|
94
|
-
sortx.each { |
|
94
|
+
sortx.each { |obj| puts(formata_transacao_norml(obj)) }
|
95
95
|
end
|
96
96
|
|
97
97
|
# @return [String] texto transacoes token
|
@@ -99,14 +99,14 @@ module Cns
|
|
99
99
|
return unless ops[:v] && novkx.count.positive?
|
100
100
|
|
101
101
|
puts("\ntx token from to data valor")
|
102
|
-
sorkx.each { |
|
102
|
+
sorkx.each { |obj| puts(formata_transacao_token(obj)) }
|
103
103
|
end
|
104
104
|
|
105
105
|
# @return [String] texto configuracao ajuste dias das transacoes (normais & token)
|
106
106
|
def mostra_configuracao_ajuste_dias
|
107
107
|
return unless (novtx.count + novkx.count).positive?
|
108
108
|
|
109
|
-
puts("\nstring ajuste dias\n-h=#{sorax.map { |
|
109
|
+
puts("\nstring ajuste dias\n-h=#{sorax.map { |obj| "#{obj[:blockNumber]}:0" }.join(' ')}")
|
110
110
|
end
|
111
111
|
end
|
112
112
|
end
|
data/lib/cns/greymass1.rb
CHANGED
@@ -27,38 +27,39 @@ module Cns
|
|
27
27
|
|
28
28
|
# @return [Array<Hash>] lista transacoes novas
|
29
29
|
def novax
|
30
|
-
@novax ||= bcd.map { |
|
30
|
+
@novax ||= bcd.map { |obc| obc[:tx].select { |obj| idt.include?(obj[:itx]) } }.flatten
|
31
31
|
end
|
32
32
|
|
33
33
|
# @return [Array<String>] lista dos meus enderecos
|
34
34
|
def lax
|
35
|
-
@lax ||= bqd[:wb].map { |
|
35
|
+
@lax ||= bqd[:wb].map { |obj| obj[:ax] }
|
36
36
|
end
|
37
37
|
|
38
38
|
# @return [Array<Hash>] todos os dados greymass - saldos & transacoes
|
39
39
|
def bcd
|
40
|
-
@bcd ||= bqd[:wb].map { |
|
40
|
+
@bcd ||= bqd[:wb].map { |obj| base_bc(obj) }
|
41
41
|
end
|
42
42
|
|
43
43
|
# @return [Array<Hash>] todos os dados juntos bigquery & greymass
|
44
44
|
def dados
|
45
|
-
@dados ||= bqd[:wb].map { |
|
45
|
+
@dados ||= bqd[:wb].map { |obq| bq_bc(obq, bcd.select { |obj| obq[:ax] == obj[:ax] }.first) }
|
46
46
|
end
|
47
47
|
|
48
48
|
# @return [Array<Integer>] lista indices transacoes novas
|
49
49
|
def idt
|
50
|
-
@idt ||=
|
50
|
+
@idt ||= bcd.map { |obc| obc[:tx].map { |obj| obj[:itx] } }.flatten -
|
51
|
+
(ops[:t] ? [] : bqd[:nt].map { |obq| obq[:itx] })
|
51
52
|
end
|
52
53
|
|
53
54
|
# @example (see Apibc#account_gm)
|
54
55
|
# @param [Hash] wbq wallet bigquery
|
55
56
|
# @return [Hash] dados greymass - address, saldo & transacoes
|
56
57
|
def base_bc(wbq)
|
57
|
-
|
58
|
+
xbq = wbq[:ax]
|
58
59
|
{
|
59
|
-
ax:
|
60
|
-
sl: greymass_sl(
|
61
|
-
tx: filtrar_tx(
|
60
|
+
ax: xbq,
|
61
|
+
sl: greymass_sl(xbq).inject(:+),
|
62
|
+
tx: filtrar_tx(xbq, api.ledger_gm(xbq))
|
62
63
|
}
|
63
64
|
end
|
64
65
|
|
@@ -66,11 +67,12 @@ module Cns
|
|
66
67
|
# @param [Hash] hbc dados greymass - address, saldo & transacoes
|
67
68
|
# @return [Hash] dados juntos bigquery & greymass
|
68
69
|
def bq_bc(wbq, hbc)
|
70
|
+
xbq = wbq[:ax]
|
69
71
|
{
|
70
72
|
id: wbq[:id],
|
71
|
-
ax:
|
73
|
+
ax: xbq,
|
72
74
|
bs: wbq[:sl],
|
73
|
-
bt: bqd[:nt].select { |
|
75
|
+
bt: bqd[:nt].select { |obj| obj[:iax] == xbq },
|
74
76
|
es: hbc[:sl],
|
75
77
|
et: hbc[:tx]
|
76
78
|
}
|
@@ -79,11 +81,12 @@ module Cns
|
|
79
81
|
# @param (see filtrar_tx)
|
80
82
|
# @return [Array<BigDecimal>] lista recursos - liquido, net, spu
|
81
83
|
def greymass_sl(add)
|
82
|
-
|
84
|
+
hac = api.account_gm(add)
|
85
|
+
htr = hac[:total_resources]
|
83
86
|
[
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
+
hac[:core_liquid_balance].to_d,
|
88
|
+
htr[:net_weight].to_d,
|
89
|
+
htr[:cpu_weight].to_d
|
87
90
|
]
|
88
91
|
end
|
89
92
|
|
@@ -93,13 +96,15 @@ module Cns
|
|
93
96
|
def filtrar_tx(add, ary)
|
94
97
|
# elimina transferencia from: (lax) to: (add) - esta transferencia aparece em from: (add) to: (lax)
|
95
98
|
# adiciona chave indice itx & adiciona identificador da carteira iax
|
96
|
-
ary.delete_if
|
97
|
-
|
99
|
+
(ary.delete_if do |odl|
|
100
|
+
adt = odl[:action_trace][:act][:data]
|
101
|
+
adt[:to] == add && lax.include?(adt[:from])
|
102
|
+
end).map { |omp| omp.merge(itx: omp[:global_action_seq], iax: add) }
|
98
103
|
end
|
99
104
|
|
100
105
|
# @return [Array<Hash>] lista ordenada transacoes novas
|
101
106
|
def sorax
|
102
|
-
novax.sort { |
|
107
|
+
novax.sort { |ant, prx| prx[:itx] <=> ant[:itx] }
|
103
108
|
end
|
104
109
|
end
|
105
110
|
end
|
data/lib/cns/greymass2.rb
CHANGED
@@ -9,7 +9,7 @@ module Cns
|
|
9
9
|
return unless dados.count.positive?
|
10
10
|
|
11
11
|
puts("\naddress greymass ntx bigquery ntx")
|
12
|
-
dados.each { |
|
12
|
+
dados.each { |obj| puts(formata_carteira(obj)) }
|
13
13
|
mostra_transacoes_novas
|
14
14
|
mostra_configuracao_ajuste_dias
|
15
15
|
end
|
@@ -40,47 +40,29 @@ module Cns
|
|
40
40
|
def formata_ledger(hlx)
|
41
41
|
format(
|
42
42
|
'%<bn>12i %<fr>-12.12s %<to>-12.12s %<ac>-10.10s %<dt>10.10s %<vl>12.4f %<sy>-6.6s',
|
43
|
+
ac: (act = hlx[:action_trace][:act])[:name],
|
44
|
+
fr: (adt = act[:data])[:from],
|
45
|
+
vl: (aqt = adt[:quantity].to_s).to_d,
|
43
46
|
bn: hlx[:itx],
|
44
|
-
|
45
|
-
to: act_data(hlx)[:to],
|
46
|
-
ac: act(hlx)[:name],
|
47
|
+
to: adt[:to],
|
47
48
|
dt: Date.parse(hlx[:block_time]),
|
48
|
-
|
49
|
-
sy: act_data_quantity(hlx)[/[[:upper:]]+/]
|
49
|
+
sy: aqt[/[[:upper:]]+/]
|
50
50
|
)
|
51
51
|
end
|
52
52
|
|
53
|
-
# @param (see formata_ledger)
|
54
|
-
# @return [Hash] dados da acao
|
55
|
-
def act(hlx)
|
56
|
-
hlx[:action_trace][:act]
|
57
|
-
end
|
58
|
-
|
59
|
-
# @param (see formata_ledger)
|
60
|
-
# @return [Hash] dados da acao
|
61
|
-
def act_data(hlx)
|
62
|
-
act(hlx)[:data]
|
63
|
-
end
|
64
|
-
|
65
|
-
# @param (see formata_ledger)
|
66
|
-
# @return [String] dados da quantidade
|
67
|
-
def act_data_quantity(hlx)
|
68
|
-
act_data(hlx)[:quantity].to_s
|
69
|
-
end
|
70
|
-
|
71
53
|
# @return [String] texto transacoes
|
72
54
|
def mostra_transacoes_novas
|
73
55
|
return unless ops[:v] && novax.count.positive?
|
74
56
|
|
75
57
|
puts("\nsequence num from to accao data valor moeda")
|
76
|
-
sorax.each { |
|
58
|
+
sorax.each { |obj| puts(formata_ledger(obj)) }
|
77
59
|
end
|
78
60
|
|
79
61
|
# @return [String] texto configuracao ajuste dias das transacoes
|
80
62
|
def mostra_configuracao_ajuste_dias
|
81
63
|
return unless novax.count.positive?
|
82
64
|
|
83
|
-
puts("\nstring ajuste dias\n-h=#{sorax.map { |
|
65
|
+
puts("\nstring ajuste dias\n-h=#{sorax.map { |obj| "#{obj[:itx]}:0" }.join(' ')}")
|
84
66
|
end
|
85
67
|
end
|
86
68
|
end
|
data/lib/cns/kraken.rb
CHANGED
@@ -27,25 +27,25 @@ module Cns
|
|
27
27
|
|
28
28
|
# @return [Hash] trades kraken novos
|
29
29
|
def trades
|
30
|
-
@trades ||= exd[:kt].select { |
|
30
|
+
@trades ||= exd[:kt].select { |key, _| kyt.include?(key) }
|
31
31
|
end
|
32
32
|
|
33
33
|
# @return [Hash] ledger kraken novos
|
34
34
|
def ledger
|
35
|
-
@ledger ||= exd[:kl].select { |
|
35
|
+
@ledger ||= exd[:kl].select { |key, _| kyl.include?(key) }
|
36
36
|
end
|
37
37
|
|
38
38
|
# @return [String] texto saldos & transacoes & ajuste dias
|
39
39
|
def mostra_resumo
|
40
40
|
puts("\nKRAKEN\ntipo kraken bigquery")
|
41
|
-
exd[:sl].each { |
|
41
|
+
exd[:sl].each { |key, val| puts(formata_saldos(key, val)) }
|
42
42
|
mostra_totais
|
43
43
|
|
44
44
|
mostra_trades
|
45
45
|
mostra_ledger
|
46
46
|
return if trades.empty?
|
47
47
|
|
48
|
-
puts("\nstring ajuste dias dos trades\n-h=#{kyt.map { |
|
48
|
+
puts("\nstring ajuste dias dos trades\n-h=#{kyt.map { |obj| "#{obj}:0" }.join(' ')}")
|
49
49
|
end
|
50
50
|
|
51
51
|
# @return [Hash] dados exchange kraken - saldos & transacoes trades e ledger
|
@@ -59,12 +59,12 @@ module Cns
|
|
59
59
|
|
60
60
|
# @return [Array<String>] lista txid dos trades novos
|
61
61
|
def kyt
|
62
|
-
@kyt ||= exd[:kt].keys - (ops[:t] ? [] : bqd[:nt].map { |
|
62
|
+
@kyt ||= exd[:kt].keys - (ops[:t] ? [] : bqd[:nt].map { |obj| obj[:txid].to_sym })
|
63
63
|
end
|
64
64
|
|
65
65
|
# @return [Array<String>] lista txid dos ledger novos
|
66
66
|
def kyl
|
67
|
-
@kyl ||= exd[:kl].keys - (ops[:t] ? [] : bqd[:nl].map { |
|
67
|
+
@kyl ||= exd[:kl].keys - (ops[:t] ? [] : bqd[:nl].map { |obj| obj[:txid].to_sym })
|
68
68
|
end
|
69
69
|
|
70
70
|
# @example (see Apice#account_us)
|
@@ -72,13 +72,14 @@ module Cns
|
|
72
72
|
# @param [BigDecimal] sal saldo kraken da moeda
|
73
73
|
# @return [String] texto formatado saldos
|
74
74
|
def formata_saldos(moe, sal)
|
75
|
-
|
75
|
+
vbq = bqd[:sl][moe.downcase.to_sym].to_d
|
76
|
+
vsl = sal.to_d
|
76
77
|
format(
|
77
78
|
'%<mo>-5.5s %<kr>21.9f %<bq>21.9f %<ok>3.3s',
|
78
79
|
mo: moe.upcase,
|
79
|
-
kr:
|
80
|
-
bq:
|
81
|
-
ok:
|
80
|
+
kr: vsl,
|
81
|
+
bq: vbq,
|
82
|
+
ok: vbq == vsl ? 'OK' : 'NOK'
|
82
83
|
)
|
83
84
|
end
|
84
85
|
|
@@ -115,29 +116,29 @@ module Cns
|
|
115
116
|
|
116
117
|
# @return [String] texto totais numero de transacoes
|
117
118
|
def mostra_totais
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
119
|
+
vkt = exd[:kt].count
|
120
|
+
vnt = bqd[:nt].count
|
121
|
+
vkl = exd[:kl].count
|
122
|
+
vnl = bqd[:nl].count
|
122
123
|
|
123
|
-
puts("TRADES #{format('%<a>20i %<b>21i %<o>3.3s', a:
|
124
|
-
puts("LEDGER #{format('%<c>20i %<d>21i %<o>3.3s', c:
|
124
|
+
puts("TRADES #{format('%<a>20i %<b>21i %<o>3.3s', a: vkt, b: vnt, o: vkt == vnt ? 'OK' : 'NOK')}")
|
125
|
+
puts("LEDGER #{format('%<c>20i %<d>21i %<o>3.3s', c: vkl, d: vnl, o: vkl == vnl ? 'OK' : 'NOK')}")
|
125
126
|
end
|
126
127
|
|
127
128
|
# @return [String] texto transacoes trades
|
128
129
|
def mostra_trades
|
129
130
|
return unless ops[:v] && trades.count.positive?
|
130
131
|
|
131
|
-
puts("\ntrade data hora tipo par
|
132
|
-
trades.sort { |
|
132
|
+
puts("\ntrade data hora tipo par preco volume custo")
|
133
|
+
trades.sort { |ant, prx| prx[1][:time] <=> ant[1][:time] }.each { |key, val| puts(formata_trades(key, val)) }
|
133
134
|
end
|
134
135
|
|
135
136
|
# @return [String] texto transacoes ledger
|
136
137
|
def mostra_ledger
|
137
138
|
return unless ops[:v] && ledger.count.positive?
|
138
139
|
|
139
|
-
puts("\nledger data hora tipo moeda
|
140
|
-
ledger.sort { |
|
140
|
+
puts("\nledger data hora tipo moeda quantidade custo")
|
141
|
+
ledger.sort { |ant, prx| prx[1][:time] <=> ant[1][:time] }.each { |key, val| puts(formata_ledger(key, val)) }
|
141
142
|
end
|
142
143
|
end
|
143
144
|
end
|