cns 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|