cns 0.6.0 → 0.7.0
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/apice.rb +140 -140
- data/lib/cns/bigquery.rb +70 -71
- data/lib/cns/version.rb +1 -1
- data/lib/cns.rb +0 -2
- metadata +2 -4
- data/lib/cns/paymium.rb +0 -113
- data/lib/cns/therock.rb +0 -104
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2831cc8463f48af9870a6d577be3161c608e4d5b410c8b0976fab2b2d7d9bbe9
|
4
|
+
data.tar.gz: 3de096f6a0d55a541731c67ed889c2134426f186bdc8d1e24b7d8cf8a6c4fd5f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cdbcc626c2105243833bf26f447e5da36b113fe16ccd787f53c39fd800cb211cc159f49ff005936dff756070b0ecf2299e871874f212737569f0d1ed114e7844
|
7
|
+
data.tar.gz: d580a5ff25b83296c3f8376b9dde8a2cd56b07bf9cdea937257f05dc42c596d031f208cb10f9ac538a10b7cdd6e8f4a4cfdd41f3545d08d731f87cf95dfaa265
|
data/Gemfile.lock
CHANGED
data/lib/cns/apice.rb
CHANGED
@@ -38,53 +38,6 @@ module Cns
|
|
38
38
|
{}
|
39
39
|
end
|
40
40
|
|
41
|
-
# @example account_fr
|
42
|
-
# {
|
43
|
-
# name: '...',
|
44
|
-
# email: '...',
|
45
|
-
# locale: 'en',
|
46
|
-
# channel_id: '...',
|
47
|
-
# meta_state: 'approved',
|
48
|
-
# balance_eur: '0.0',
|
49
|
-
# locked_eur: '0.0',
|
50
|
-
# balance_btc: '0.0',
|
51
|
-
# locked_btc: '0.0',
|
52
|
-
# balance_lbtc: '0.0',
|
53
|
-
# locked_lbtc: '0.0'
|
54
|
-
# }
|
55
|
-
# @param (see account_de)
|
56
|
-
# @return [Hash] saldos no paymium
|
57
|
-
def account_fr(uri = 'https://paymium.com/api/v1/user')
|
58
|
-
JSON.parse(
|
59
|
-
Curl.get(uri) { |obj| obj.headers = hfr(uri) }.body,
|
60
|
-
symbolize_names: true
|
61
|
-
)
|
62
|
-
rescue StandardError
|
63
|
-
{}
|
64
|
-
end
|
65
|
-
|
66
|
-
# @example account_mt
|
67
|
-
# {
|
68
|
-
# balances: [
|
69
|
-
# { currency: 'BTC', balance: 0.0, trading_balance: 0.0 },
|
70
|
-
# { currency: 'ETH', balance: 0.0, trading_balance: 0.0 },
|
71
|
-
# { currency: 'EUR', balance: 0.0, trading_balance: 0.0 },
|
72
|
-
# { currency: 'DAI', balance: 0.0, trading_balance: 0.0 },
|
73
|
-
# ]
|
74
|
-
# }
|
75
|
-
# @param (see account_de)
|
76
|
-
# @return [Array<Hash>] lista saldos no therock
|
77
|
-
def account_mt(uri = 'https://api.therocktrading.com/v1/balances')
|
78
|
-
JSON.parse(
|
79
|
-
Curl.get(uri) { |obj| obj.headers = hmt(uri) }.body,
|
80
|
-
symbolize_names: true
|
81
|
-
)[:balances]
|
82
|
-
.delete_if { |del| DC.include?(del[:currency]) }
|
83
|
-
.sort { |oba, obb| oba[:currency] <=> obb[:currency] }
|
84
|
-
rescue StandardError
|
85
|
-
[]
|
86
|
-
end
|
87
|
-
|
88
41
|
# @example account_us
|
89
42
|
# {
|
90
43
|
# error: [],
|
@@ -269,82 +222,6 @@ module Cns
|
|
269
222
|
}.merge(tp: 'withdrawal', moe: 'btc')
|
270
223
|
end
|
271
224
|
|
272
|
-
# @example ledger_fr
|
273
|
-
# [
|
274
|
-
# {
|
275
|
-
# uuid: '50551e61-4e74-4ae7-85fd-9c2040542818',
|
276
|
-
# currency_amount: nil,
|
277
|
-
# state: 'executed',
|
278
|
-
# btc_fee: '0.0',
|
279
|
-
# currency_fee: '0.0',
|
280
|
-
# created_at: '2014-03-04T09:00Z',
|
281
|
-
# updated_at: '2014-03-04T09:00Z',
|
282
|
-
# currency: 'EUR',
|
283
|
-
# comment: '5723',
|
284
|
-
# amount: '100.0',
|
285
|
-
# type: 'WireDeposit',
|
286
|
-
# account_operations: [{
|
287
|
-
# uuid: 'b5058a68-cf99-4438-86d3-e773eba418ec',
|
288
|
-
# name: 'wire_deposit',
|
289
|
-
# amount: '100.0',
|
290
|
-
# currency: 'EUR',
|
291
|
-
# created_at: '2014-03-04T09:00Z',
|
292
|
-
# created_at_int: 1_393_923_644,
|
293
|
-
# is_trading_account: false
|
294
|
-
# }, {}]
|
295
|
-
# },
|
296
|
-
# {}
|
297
|
-
# ]
|
298
|
-
# @param (see trades_de)
|
299
|
-
# @return [Array<Hash>] lista ledger paymium
|
300
|
-
def ledger_fr(pag = 0, ary = [], uri = 'https://paymium.com/api/v1/user/orders')
|
301
|
-
res = JSON.parse(
|
302
|
-
Curl.get(uri, offset: pag) { |obj| obj.headers = hfr("#{uri}?#{URI.encode_www_form(offset: pag)}") }.body,
|
303
|
-
symbolize_names: true
|
304
|
-
)
|
305
|
-
res.empty? ? ary : ledger_fr(pag + res.size, ary + res)
|
306
|
-
rescue StandardError
|
307
|
-
ary
|
308
|
-
end
|
309
|
-
|
310
|
-
# @example ledger_mt
|
311
|
-
# {
|
312
|
-
# transactions: [
|
313
|
-
# {
|
314
|
-
# id: 305_445,
|
315
|
-
# date: '2014-03-06T10:59:13.000Z',
|
316
|
-
# type: 'withdraw',
|
317
|
-
# price: 97.47,
|
318
|
-
# currency: 'EUR',
|
319
|
-
# fund_id: nil,
|
320
|
-
# order_id: nil,
|
321
|
-
# trade_id: nil,
|
322
|
-
# note: 'BOV withdraw',
|
323
|
-
# transfer_detail: nil
|
324
|
-
# },
|
325
|
-
# {}
|
326
|
-
# ],
|
327
|
-
# meta: {
|
328
|
-
# total_count: nil,
|
329
|
-
# first: { page: 1, href: 'https://api.therocktrading.com/v1/transactions?page=1' },
|
330
|
-
# previous: nil,
|
331
|
-
# current: { page: 1, href: 'https://api.therocktrading.com/v1/transactions?page=1' },
|
332
|
-
# next: { page: 2, href: 'https://api.therocktrading.com/v1/transactions?page=2' },
|
333
|
-
# last: nil
|
334
|
-
# }
|
335
|
-
# }
|
336
|
-
# @param (see trades_de)
|
337
|
-
# @return [Array<Hash>] lista ledger therock
|
338
|
-
def ledger_mt(pag = 1, ary = [], uri = 'https://api.therocktrading.com/v1/transactions')
|
339
|
-
res = JSON.parse(
|
340
|
-
Curl.get(uri, page: pag) { |obj| obj.headers = hmt("#{uri}?#{URI.encode_www_form(page: pag)}") }.body,
|
341
|
-
symbolize_names: true
|
342
|
-
)[:transactions]
|
343
|
-
res.empty? ? ary : ledger_mt(pag + res.size, ary + res)
|
344
|
-
rescue StandardError
|
345
|
-
ary
|
346
|
-
end
|
347
|
-
|
348
225
|
# @example trades_us
|
349
226
|
# {
|
350
227
|
# error: [],
|
@@ -423,6 +300,129 @@ module Cns
|
|
423
300
|
has
|
424
301
|
end
|
425
302
|
|
303
|
+
# @example account_fr
|
304
|
+
# {
|
305
|
+
# name: '...',
|
306
|
+
# email: '...',
|
307
|
+
# locale: 'en',
|
308
|
+
# channel_id: '...',
|
309
|
+
# meta_state: 'approved',
|
310
|
+
# balance_eur: '0.0',
|
311
|
+
# locked_eur: '0.0',
|
312
|
+
# balance_btc: '0.0',
|
313
|
+
# locked_btc: '0.0',
|
314
|
+
# balance_lbtc: '0.0',
|
315
|
+
# locked_lbtc: '0.0'
|
316
|
+
# }
|
317
|
+
# @param (see account_de)
|
318
|
+
# @return [Hash] saldos no paymium
|
319
|
+
# def account_fr(uri = 'https://paymium.com/api/v1/user')
|
320
|
+
# JSON.parse(
|
321
|
+
# Curl.get(uri) { |obj| obj.headers = hfr(uri) }.body,
|
322
|
+
# symbolize_names: true
|
323
|
+
# )
|
324
|
+
# rescue StandardError
|
325
|
+
# {}
|
326
|
+
# end
|
327
|
+
#
|
328
|
+
# @example account_mt
|
329
|
+
# {
|
330
|
+
# balances: [
|
331
|
+
# { currency: 'BTC', balance: 0.0, trading_balance: 0.0 },
|
332
|
+
# { currency: 'ETH', balance: 0.0, trading_balance: 0.0 },
|
333
|
+
# { currency: 'EUR', balance: 0.0, trading_balance: 0.0 },
|
334
|
+
# { currency: 'DAI', balance: 0.0, trading_balance: 0.0 },
|
335
|
+
# ]
|
336
|
+
# }
|
337
|
+
# @param (see account_de)
|
338
|
+
# @return [Array<Hash>] lista saldos no therock
|
339
|
+
# def account_mt(uri = 'https://api.therocktrading.com/v1/balances')
|
340
|
+
# JSON.parse(
|
341
|
+
# Curl.get(uri) { |obj| obj.headers = hmt(uri) }.body,
|
342
|
+
# symbolize_names: true
|
343
|
+
# )[:balances]
|
344
|
+
# .delete_if { |del| DC.include?(del[:currency]) }
|
345
|
+
# .sort { |oba, obb| oba[:currency] <=> obb[:currency] }
|
346
|
+
# rescue StandardError
|
347
|
+
# []
|
348
|
+
# end
|
349
|
+
#
|
350
|
+
# @example ledger_fr
|
351
|
+
# [
|
352
|
+
# {
|
353
|
+
# uuid: '50551e61-4e74-4ae7-85fd-9c2040542818',
|
354
|
+
# currency_amount: nil,
|
355
|
+
# state: 'executed',
|
356
|
+
# btc_fee: '0.0',
|
357
|
+
# currency_fee: '0.0',
|
358
|
+
# created_at: '2014-03-04T09:00Z',
|
359
|
+
# updated_at: '2014-03-04T09:00Z',
|
360
|
+
# currency: 'EUR',
|
361
|
+
# comment: '5723',
|
362
|
+
# amount: '100.0',
|
363
|
+
# type: 'WireDeposit',
|
364
|
+
# account_operations: [{
|
365
|
+
# uuid: 'b5058a68-cf99-4438-86d3-e773eba418ec',
|
366
|
+
# name: 'wire_deposit',
|
367
|
+
# amount: '100.0',
|
368
|
+
# currency: 'EUR',
|
369
|
+
# created_at: '2014-03-04T09:00Z',
|
370
|
+
# created_at_int: 1_393_923_644,
|
371
|
+
# is_trading_account: false
|
372
|
+
# }, {}]
|
373
|
+
# },
|
374
|
+
# {}
|
375
|
+
# ]
|
376
|
+
# @param (see trades_de)
|
377
|
+
# @return [Array<Hash>] lista ledger paymium
|
378
|
+
# def ledger_fr(pag = 0, ary = [], uri = 'https://paymium.com/api/v1/user/orders')
|
379
|
+
# res = JSON.parse(
|
380
|
+
# Curl.get(uri, offset: pag) { |obj| obj.headers = hfr("#{uri}?#{URI.encode_www_form(offset: pag)}") }.body,
|
381
|
+
# symbolize_names: true
|
382
|
+
# )
|
383
|
+
# res.empty? ? ary : ledger_fr(pag + res.size, ary + res)
|
384
|
+
# rescue StandardError
|
385
|
+
# ary
|
386
|
+
# end
|
387
|
+
#
|
388
|
+
# @example ledger_mt
|
389
|
+
# {
|
390
|
+
# transactions: [
|
391
|
+
# {
|
392
|
+
# id: 305_445,
|
393
|
+
# date: '2014-03-06T10:59:13.000Z',
|
394
|
+
# type: 'withdraw',
|
395
|
+
# price: 97.47,
|
396
|
+
# currency: 'EUR',
|
397
|
+
# fund_id: nil,
|
398
|
+
# order_id: nil,
|
399
|
+
# trade_id: nil,
|
400
|
+
# note: 'BOV withdraw',
|
401
|
+
# transfer_detail: nil
|
402
|
+
# },
|
403
|
+
# {}
|
404
|
+
# ],
|
405
|
+
# meta: {
|
406
|
+
# total_count: nil,
|
407
|
+
# first: { page: 1, href: 'https://api.therocktrading.com/v1/transactions?page=1' },
|
408
|
+
# previous: nil,
|
409
|
+
# current: { page: 1, href: 'https://api.therocktrading.com/v1/transactions?page=1' },
|
410
|
+
# next: { page: 2, href: 'https://api.therocktrading.com/v1/transactions?page=2' },
|
411
|
+
# last: nil
|
412
|
+
# }
|
413
|
+
# }
|
414
|
+
# @param (see trades_de)
|
415
|
+
# @return [Array<Hash>] lista ledger therock
|
416
|
+
# def ledger_mt(pag = 1, ary = [], uri = 'https://api.therocktrading.com/v1/transactions')
|
417
|
+
# res = JSON.parse(
|
418
|
+
# Curl.get(uri, page: pag) { |obj| obj.headers = hmt("#{uri}?#{URI.encode_www_form(page: pag)}") }.body,
|
419
|
+
# symbolize_names: true
|
420
|
+
# )[:transactions]
|
421
|
+
# res.empty? ? ary : ledger_mt(pag + res.size, ary + res)
|
422
|
+
# rescue StandardError
|
423
|
+
# ary
|
424
|
+
# end
|
425
|
+
|
426
426
|
private
|
427
427
|
|
428
428
|
# @return [Integer] continually-increasing unsigned integer nonce from the current Unix Time
|
@@ -449,26 +449,26 @@ module Cns
|
|
449
449
|
# @param [String] qfr query a incluir no pedido HTTP
|
450
450
|
# @param non (see hde)
|
451
451
|
# @return [Hash] headers necessarios para pedido HTTP da exchange paymium
|
452
|
-
def hfr(qfr, non = nnc)
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
end
|
460
|
-
|
452
|
+
# def hfr(qfr, non = nnc)
|
453
|
+
# {
|
454
|
+
# content_type: 'application/json',
|
455
|
+
# 'Api-Key': ENV['PAYMIUM_API_KEY'],
|
456
|
+
# 'Api-Nonce': non,
|
457
|
+
# 'Api-Signature': OpenSSL::HMAC.hexdigest('sha256', ENV['PAYMIUM_API_SECRET'], [non, qfr].join)
|
458
|
+
# }
|
459
|
+
# end
|
460
|
+
#
|
461
461
|
# @param [String] qmt query a incluir no pedido HTTP
|
462
462
|
# @param non (see hde)
|
463
463
|
# @return [Hash] headers necessarios para pedido HTTP da exchange therock
|
464
|
-
def hmt(qmt, non = nnc)
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
end
|
464
|
+
# def hmt(qmt, non = nnc)
|
465
|
+
# {
|
466
|
+
# content_type: 'application/json',
|
467
|
+
# 'X-TRT-KEY': ENV['THEROCK_API_KEY'],
|
468
|
+
# 'X-TRT-NONCE': non,
|
469
|
+
# 'X-TRT-SIGN': OpenSSL::HMAC.hexdigest('sha512', ENV['THEROCK_API_SECRET'], [non, qmt].join)
|
470
|
+
# }
|
471
|
+
# end
|
472
472
|
|
473
473
|
# @param [String] qus query a incluir no pedido HTTP
|
474
474
|
# @param [Hash] ops opcoes trabalho
|
data/lib/cns/bigquery.rb
CHANGED
@@ -35,8 +35,6 @@ module Cns
|
|
35
35
|
def mostra_tudo
|
36
36
|
apius.mostra_resumo
|
37
37
|
apide.mostra_resumo
|
38
|
-
#apifr.mostra_resumo
|
39
|
-
#apimt.mostra_resumo
|
40
38
|
apies.mostra_resumo
|
41
39
|
apigm.mostra_resumo
|
42
40
|
end
|
@@ -44,7 +42,7 @@ module Cns
|
|
44
42
|
# mostra situacao completa entre kraken/etherscan & bigquery
|
45
43
|
def mostra_skrk
|
46
44
|
apius.mostra_resumo
|
47
|
-
apies.
|
45
|
+
apies.mostra_resumo
|
48
46
|
end
|
49
47
|
|
50
48
|
# mostra situacao completa entre etherscan & bigquery
|
@@ -167,12 +165,6 @@ module Cns
|
|
167
165
|
job?(cmd) ? 0 : job.num_dml_affected_rows
|
168
166
|
end
|
169
167
|
|
170
|
-
# @return [String] comando insert SQL formatado fr (ledger)
|
171
|
-
def mtl_ins
|
172
|
-
"insert #{BD}.mt(id,time,type,valor,moe,pair,note,trade_id,dias) " \
|
173
|
-
"VALUES#{apimt.ledger.map { |obj| mtl_1val(obj) }.join(',')}"
|
174
|
-
end
|
175
|
-
|
176
168
|
# @return [Etherscan] API blockchain ETH
|
177
169
|
def apies
|
178
170
|
@apies ||= Etherscan.new(
|
@@ -218,9 +210,10 @@ module Cns
|
|
218
210
|
def apius
|
219
211
|
@apius ||= Kraken.new(
|
220
212
|
{
|
221
|
-
sl: sql("select sum(btc) xxbt,sum(eth) xeth,sum(eos) eos,sum(eur) zeur from #{BD}.ussl")[0],
|
222
|
-
|
223
|
-
|
213
|
+
#sl: sql("select sum(btc) xxbt,sum(eth) xeth,sum(eos) eos,sum(eur) zeur from #{BD}.ussl")[0],
|
214
|
+
sl: sql("select * from #{BD}.ussl")[0],
|
215
|
+
nt: sql("select * from #{BD}.ust order by time,txid"),
|
216
|
+
nl: sql("select * from #{BD}.usl order by time,txid")
|
224
217
|
},
|
225
218
|
ops
|
226
219
|
)
|
@@ -230,31 +223,9 @@ module Cns
|
|
230
223
|
def apide
|
231
224
|
@apide ||= Bitcoinde.new(
|
232
225
|
{
|
233
|
-
sl: sql("select
|
234
|
-
nt: sql("select * from #{BD}.
|
235
|
-
nl: sql("select * from #{BD}.
|
236
|
-
},
|
237
|
-
ops
|
238
|
-
)
|
239
|
-
end
|
240
|
-
|
241
|
-
# @return [Paymium] API exchange paymium
|
242
|
-
def apifr
|
243
|
-
@apifr ||= Paymium.new(
|
244
|
-
{
|
245
|
-
sl: sql("select sum(btc) btc,sum(eur) eur from #{BD}.frsl")[0],
|
246
|
-
nl: sql("select * from #{BD}.frlx order by time,txid")
|
247
|
-
},
|
248
|
-
ops
|
249
|
-
)
|
250
|
-
end
|
251
|
-
|
252
|
-
# @return [TheRock] API exchange therock
|
253
|
-
def apimt
|
254
|
-
@apimt ||= TheRock.new(
|
255
|
-
{
|
256
|
-
sl: sql("select sum(btc) btc,sum(eur) eur from #{BD}.mtsl")[0],
|
257
|
-
nl: sql("select * from #{BD}.mtlx order by time,txid")
|
226
|
+
sl: sql("select * from #{BD}.desl")[0],
|
227
|
+
nt: sql("select * from #{BD}.det order by time,txid"),
|
228
|
+
nl: sql("select * from #{BD}.del order by time,txid")
|
258
229
|
},
|
259
230
|
ops
|
260
231
|
)
|
@@ -354,11 +325,6 @@ module Cns
|
|
354
325
|
"VALUES#{apius.ledger.map { |key, val| usl_val(key, val) }.join(',')}"
|
355
326
|
end
|
356
327
|
|
357
|
-
# @return [String] comando insert SQL formatado fr (ledger)
|
358
|
-
def frl_ins
|
359
|
-
"insert #{BD}.fr(uuid,tipo,valor,moe,time,dias) VALUES#{apifr.ledger.map { |obj| frl_val(obj) }.join(',')}"
|
360
|
-
end
|
361
|
-
|
362
328
|
# @example (see Apibc#norml_es)
|
363
329
|
# @param [Hash] htx transacao norml etherscan
|
364
330
|
# @return [String] valores formatados etht (norml parte1)
|
@@ -600,43 +566,76 @@ module Cns
|
|
600
566
|
"cast(#{hlx[:fee]} as numeric))"
|
601
567
|
end
|
602
568
|
|
569
|
+
# @return [Paymium] API exchange paymium
|
570
|
+
# def apifr
|
571
|
+
# @apifr ||= Paymium.new(
|
572
|
+
# {
|
573
|
+
# sl: sql("select * from #{BD}.frsl")[0],
|
574
|
+
# nl: sql("select uuid txid,tipo,valor,moe,time,dias from #{BD}.fr order by time,1")
|
575
|
+
# },
|
576
|
+
# ops
|
577
|
+
# )
|
578
|
+
# end
|
579
|
+
#
|
580
|
+
# @return [TheRock] API exchange therock
|
581
|
+
# def apimt
|
582
|
+
# @apimt ||= TheRock.new(
|
583
|
+
# {
|
584
|
+
# sl: sql("select sum(btc) btc,sum(eur) eur from #{BD}.mtsl")[0],
|
585
|
+
# nl: sql("select id txid,time,type,valor,moe,pair,note,dias from #{BD}.mt order by time,1")
|
586
|
+
# },
|
587
|
+
# ops
|
588
|
+
# )
|
589
|
+
# end
|
590
|
+
#
|
591
|
+
# @return [String] comando insert SQL formatado fr (ledger)
|
592
|
+
# def frl_ins
|
593
|
+
# "insert #{BD}.fr(uuid,tipo,valor,moe,time,dias) VALUES#{apifr.ledger.map { |obj| frl_val(obj) }.join(',')}"
|
594
|
+
# end
|
595
|
+
#
|
596
|
+
# @return [String] comando insert SQL formatado fr (ledger)
|
597
|
+
# def mtl_ins
|
598
|
+
# "insert #{BD}.mt(id,time,type,valor,moe,pair,note,trade_id,dias) " \
|
599
|
+
# "VALUES#{apimt.ledger.map { |obj| mtl_1val(obj) }.join(',')}"
|
600
|
+
# end
|
601
|
+
#
|
603
602
|
# @example (see Apice#ledger_fr)
|
604
603
|
# @param [Hash] hlx ledger paymium
|
605
604
|
# @return [String] valores formatados frl (ledger)
|
606
|
-
def frl_val(hlx)
|
607
|
-
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
|
614
|
-
end
|
615
|
-
|
605
|
+
# def frl_val(hlx)
|
606
|
+
# uid = hlx[:uuid]
|
607
|
+
# "('#{uid}'," \
|
608
|
+
# "'#{hlx[:name]}'," \
|
609
|
+
# "cast(#{hlx[:amount]} as numeric)," \
|
610
|
+
# "'#{hlx[:currency]}'," \
|
611
|
+
# "PARSE_DATETIME('%s', '#{hlx[:created_at_int]}')," \
|
612
|
+
# "#{Integer(ops[:h][uid] || 0)})"
|
613
|
+
# end
|
614
|
+
#
|
616
615
|
# @example (see Apice#ledger_mt)
|
617
616
|
# @param [Hash] hlx ledger therock
|
618
617
|
# @return [String] valores formatados mtl (ledger parte1)
|
619
|
-
def mtl_1val(hlx)
|
620
|
-
|
621
|
-
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
|
627
|
-
|
628
|
-
end
|
629
|
-
|
618
|
+
# def mtl_1val(hlx)
|
619
|
+
# fid = hlx[:fund_id].to_s
|
620
|
+
# "(#{hlx[:id]}," \
|
621
|
+
# "DATETIME(TIMESTAMP('#{hlx[:date]}'))," \
|
622
|
+
# "'#{hlx[:type]}'," \
|
623
|
+
# "cast(#{hlx[:price]} as numeric)," \
|
624
|
+
# "'#{hlx[:currency]}'," \
|
625
|
+
# "#{fid.empty? ? 'null' : "'#{fid}'"}," \
|
626
|
+
# "#{mtl_2val(hlx)}"
|
627
|
+
# end
|
628
|
+
#
|
630
629
|
# @param (see mtl_1val)
|
631
630
|
# @return [String] valores formatados mtl (ledger parte2)
|
632
|
-
def mtl_2val(hlx)
|
633
|
-
|
634
|
-
|
635
|
-
|
636
|
-
|
637
|
-
|
638
|
-
end
|
639
|
-
|
631
|
+
# def mtl_2val(hlx)
|
632
|
+
# nte = hlx[:note].to_s
|
633
|
+
# tid = hlx[:trade_id].to_s
|
634
|
+
# "#{nte.empty? ? 'null' : "'#{nte}'"}," \
|
635
|
+
# "#{tid.empty? ? 'null' : tid.to_s}," \
|
636
|
+
# "#{Integer(ops[:h][String(hlx[:id])] || 0)})"
|
637
|
+
# end
|
638
|
+
#
|
640
639
|
# @example (see Beaconchain#formata_saldos)
|
641
640
|
# @param (see Beaconchain#formata_saldos)
|
642
641
|
# @return [String] valores formatados etht (norml parte1)
|
data/lib/cns/version.rb
CHANGED
data/lib/cns.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cns
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hernâni Rodrigues Vaz
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-02-
|
11
|
+
date: 2025-02-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -209,8 +209,6 @@ files:
|
|
209
209
|
- lib/cns/etherscan.rb
|
210
210
|
- lib/cns/greymass.rb
|
211
211
|
- lib/cns/kraken.rb
|
212
|
-
- lib/cns/paymium.rb
|
213
|
-
- lib/cns/therock.rb
|
214
212
|
- lib/cns/version.rb
|
215
213
|
- ruby-lint.yml
|
216
214
|
homepage: https://github.com/hernanirvaz/cns
|
data/lib/cns/paymium.rb
DELETED
@@ -1,113 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require('bigdecimal/util')
|
4
|
-
|
5
|
-
# @author Hernani Rodrigues Vaz
|
6
|
-
module Cns
|
7
|
-
# classe para processar transacoes ledger do paymium
|
8
|
-
class Paymium
|
9
|
-
# @return [Apius] API paymium
|
10
|
-
attr_reader :api
|
11
|
-
# @return [Array<Hash>] todos os dados bigquery
|
12
|
-
attr_reader :bqd
|
13
|
-
# @return [Thor::CoreExt::HashWithIndifferentAccess] opcoes trabalho
|
14
|
-
attr_reader :ops
|
15
|
-
|
16
|
-
# @param [Hash] dad todos os dados bigquery
|
17
|
-
# @param [Thor::CoreExt::HashWithIndifferentAccess] pop opcoes trabalho
|
18
|
-
# @option pop [Hash] :h ({}) configuracao dias ajuste reposicionamento temporal
|
19
|
-
# @option pop [Boolean] :v (false) mostra dados transacoes trades & ledger?
|
20
|
-
# @option pop [Boolean] :t (false) mostra transacoes todas ou somente novas?
|
21
|
-
# @return [Paymium] API paymium - obter saldos & transacoes ledger
|
22
|
-
def initialize(dad, pop)
|
23
|
-
@api = Apice.new
|
24
|
-
@bqd = dad
|
25
|
-
@ops = pop
|
26
|
-
end
|
27
|
-
|
28
|
-
# @return [Array<Hash>] lista ledger paymium novos
|
29
|
-
def ledger
|
30
|
-
@ledger ||= exd[:kl].map { |map| map[:account_operations].select { |obj| kyl.include?(obj[:uuid]) } }.flatten
|
31
|
-
end
|
32
|
-
|
33
|
-
# @return [String] texto saldos & transacoes & ajuste dias
|
34
|
-
def mostra_resumo
|
35
|
-
puts("\nPAYMIUM\ntipo paymium bigquery")
|
36
|
-
puts(formata_saldos(:btc))
|
37
|
-
puts(formata_saldos(:eur))
|
38
|
-
mostra_totais
|
39
|
-
|
40
|
-
mostra_ledger
|
41
|
-
return unless ledger.count.positive?
|
42
|
-
|
43
|
-
puts("\nstring ajuste dias da ledger\n-h=#{kyl.map { |obj| "#{obj}:0" }.join(' ')}")
|
44
|
-
end
|
45
|
-
|
46
|
-
# @return [Hash] dados exchange paymium - saldos & transacoes ledger
|
47
|
-
def exd
|
48
|
-
@exd ||= {
|
49
|
-
sl: api.account_fr,
|
50
|
-
kl: api.ledger_fr
|
51
|
-
}
|
52
|
-
end
|
53
|
-
|
54
|
-
# @return [Array<String>] lista txid dos ledger novos
|
55
|
-
def kyl
|
56
|
-
@kyl ||= exd[:kl].map { |oex| oex[:account_operations].map { |obj| obj[:uuid] } }.flatten -
|
57
|
-
(ops[:t] ? [] : bqd[:nl].map { |obq| obq[:txid] })
|
58
|
-
end
|
59
|
-
|
60
|
-
# @example (see Apice#account_fr)
|
61
|
-
# @param [Symbol] bqm symbol paymium da moeda
|
62
|
-
# @return [String] texto formatado saldos
|
63
|
-
def formata_saldos(bqm)
|
64
|
-
vbq = bqd[:sl][bqm].to_d
|
65
|
-
vkr = exd[:sl]["balance_#{bqm}".to_sym].to_d
|
66
|
-
format(
|
67
|
-
'%<mo>-5.5s %<kr>21.9f %<bq>21.9f %<ok>3.3s',
|
68
|
-
mo: bqm.upcase,
|
69
|
-
kr: vkr,
|
70
|
-
bq: vbq,
|
71
|
-
ok: vkr == vbq ? 'OK' : 'NOK'
|
72
|
-
)
|
73
|
-
end
|
74
|
-
|
75
|
-
# @example (see Apice#ledger_fr)
|
76
|
-
# @param (see Bigquery#frl_val)
|
77
|
-
# @return [String] texto formatado ledger
|
78
|
-
def formata_ledger(hlx)
|
79
|
-
format(
|
80
|
-
'%<ky>-18.18s %<dt>19.19s %<ty>-17.17s %<mo>-4.4s %<vl>18.7f',
|
81
|
-
ky: formata_uuid(hlx[:uuid], 18),
|
82
|
-
dt: Time.at(hlx[:created_at_int]),
|
83
|
-
ty: hlx[:name],
|
84
|
-
mo: hlx[:currency].upcase,
|
85
|
-
vl: hlx[:amount].to_d
|
86
|
-
)
|
87
|
-
end
|
88
|
-
|
89
|
-
# @param [String] uid identificacor da ledger
|
90
|
-
# @param [Integer] max chars a mostrar
|
91
|
-
# @return [String] texto formatado identificacor da ledger
|
92
|
-
def formata_uuid(uid, max)
|
93
|
-
int = Integer(max / 2)
|
94
|
-
max < 7 ? 'erro' : "#{uid[0, int]}#{uid[-int..]}"
|
95
|
-
end
|
96
|
-
|
97
|
-
# @return [String] texto totais numero de transacoes
|
98
|
-
def mostra_totais
|
99
|
-
vkl = exd[:kl].map { |obj| obj[:account_operations].count }.flatten.inject(:+)
|
100
|
-
vnl = bqd[:nl].count
|
101
|
-
|
102
|
-
puts("LEDGER #{format('%<c>20i %<d>21i %<o>3.3s', c: vkl, d: vnl, o: vkl == vnl ? 'OK' : 'NOK')}")
|
103
|
-
end
|
104
|
-
|
105
|
-
# @return [String] texto transacoes ledger
|
106
|
-
def mostra_ledger
|
107
|
-
return unless ops[:v] && ledger.count.positive?
|
108
|
-
|
109
|
-
puts("\nledger data hora tipo moeda quantidade")
|
110
|
-
ledger.sort { |ant, prx| prx[:created_at_int] <=> ant[:created_at_int] }.each { |obj| puts(formata_ledger(obj)) }
|
111
|
-
end
|
112
|
-
end
|
113
|
-
end
|
data/lib/cns/therock.rb
DELETED
@@ -1,104 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require('bigdecimal/util')
|
4
|
-
|
5
|
-
# @author Hernani Rodrigues Vaz
|
6
|
-
module Cns
|
7
|
-
# classe para processar transacoes ledger do therock
|
8
|
-
class TheRock
|
9
|
-
# @return [Apius] API therock
|
10
|
-
attr_reader :api
|
11
|
-
# @return [Array<Hash>] todos os dados bigquery
|
12
|
-
attr_reader :bqd
|
13
|
-
# @return [Thor::CoreExt::HashWithIndifferentAccess] opcoes trabalho
|
14
|
-
attr_reader :ops
|
15
|
-
|
16
|
-
# @param [Hash] dad todos os dados bigquery
|
17
|
-
# @param [Thor::CoreExt::HashWithIndifferentAccess] pop opcoes trabalho
|
18
|
-
# @option pop [Hash] :h ({}) configuracao dias ajuste reposicionamento temporal
|
19
|
-
# @option pop [Boolean] :v (false) mostra dados transacoes trades & ledger?
|
20
|
-
# @option pop [Boolean] :t (false) mostra transacoes todas ou somente novas?
|
21
|
-
# @return [TheRock] API therock - obter saldos & transacoes ledger
|
22
|
-
def initialize(dad, pop)
|
23
|
-
@api = Apice.new
|
24
|
-
@bqd = dad
|
25
|
-
@ops = pop
|
26
|
-
end
|
27
|
-
|
28
|
-
# @return [Array<Hash>] lista ledger therock novos
|
29
|
-
def ledger
|
30
|
-
@ledger ||= exd[:kl].select { |obj| kyl.include?(obj[:id]) }
|
31
|
-
end
|
32
|
-
|
33
|
-
# @return [String] texto saldos & transacoes & ajuste dias
|
34
|
-
def mostra_resumo
|
35
|
-
puts("\nTHEROCK\ntipo therock bigquery")
|
36
|
-
exd[:sl].each { |obj| puts(formata_saldos(obj)) }
|
37
|
-
mostra_totais
|
38
|
-
|
39
|
-
mostra_ledger
|
40
|
-
return unless ledger.count.positive?
|
41
|
-
|
42
|
-
puts("\nstring ajuste dias da ledger\n-h=#{kyl.map { |obj| "#{obj}:0" }.join(' ')}")
|
43
|
-
end
|
44
|
-
|
45
|
-
# @return [Hash] dados exchange therock - saldos & transacoes ledger
|
46
|
-
def exd
|
47
|
-
@exd ||= {
|
48
|
-
sl: api.account_mt,
|
49
|
-
kl: api.ledger_mt
|
50
|
-
}
|
51
|
-
end
|
52
|
-
|
53
|
-
# @return [Array<String>] lista txid dos ledger novos
|
54
|
-
def kyl
|
55
|
-
@kyl ||= exd[:kl].map { |oex| oex[:id] } - (ops[:t] ? [] : bqd[:nl].map { |obq| obq[:txid] })
|
56
|
-
end
|
57
|
-
|
58
|
-
# @example (see Apice#account_mt)
|
59
|
-
# @param [Hash] hsl saldo therock da moeda
|
60
|
-
# @return [String] texto formatado saldos
|
61
|
-
def formata_saldos(hsl)
|
62
|
-
cur = hsl[:currency]
|
63
|
-
vbq = bqd[:sl][cur.downcase.to_sym].to_d
|
64
|
-
vkr = hsl[:balance].to_d
|
65
|
-
format(
|
66
|
-
'%<mo>-5.5s %<kr>21.9f %<bq>21.9f %<ok>3.3s',
|
67
|
-
mo: cur.upcase,
|
68
|
-
kr: vkr,
|
69
|
-
bq: vbq,
|
70
|
-
ok: vkr == vbq ? 'OK' : 'NOK'
|
71
|
-
)
|
72
|
-
end
|
73
|
-
|
74
|
-
# @example (see Apice#ledger_mt)
|
75
|
-
# @param (see Bigquery#mtl_val1)
|
76
|
-
# @return [String] texto formatado ledger
|
77
|
-
def formata_ledger(hlx)
|
78
|
-
format(
|
79
|
-
'%<ky>6i %<dt>19.19s %<ty>-27.27s %<mo>-4.4s %<vl>20.7f',
|
80
|
-
ky: hlx[:id],
|
81
|
-
dt: Time.parse(hlx[:date]),
|
82
|
-
ty: hlx[:type],
|
83
|
-
mo: hlx[:currency].upcase,
|
84
|
-
vl: hlx[:price].to_d
|
85
|
-
)
|
86
|
-
end
|
87
|
-
|
88
|
-
# @return [String] texto totais numero de transacoes
|
89
|
-
def mostra_totais
|
90
|
-
vkl = exd[:kl].count
|
91
|
-
vnl = bqd[:nl].count
|
92
|
-
|
93
|
-
puts("LEDGER #{format('%<c>20i %<d>21i %<o>3.3s', c: vkl, d: vnl, o: vkl == vnl ? 'OK' : 'NOK')}")
|
94
|
-
end
|
95
|
-
|
96
|
-
# @return [String] texto transacoes ledger
|
97
|
-
def mostra_ledger
|
98
|
-
return unless ops[:v] && ledger.count.positive?
|
99
|
-
|
100
|
-
puts("\nledger data hora tipo moeda quantidade")
|
101
|
-
ledger.sort { |ant, prx| prx[:id] <=> ant[:id] }.each { |obj| puts(formata_ledger(obj)) }
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|