cns 0.1.1 → 0.1.2
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 +3 -3
- data/lib/cns.rb +11 -15
- data/lib/cns/apibc.rb +280 -0
- data/lib/cns/apice1.rb +227 -0
- data/lib/cns/apice2.rb +280 -0
- data/lib/cns/bigquery1.rb +23 -21
- data/lib/cns/bigquery2.rb +8 -6
- data/lib/cns/bigquery3.rb +33 -21
- data/lib/cns/bigquery4.rb +44 -42
- data/lib/cns/bitcoinde.rb +57 -46
- data/lib/cns/etherscan1.rb +40 -39
- data/lib/cns/etherscan2.rb +25 -23
- data/lib/cns/greymass1.rb +31 -30
- data/lib/cns/greymass2.rb +36 -35
- data/lib/cns/kraken.rb +51 -40
- data/lib/cns/paymium.rb +39 -32
- data/lib/cns/therock.rb +35 -27
- data/lib/cns/version.rb +1 -1
- metadata +5 -8
- data/lib/cns/apide.rb +0 -240
- data/lib/cns/apies.rb +0 -161
- data/lib/cns/apifr.rb +0 -139
- data/lib/cns/apigm.rb +0 -181
- data/lib/cns/apimt.rb +0 -138
- data/lib/cns/apius.rb +0 -167
data/lib/cns/apice2.rb
ADDED
@@ -0,0 +1,280 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require('openssl')
|
4
|
+
require('base64')
|
5
|
+
require('curb')
|
6
|
+
require('json')
|
7
|
+
|
8
|
+
# @author Hernani Rodrigues Vaz
|
9
|
+
module Cns
|
10
|
+
# classe para acesso dados centralized exchanges
|
11
|
+
class Apice
|
12
|
+
# @example trades_de
|
13
|
+
# {
|
14
|
+
# trades: [{
|
15
|
+
# trade_id: 'XUWWD3',
|
16
|
+
# trading_pair: 'btceur',
|
17
|
+
# is_external_wallet_trade: false,
|
18
|
+
# type: 'sell',
|
19
|
+
# amount_currency_to_trade: '0.1',
|
20
|
+
# price: 430,
|
21
|
+
# volume_currency_to_pay: 43,
|
22
|
+
# volume_currency_to_pay_after_fee: 42.79,
|
23
|
+
# amount_currency_to_trade_after_fee: 0.099,
|
24
|
+
# fee_currency_to_pay: 0.22,
|
25
|
+
# fee_currency_to_trade: '0.00100000',
|
26
|
+
# created_at: '2014-03-22T08:14:48+01:00',
|
27
|
+
# successfully_finished_at: '2014-03-25T14:03:22+01:00',
|
28
|
+
# state: 1,
|
29
|
+
# is_trade_marked_as_paid: true,
|
30
|
+
# trade_marked_as_paid_at: '2014-03-22T08:20:01+01:00',
|
31
|
+
# payment_method: 1,
|
32
|
+
# my_rating_for_trading_partner: 'positive',
|
33
|
+
# trading_partner_information: {
|
34
|
+
# username: 'emax2000',
|
35
|
+
# is_kyc_full: false,
|
36
|
+
# trust_level: 'bronze',
|
37
|
+
# amount_trades: 4,
|
38
|
+
# rating: 100,
|
39
|
+
# bank_name: 'CASSA DI RISPARMIO DI CIVITAVECCHIA SPA',
|
40
|
+
# bic: 'CRFIIT2CXXX',
|
41
|
+
# seat_of_bank: 'IT'
|
42
|
+
# }
|
43
|
+
# }, {}],
|
44
|
+
# page: { current: 1, last: 2 },
|
45
|
+
# errors: [],
|
46
|
+
# credits: 22
|
47
|
+
# }
|
48
|
+
# @param [Integer] pag pagina dos dados
|
49
|
+
# @param [Array<Hash>] ary acumulador dos dados
|
50
|
+
# @param [String] uri Uniform Resource Identifier do pedido HTTP
|
51
|
+
# @return [Array<Hash>] lista completa trades bitcoinde
|
52
|
+
def trades_de(pag = 0, ary = [], uri = 'https://api.bitcoin.de/v4/trades')
|
53
|
+
p = "#{uri}?#{URI.encode_www_form(state: 1, page: pag + 1)}"
|
54
|
+
r = JSON.parse(
|
55
|
+
Curl.get(p) { |h| h.headers = hde(p) }.body,
|
56
|
+
symbolize_names: true
|
57
|
+
)
|
58
|
+
ary += r[:trades]
|
59
|
+
r[:page][:current] < r[:page][:last] ? trades_de(pag + 1, ary) : ary
|
60
|
+
rescue StandardError
|
61
|
+
ary
|
62
|
+
end
|
63
|
+
|
64
|
+
# @example deposits_de
|
65
|
+
# {
|
66
|
+
# deposits: [
|
67
|
+
# {
|
68
|
+
# deposit_id: '177245',
|
69
|
+
# txid: '84f9e85bc5709cd471e3d58a7d0f42d2c4a7bbd888cabf844e200efbf0a7fda2',
|
70
|
+
# address: '1KK6HhG3quojFS4CY1mPcbyrjQ8BMDQxmT',
|
71
|
+
# amount: '0.13283',
|
72
|
+
# confirmations: 6,
|
73
|
+
# state: 2,
|
74
|
+
# created_at: '2014-01-31T22:01:30+01:00'
|
75
|
+
# },
|
76
|
+
# {}
|
77
|
+
# ],
|
78
|
+
# page: { current: 1, last: 1 },
|
79
|
+
# errors: [],
|
80
|
+
# credits: 23
|
81
|
+
# }
|
82
|
+
# @param (see trades_de)
|
83
|
+
# @return [Array<Hash>] lista completa uniformizada depositos bitcoinde
|
84
|
+
def deposits_de(pag = 0, ary = [], uri = 'https://api.bitcoin.de/v4/btc/deposits')
|
85
|
+
p = "#{uri}?#{URI.encode_www_form(state: 2, page: pag + 1)}"
|
86
|
+
r = JSON.parse(
|
87
|
+
Curl.get(p) { |h| h.headers = hde(p) }.body,
|
88
|
+
symbolize_names: true
|
89
|
+
)
|
90
|
+
ary += deposits_unif_de(r)
|
91
|
+
r[:page][:current] < r[:page][:last] ? deposits_de(pag + 1, ary) : ary
|
92
|
+
rescue StandardError
|
93
|
+
ary
|
94
|
+
end
|
95
|
+
|
96
|
+
# @example withdrawals_de
|
97
|
+
# {
|
98
|
+
# withdrawals: [
|
99
|
+
# {
|
100
|
+
# withdrawal_id: '136605',
|
101
|
+
# address: '1K9YMDDrmMV25EoYNqi7KUEK57Kn3TCNUJ',
|
102
|
+
# amount: '0.120087',
|
103
|
+
# network_fee: '0',
|
104
|
+
# comment: '',
|
105
|
+
# created_at: '2014-02-05T13:01:09+01:00',
|
106
|
+
# txid: '6264fe528116fcb87c812a306ca8409eecfec8fa941546c86f98984b882c8042',
|
107
|
+
# transferred_at: '2014-02-05T13:05:17+01:00',
|
108
|
+
# state: 1
|
109
|
+
# },
|
110
|
+
# {}
|
111
|
+
# ],
|
112
|
+
# page: { current: 1, last: 2 },
|
113
|
+
# errors: [],
|
114
|
+
# credits: 23
|
115
|
+
# }
|
116
|
+
# @param (see deposits_de)
|
117
|
+
# @return [Array<Hash>] lista completa uniformizada withdrawals bitcoinde
|
118
|
+
def withdrawals_de(pag = 0, ary = [], uri = 'https://api.bitcoin.de/v4/btc/withdrawals')
|
119
|
+
p = "#{uri}?#{URI.encode_www_form(state: 1, page: pag + 1)}"
|
120
|
+
r = JSON.parse(
|
121
|
+
Curl.get(p) { |h| h.headers = hde(p) }.body,
|
122
|
+
symbolize_names: true
|
123
|
+
)
|
124
|
+
ary += withdrawals_unif_de(r)
|
125
|
+
r[:page][:current] < r[:page][:last] ? withdrawals_de(pag + 1, ary) : ary
|
126
|
+
rescue StandardError
|
127
|
+
ary
|
128
|
+
end
|
129
|
+
|
130
|
+
# @example ledger_fr
|
131
|
+
# [
|
132
|
+
# {
|
133
|
+
# uuid: '50551e61-4e74-4ae7-85fd-9c2040542818',
|
134
|
+
# currency_amount: nil,
|
135
|
+
# state: 'executed',
|
136
|
+
# btc_fee: '0.0',
|
137
|
+
# currency_fee: '0.0',
|
138
|
+
# created_at: '2014-03-04T09:00Z',
|
139
|
+
# updated_at: '2014-03-04T09:00Z',
|
140
|
+
# currency: 'EUR',
|
141
|
+
# comment: '5723',
|
142
|
+
# amount: '100.0',
|
143
|
+
# type: 'WireDeposit',
|
144
|
+
# account_operations: [{
|
145
|
+
# uuid: 'b5058a68-cf99-4438-86d3-e773eba418ec',
|
146
|
+
# name: 'wire_deposit',
|
147
|
+
# amount: '100.0',
|
148
|
+
# currency: 'EUR',
|
149
|
+
# created_at: '2014-03-04T09:00Z',
|
150
|
+
# created_at_int: 1_393_923_644,
|
151
|
+
# is_trading_account: false
|
152
|
+
# }, {}]
|
153
|
+
# },
|
154
|
+
# {}
|
155
|
+
# ]
|
156
|
+
# @param (see trades_de)
|
157
|
+
# @return [Array<Hash>] lista ledger paymium
|
158
|
+
def ledger_fr(pag = 0, ary = [], uri = 'https://paymium.com/api/v1/user/orders')
|
159
|
+
r = JSON.parse(
|
160
|
+
Curl.get(uri, offset: pag) { |h| h.headers = hfr("#{uri}?#{URI.encode_www_form(offset: pag)}") }.body,
|
161
|
+
symbolize_names: true
|
162
|
+
)
|
163
|
+
r.empty? ? ary : ledger_fr(pag + r.size, ary + r)
|
164
|
+
rescue StandardError
|
165
|
+
ary
|
166
|
+
end
|
167
|
+
|
168
|
+
# @example ledger_mt
|
169
|
+
# {
|
170
|
+
# transactions: [
|
171
|
+
# {
|
172
|
+
# id: 305_445,
|
173
|
+
# date: '2014-03-06T10:59:13.000Z',
|
174
|
+
# type: 'withdraw',
|
175
|
+
# price: 97.47,
|
176
|
+
# currency: 'EUR',
|
177
|
+
# fund_id: nil,
|
178
|
+
# order_id: nil,
|
179
|
+
# trade_id: nil,
|
180
|
+
# note: 'BOV withdraw',
|
181
|
+
# transfer_detail: nil
|
182
|
+
# },
|
183
|
+
# {}
|
184
|
+
# ],
|
185
|
+
# meta: {
|
186
|
+
# total_count: nil,
|
187
|
+
# first: { page: 1, href: 'https://api.therocktrading.com/v1/transactions?page=1' },
|
188
|
+
# previous: nil,
|
189
|
+
# current: { page: 1, href: 'https://api.therocktrading.com/v1/transactions?page=1' },
|
190
|
+
# next: { page: 2, href: 'https://api.therocktrading.com/v1/transactions?page=2' },
|
191
|
+
# last: nil
|
192
|
+
# }
|
193
|
+
# }
|
194
|
+
# @param (see trades_de)
|
195
|
+
# @return [Array<Hash>] lista ledger therock
|
196
|
+
def ledger_mt(pag = 1, ary = [], uri = 'https://api.therocktrading.com/v1/transactions')
|
197
|
+
r = JSON.parse(
|
198
|
+
Curl.get(uri, page: pag) { |h| h.headers = hmt("#{uri}?#{URI.encode_www_form(page: pag)}") }.body,
|
199
|
+
symbolize_names: true
|
200
|
+
)[:transactions]
|
201
|
+
r.empty? ? ary : ledger_mt(pag + r.size, ary + r)
|
202
|
+
rescue StandardError
|
203
|
+
ary
|
204
|
+
end
|
205
|
+
|
206
|
+
# @example trades_us
|
207
|
+
# {
|
208
|
+
# error: [],
|
209
|
+
# result: {
|
210
|
+
# trades: {
|
211
|
+
# "TVINF5-TIOUB-YFNGKE": {
|
212
|
+
# ordertxid: 'ORPSUW-YKP4F-UJZOC6',
|
213
|
+
# pair: 'XETHXXBT',
|
214
|
+
# time: 1_463_435_684.8387,
|
215
|
+
# type: 'buy',
|
216
|
+
# ordertype: 'market',
|
217
|
+
# price: '0.024989',
|
218
|
+
# cost: '1.193973',
|
219
|
+
# fee: '0.003104',
|
220
|
+
# vol: '47.77994129',
|
221
|
+
# margin: '0.000000',
|
222
|
+
# misc: ''
|
223
|
+
# },
|
224
|
+
# "OUTRO-TRADE-ID": {}
|
225
|
+
# },
|
226
|
+
# count: 157
|
227
|
+
# }
|
228
|
+
# }
|
229
|
+
# @param [Integer] ofs offset dos dados
|
230
|
+
# @param [Hash] has acumulador dos dados
|
231
|
+
# @param (see account_us)
|
232
|
+
# @return [Hash] dados trades kraken
|
233
|
+
def trades_us(ofs = 0, has = {}, urb = 'https://api.kraken.com/0/private', uri = 'TradesHistory', non = nnc)
|
234
|
+
r = JSON.parse(
|
235
|
+
Curl.post("#{urb}/#{uri}", nonce: non, ofs: ofs) { |h| h.headers = hus(uri, nonce: non, ofs: ofs) }.body,
|
236
|
+
symbolize_names: true
|
237
|
+
)[:result]
|
238
|
+
has.merge!(r[:trades])
|
239
|
+
ofs += 50
|
240
|
+
ofs < r[:count] ? trades_us(ofs, has) : has
|
241
|
+
rescue StandardError
|
242
|
+
has
|
243
|
+
end
|
244
|
+
|
245
|
+
# @example ledger_us
|
246
|
+
# {
|
247
|
+
# error: [],
|
248
|
+
# result: {
|
249
|
+
# ledger: {
|
250
|
+
# "LXXURB-ITI7S-CXVERS": {
|
251
|
+
# refid: 'ACCHF3A-RIBBMO-VYBESY',
|
252
|
+
# time: 1_543_278_716.2775,
|
253
|
+
# type: 'withdrawal',
|
254
|
+
# subtype: '',
|
255
|
+
# aclass: 'currency',
|
256
|
+
# asset: 'ZEUR',
|
257
|
+
# amount: '-15369.6200',
|
258
|
+
# fee: '0.0900',
|
259
|
+
# balance: '0.0062'
|
260
|
+
# },
|
261
|
+
# "OUTRO-LEDGER-ID": {}
|
262
|
+
# },
|
263
|
+
# count: 376
|
264
|
+
# }
|
265
|
+
# }
|
266
|
+
# @param (see trades_us)
|
267
|
+
# @return [Hash] dados ledger kraken
|
268
|
+
def ledger_us(ofs = 0, has = {}, urb = 'https://api.kraken.com/0/private', uri = 'Ledgers', non = nnc)
|
269
|
+
r = JSON.parse(
|
270
|
+
Curl.post("#{urb}/#{uri}", nonce: non, ofs: ofs) { |h| h.headers = hus(uri, nonce: non, ofs: ofs) }.body,
|
271
|
+
symbolize_names: true
|
272
|
+
)[:result]
|
273
|
+
has.merge!(r[:ledger])
|
274
|
+
ofs += 50
|
275
|
+
ofs < r[:count] ? ledger_us(ofs, has) : has
|
276
|
+
rescue StandardError
|
277
|
+
has
|
278
|
+
end
|
279
|
+
end
|
280
|
+
end
|
data/lib/cns/bigquery1.rb
CHANGED
@@ -7,7 +7,7 @@ require('bigdecimal/util')
|
|
7
7
|
module Cns
|
8
8
|
BD = 'hernanirvaz.coins'
|
9
9
|
|
10
|
-
#
|
10
|
+
# (see Bigquery)
|
11
11
|
class Bigquery
|
12
12
|
# @return [Google::Cloud::Bigquery] API bigquery
|
13
13
|
attr_reader :api
|
@@ -22,7 +22,7 @@ module Cns
|
|
22
22
|
# @option pop [Hash] :h ({}) configuracao ajuste reposicionamento temporal
|
23
23
|
# @option pop [Boolean] :v (false) mostra transacoes trades & ledger?
|
24
24
|
# @option pop [Boolean] :t (false) mostra transacoes todas ou somente novas?
|
25
|
-
# @return [Bigquery] API bigquery
|
25
|
+
# @return [Bigquery] API bigquery
|
26
26
|
def initialize(pop)
|
27
27
|
# usa env GOOGLE_APPLICATION_CREDENTIALS para obter credentials
|
28
28
|
# @see https://cloud.google.com/bigquery/docs/authentication/getting-started
|
@@ -30,57 +30,59 @@ module Cns
|
|
30
30
|
@ops = pop
|
31
31
|
end
|
32
32
|
|
33
|
-
# situacao completa entre kraken/bitcoinde/paymium/therock & bigquery
|
33
|
+
# mostra situacao completa entre kraken/bitcoinde/paymium/therock/etherscan/greymass & bigquery
|
34
34
|
def mostra_tudo
|
35
|
-
apius.mostra_resumo
|
36
|
-
apide.mostra_resumo
|
35
|
+
# apius.mostra_resumo
|
36
|
+
# apide.mostra_resumo
|
37
37
|
apifr.mostra_resumo
|
38
|
-
apimt.mostra_resumo
|
39
|
-
apies.mostra_resumo
|
40
|
-
apigm.mostra_resumo
|
38
|
+
# apimt.mostra_resumo
|
39
|
+
# apies.mostra_resumo
|
40
|
+
# apigm.mostra_resumo
|
41
41
|
end
|
42
42
|
|
43
|
-
# insere (caso existam) transacoes novas
|
43
|
+
# insere (caso existam) transacoes novas kraken/bitcoinde/paymium/therock/etherscan/greymass no bigquery
|
44
44
|
def processa_tudo
|
45
45
|
processa_us
|
46
46
|
processa_de
|
47
47
|
processa_fr
|
48
48
|
processa_mt
|
49
|
-
processa_eos
|
50
49
|
processa_eth
|
50
|
+
processa_eos
|
51
51
|
end
|
52
52
|
|
53
|
-
|
53
|
+
private
|
54
|
+
|
55
|
+
# insere transacoes exchange kraken novas nas tabelas ust (trades), usl (ledger)
|
54
56
|
def processa_us
|
55
57
|
puts(format("%<n>2i TRADES KRAKEN INSERIDAS #{BD}.ust", n: apius.trades.empty? ? 0 : dml(ust_ins)))
|
56
58
|
puts(format("%<n>2i LEDGER KRAKEN INSERIDAS #{BD}.usl", n: apius.ledger.empty? ? 0 : dml(usl_ins)))
|
57
59
|
end
|
58
60
|
|
59
|
-
# insere transacoes bitcoinde novas nas tabelas det (trades), del (ledger)
|
61
|
+
# insere transacoes exchange bitcoinde novas nas tabelas det (trades), del (ledger)
|
60
62
|
def processa_de
|
61
63
|
puts(format("%<n>2i TRADES BITCOINDE INSERIDAS #{BD}.det", n: apide.trades.empty? ? 0 : dml(det_ins)))
|
62
64
|
puts(format("%<n>2i LEDGER BITCOINDE INSERIDAS #{BD}.del", n: apide.ledger.empty? ? 0 : dml(del_ins)))
|
63
65
|
end
|
64
66
|
|
65
|
-
# insere transacoes paymium novas na tabela fr (ledger)
|
67
|
+
# insere transacoes exchange paymium novas na tabela fr (ledger)
|
66
68
|
def processa_fr
|
67
69
|
puts(format("%<n>2i LEDGER PAYMIUM INSERIDAS #{BD}.fr", n: apifr.ledger.empty? ? 0 : dml(frl_ins)))
|
68
70
|
end
|
69
71
|
|
70
|
-
# insere transacoes
|
72
|
+
# insere transacoes exchange therock novas na tabela mt (ledger)
|
71
73
|
def processa_mt
|
72
74
|
puts(format("%<n>2i LEDGER THEROCK INSERIDAS #{BD}.mt", n: apimt.ledger.empty? ? 0 : dml(mtl_ins)))
|
73
75
|
end
|
74
76
|
|
75
|
-
# insere transacoes novas
|
76
|
-
def
|
77
|
-
puts(format("%<n>2i
|
77
|
+
# insere transacoes blockchain novas nas tabelas etht (norml), ethk (token)
|
78
|
+
def processa_eth
|
79
|
+
puts(format("%<n>2i TRANSACOES ETH INSERIDAS #{BD}.etht", n: apies.novtx.empty? ? 0 : dml(etht_ins)))
|
80
|
+
puts(format("%<n>2i TOKEN EVENTS ETH INSERIDAS #{BD}.ethk", n: apies.novkx.empty? ? 0 : dml(ethk_ins)))
|
78
81
|
end
|
79
82
|
|
80
|
-
# insere transacoes novas
|
81
|
-
def
|
82
|
-
puts(format("%<n>2i
|
83
|
-
puts(format("%<n>2i LINHAS INSERIDAS #{BD}.ethk", n: apies.novkx.count.positive? ? dml(ethk_ins) : 0))
|
83
|
+
# insere transacoes blockchain novas na tabela eos
|
84
|
+
def processa_eos
|
85
|
+
puts(format("%<n>2i TRANSACOES EOS INSERIDAS #{BD}.eos ", n: apigm.novax.empty? ? 0 : dml(eost_ins)))
|
84
86
|
end
|
85
87
|
|
86
88
|
# cria job bigquery & verifica execucao
|
data/lib/cns/bigquery2.rb
CHANGED
@@ -4,7 +4,9 @@
|
|
4
4
|
module Cns
|
5
5
|
# (see Bigquery)
|
6
6
|
class Bigquery
|
7
|
-
|
7
|
+
private
|
8
|
+
|
9
|
+
# @return [Etherscan] API blockchain ETH
|
8
10
|
def apies
|
9
11
|
@apies ||= Etherscan.new(
|
10
12
|
{
|
@@ -16,7 +18,7 @@ module Cns
|
|
16
18
|
)
|
17
19
|
end
|
18
20
|
|
19
|
-
# @return [Greymass] API
|
21
|
+
# @return [Greymass] API blockchain EOS
|
20
22
|
def apigm
|
21
23
|
@apigm ||= Greymass.new(
|
22
24
|
{
|
@@ -27,7 +29,7 @@ module Cns
|
|
27
29
|
)
|
28
30
|
end
|
29
31
|
|
30
|
-
# @return [Kraken] API kraken
|
32
|
+
# @return [Kraken] API exchange kraken
|
31
33
|
def apius
|
32
34
|
@apius ||= Kraken.new(
|
33
35
|
{
|
@@ -39,7 +41,7 @@ module Cns
|
|
39
41
|
)
|
40
42
|
end
|
41
43
|
|
42
|
-
# @return [Bitcoinde] API
|
44
|
+
# @return [Bitcoinde] API exchange bitcoinde
|
43
45
|
def apide
|
44
46
|
@apide ||= Bitcoinde.new(
|
45
47
|
{
|
@@ -51,7 +53,7 @@ module Cns
|
|
51
53
|
)
|
52
54
|
end
|
53
55
|
|
54
|
-
# @return [Paymium] API
|
56
|
+
# @return [Paymium] API exchange paymium
|
55
57
|
def apifr
|
56
58
|
@apifr ||= Paymium.new(
|
57
59
|
{
|
@@ -62,7 +64,7 @@ module Cns
|
|
62
64
|
)
|
63
65
|
end
|
64
66
|
|
65
|
-
# @return [TheRock] API
|
67
|
+
# @return [TheRock] API exchange therock
|
66
68
|
def apimt
|
67
69
|
@apimt ||= TheRock.new(
|
68
70
|
{
|
data/lib/cns/bigquery3.rb
CHANGED
@@ -5,16 +5,20 @@ require('bigdecimal/util')
|
|
5
5
|
|
6
6
|
# @author Hernani Rodrigues Vaz
|
7
7
|
module Cns
|
8
|
-
#
|
8
|
+
# (see Bigquery)
|
9
9
|
class Bigquery
|
10
|
-
|
10
|
+
private
|
11
|
+
|
12
|
+
# @return [String] comando insert SQL formatado etht (norml)
|
11
13
|
def etht_ins
|
12
14
|
"insert #{BD}.etht(blocknumber,timestamp,txhash,nonce,blockhash,transactionindex,axfrom,axto,iax," \
|
13
15
|
'value,gas,gasprice,gasused,iserror,txreceipt_status,input,contractaddress,dias' \
|
14
16
|
") VALUES#{apies.novtx.map { |e| etht_val1(e) }.join(',')}"
|
15
17
|
end
|
16
18
|
|
17
|
-
# @
|
19
|
+
# @example (see Apibc#norml_es)
|
20
|
+
# @param [Hash] htx transacao norml etherscan
|
21
|
+
# @return [String] valores formatados etht (norml parte1)
|
18
22
|
def etht_val1(htx)
|
19
23
|
"(#{Integer(htx[:blockNumber])}," \
|
20
24
|
"#{Integer(htx[:timeStamp])}," \
|
@@ -28,7 +32,8 @@ module Cns
|
|
28
32
|
"#{etht_val2(htx)}"
|
29
33
|
end
|
30
34
|
|
31
|
-
# @
|
35
|
+
# @param (see etht_val1)
|
36
|
+
# @return [String] valores formatados etht (norml parte2)
|
32
37
|
def etht_val2(htx)
|
33
38
|
"cast('#{htx[:value]}' as numeric)," \
|
34
39
|
"cast('#{htx[:gas]}' as numeric)," \
|
@@ -39,21 +44,24 @@ module Cns
|
|
39
44
|
"#{etht_val3(htx)}"
|
40
45
|
end
|
41
46
|
|
42
|
-
# @
|
47
|
+
# @param (see etht_val1)
|
48
|
+
# @return [String] valores formatados etht (norml parte3)
|
43
49
|
def etht_val3(htx)
|
44
50
|
"#{htx[:input].length.zero? ? 'null' : "'#{htx[:input]}'"}," \
|
45
51
|
"#{htx[:contractAddress].length.zero? ? 'null' : "'#{htx[:contractAddress]}'"}," \
|
46
52
|
"#{Integer(ops[:h][htx[:blockNumber]] || 0)})"
|
47
53
|
end
|
48
54
|
|
49
|
-
# @return [String] comando insert SQL formatado ethk (
|
55
|
+
# @return [String] comando insert SQL formatado ethk (token)
|
50
56
|
def ethk_ins
|
51
57
|
"insert #{BD}.ethk(blocknumber,timestamp,txhash,nonce,blockhash,transactionindex,axfrom,axto,iax," \
|
52
58
|
'value,tokenname,tokensymbol,tokendecimal,gas,gasprice,gasused,input,contractaddress,dias' \
|
53
59
|
") VALUES#{apies.novkx.map { |e| ethk_val1(e) }.join(',')}"
|
54
60
|
end
|
55
61
|
|
56
|
-
# @
|
62
|
+
# @example (see Apibc#token_es)
|
63
|
+
# @param [Hash] hkx token event etherscan
|
64
|
+
# @return [String] valores formatados ethk (token parte1)
|
57
65
|
def ethk_val1(hkx)
|
58
66
|
"(#{Integer(hkx[:blockNumber])}," \
|
59
67
|
"#{Integer(hkx[:timeStamp])}," \
|
@@ -67,7 +75,8 @@ module Cns
|
|
67
75
|
"#{ethk_val2(hkx)}"
|
68
76
|
end
|
69
77
|
|
70
|
-
# @
|
78
|
+
# @param (see ethk_val1)
|
79
|
+
# @return [String] valores formatados ethk (token parte2)
|
71
80
|
def ethk_val2(hkx)
|
72
81
|
"cast('#{hkx[:value]}' as numeric)," \
|
73
82
|
"'#{hkx[:tokenName]}'," \
|
@@ -79,7 +88,8 @@ module Cns
|
|
79
88
|
"#{ethk_val3(hkx)}"
|
80
89
|
end
|
81
90
|
|
82
|
-
# @
|
91
|
+
# @param (see ethk_val1)
|
92
|
+
# @return [String] valores formatados ethk (token parte3)
|
83
93
|
def ethk_val3(hkx)
|
84
94
|
"#{hkx[:input].length.zero? ? 'null' : "'#{hkx[:input]}'"}," \
|
85
95
|
"#{hkx[:contractAddress].length.zero? ? 'null' : "'#{hkx[:contractAddress]}'"}," \
|
@@ -92,31 +102,33 @@ module Cns
|
|
92
102
|
") VALUES#{apigm.novax.map { |e| eost_val1(e) }.join(',')}"
|
93
103
|
end
|
94
104
|
|
95
|
-
# @
|
105
|
+
# @example (see Apibc#ledger_gm)
|
106
|
+
# @param [Hash] hlx ledger greymass
|
96
107
|
# @return [String] valores formatados para insert eos (parte1)
|
97
|
-
def eost_val1(
|
98
|
-
a =
|
99
|
-
"(#{
|
100
|
-
"#{
|
101
|
-
"#{
|
102
|
-
"DATETIME(TIMESTAMP('#{
|
108
|
+
def eost_val1(hlx)
|
109
|
+
a = hlx[:action_trace][:act]
|
110
|
+
"(#{hlx[:global_action_seq]}," \
|
111
|
+
"#{hlx[:account_action_seq]}," \
|
112
|
+
"#{hlx[:block_num]}," \
|
113
|
+
"DATETIME(TIMESTAMP('#{hlx[:block_time]}'))," \
|
103
114
|
"'#{a[:account]}'," \
|
104
115
|
"'#{a[:name]}'," \
|
105
|
-
"#{eost_val2(
|
116
|
+
"#{eost_val2(hlx, a)}"
|
106
117
|
end
|
107
118
|
|
108
|
-
# @param
|
119
|
+
# @param (see eost_val1)
|
120
|
+
# @param [Hash] act dados da acao
|
109
121
|
# @return [String] valores formatados para insert eos (parte2)
|
110
|
-
def eost_val2(
|
122
|
+
def eost_val2(hlx, act)
|
111
123
|
d = act[:data]
|
112
124
|
q = d[:quantity].to_s
|
113
125
|
s = d[:memo].inspect
|
114
126
|
"'#{d[:from]}'," \
|
115
127
|
"'#{d[:to]}'," \
|
116
|
-
"'#{
|
128
|
+
"'#{hlx[:iax]}'," \
|
117
129
|
"#{q.to_d},'#{q[/[[:upper:]]+/]}'," \
|
118
130
|
"nullif('#{s.gsub(/['"]/, '')}','nil')," \
|
119
|
-
"#{ops[:h][String(
|
131
|
+
"#{ops[:h][String(hlx[:itx])] || 0})"
|
120
132
|
end
|
121
133
|
end
|
122
134
|
end
|