cns 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- 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/apies.rb
DELETED
@@ -1,161 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require('faraday')
|
4
|
-
require('json')
|
5
|
-
|
6
|
-
# @author Hernani Rodrigues Vaz
|
7
|
-
module Cns
|
8
|
-
# classe para acesso dados blockchain ETH
|
9
|
-
class Apies
|
10
|
-
# @return [String] apikey a juntar aos pedidos HTTP url:
|
11
|
-
attr_reader :key
|
12
|
-
# @return [String] base URL to use as a prefix for all requests
|
13
|
-
attr_reader :url
|
14
|
-
|
15
|
-
# @param [String] chv apikey a juntar aos pedidos HTTP url:
|
16
|
-
# @param [String] www base URL to use as a prefix for all requests
|
17
|
-
# @return [Apies] API etherscan base
|
18
|
-
def initialize(chv: ENV['ETHERSCAN_API_KEY'], www: 'https://api.etherscan.io/')
|
19
|
-
@key = chv
|
20
|
-
@url = www
|
21
|
-
end
|
22
|
-
|
23
|
-
# @return [<Symbol>] adapter for the connection - default :net_http
|
24
|
-
def adapter
|
25
|
-
@adapter ||= Faraday.default_adapter
|
26
|
-
end
|
27
|
-
|
28
|
-
# @return [<Faraday::Connection>] connection object with an URL & adapter
|
29
|
-
def conn
|
30
|
-
@conn ||=
|
31
|
-
Faraday.new(url: url) do |c|
|
32
|
-
c.request(:url_encoded)
|
33
|
-
c.adapter(adapter)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
# @example
|
38
|
-
# [
|
39
|
-
# { account: '0x...', balance: '4000000000000000000' },
|
40
|
-
# { account: '0x...', balance: '87000000000000000000' }
|
41
|
-
# ]
|
42
|
-
# @param [String] ads lista enderecos carteiras ETH (max 20)
|
43
|
-
# @return [Array<Hash>] devolve lista com dados & saldo de carteiras ETH
|
44
|
-
def account(ads)
|
45
|
-
raise(Erro, 'maximo de 20 enderecos') if ads.size > 20
|
46
|
-
|
47
|
-
get(action: 'balancemulti', address: ads.join(','), tag: 'latest')[:result]
|
48
|
-
end
|
49
|
-
|
50
|
-
# @example
|
51
|
-
# [
|
52
|
-
# {
|
53
|
-
# blockNumber: '4984535',
|
54
|
-
# timeStamp: '1517094794',
|
55
|
-
# hash: '0x...',
|
56
|
-
# nonce: '10',
|
57
|
-
# blockHash: '0x...',
|
58
|
-
# transactionIndex: '17',
|
59
|
-
# from: '0x...',
|
60
|
-
# to: '0x...',
|
61
|
-
# value: '52627271000000000000',
|
62
|
-
# gas: '21000',
|
63
|
-
# gasPrice: '19000000000',
|
64
|
-
# isError: '0',
|
65
|
-
# txreceipt_status: '1',
|
66
|
-
# input: '0x',
|
67
|
-
# contractAddress: '',
|
68
|
-
# gasUsed: '21000',
|
69
|
-
# cumulativeGasUsed: '566293',
|
70
|
-
# confirmations: '5848660'
|
71
|
-
# },
|
72
|
-
# {}
|
73
|
-
# ]
|
74
|
-
# @param [String] add endereco carteira ETH
|
75
|
-
# @param [Hash] arg argumentos trabalho
|
76
|
-
# @option arg [Integer] :start_block starting blockNo to retrieve results
|
77
|
-
# @option arg [Integer] :end_block ending blockNo to retrieve results
|
78
|
-
# @option arg [String] :sort asc -> ascending order, desc -> descending order
|
79
|
-
# @option arg [Integer] :page to get paginated results
|
80
|
-
# @option arg [Integer] :offset max records to return
|
81
|
-
# @return [Array<Hash>] lista de transacoes
|
82
|
-
def norml_tx(add, **arg)
|
83
|
-
raise(Erro, 'endereco tem de ser definido') if add.nil? || add.empty?
|
84
|
-
|
85
|
-
ledger(**arg.merge(action: 'txlist', address: add))
|
86
|
-
end
|
87
|
-
|
88
|
-
# @example registo duplicado
|
89
|
-
# [
|
90
|
-
# {
|
91
|
-
# blockNumber: '3967652',
|
92
|
-
# timeStamp: '1499081515',
|
93
|
-
# hash: '0x registo duplicado com todos os dados iguais',
|
94
|
-
# nonce: '3',
|
95
|
-
# blockHash: '0x00a49e999036dc13dc6c4244bb1d51d3146fe7f00bfb500a7624d82e299c7328',
|
96
|
-
# from: '0xd0a6e6c54dbc68db5db3a091b171a77407ff7ccf',
|
97
|
-
# contractAddress: '0x86fa049857e0209aa7d9e616f7eb3b3b78ecfdb0',
|
98
|
-
# to: '0x...',
|
99
|
-
# value: '0',
|
100
|
-
# tokenName: 'EOS',
|
101
|
-
# tokenSymbol: 'EOS',
|
102
|
-
# tokenDecimal: '18',
|
103
|
-
# transactionIndex: '83',
|
104
|
-
# gas: '173399',
|
105
|
-
# gasPrice: '21000000000',
|
106
|
-
# gasUsed: '173398',
|
107
|
-
# input: 'deprecated',
|
108
|
-
# cumulativeGasUsed: '7484878',
|
109
|
-
# confirmations: '3442641'
|
110
|
-
# },
|
111
|
-
# {}
|
112
|
-
# ]
|
113
|
-
# @param add (see norml_tx)
|
114
|
-
# @param [String] cdd token address (nil to get a list of all ERC20 transactions)
|
115
|
-
# @param arg (see norml_tx)
|
116
|
-
# @option arg (see norml_tx)
|
117
|
-
# @return [Array<Hash>] lista de token transfer events
|
118
|
-
def token_tx(add, cdd = nil, **arg)
|
119
|
-
raise(Erro, 'contrato ou endereco tem de estar definido') if (cdd || add).nil? || (cdd || add).empty?
|
120
|
-
|
121
|
-
# registos duplicados aparecem em token events (ver exemplo acima)
|
122
|
-
# -quando ha erros na blockchain (acho)
|
123
|
-
# -quando ha token events identicos no mesmo block (acho)
|
124
|
-
ledger(**arg.merge(action: 'tokentx', address: add, contractaddress: cdd))
|
125
|
-
end
|
126
|
-
|
127
|
-
# @param [Integer] pag pagina das transacoes a devolver
|
128
|
-
# @param [Array<Hash>] ary lista acumuladora das transacoes a devolver
|
129
|
-
# @param arg (see norml_tx)
|
130
|
-
# @option arg (see norml_tx)
|
131
|
-
# @return [Array<Hash>] devolve lista de transacoes/token transfer events
|
132
|
-
def ledger(pag = 0, ary = [], **arg)
|
133
|
-
r = get(**arg.merge(page: pag + 1, offset: 10_000))[:result]
|
134
|
-
ary += r
|
135
|
-
r.count < 10_000 ? ary : ledger(pag + 1, ary, **arg)
|
136
|
-
rescue StandardError
|
137
|
-
ary
|
138
|
-
end
|
139
|
-
|
140
|
-
private
|
141
|
-
|
142
|
-
# @example
|
143
|
-
# {
|
144
|
-
# status: '1',
|
145
|
-
# message: 'OK',
|
146
|
-
# result: []
|
147
|
-
# }
|
148
|
-
# @return [Hash] resultado do HTTP request
|
149
|
-
def get(**arg)
|
150
|
-
JSON.parse(
|
151
|
-
(conn.get('api') do |o|
|
152
|
-
o.headers = { content_type: 'application/json', accept: 'application/json', user_agent: 'etherscan;ruby' }
|
153
|
-
o.params = arg.merge(module: 'account', apikey: key).reject { |_, v| v.nil? }
|
154
|
-
end).body,
|
155
|
-
symbolize_names: true
|
156
|
-
)
|
157
|
-
rescue StandardError
|
158
|
-
{ result: [] }
|
159
|
-
end
|
160
|
-
end
|
161
|
-
end
|
data/lib/cns/apifr.rb
DELETED
@@ -1,139 +0,0 @@
|
|
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 processar dados no paymium
|
11
|
-
class Apifr
|
12
|
-
# @return [String] API key
|
13
|
-
attr_reader :aky
|
14
|
-
# @return [String] API secret
|
15
|
-
attr_reader :asc
|
16
|
-
# @return [String] API url base
|
17
|
-
attr_reader :urb
|
18
|
-
|
19
|
-
# @param [String] pky API key
|
20
|
-
# @param [String] psc API secret
|
21
|
-
# @param [Hash] ops parametrizacao base da API
|
22
|
-
# @return [Apius] API paymium base
|
23
|
-
def initialize(
|
24
|
-
pky: ENV['PAYMIUM_API_KEY'],
|
25
|
-
psc: ENV['PAYMIUM_API_SECRET'],
|
26
|
-
ops: { www: 'https://paymium.com', ver: 1 }
|
27
|
-
)
|
28
|
-
@aky = pky
|
29
|
-
@asc = psc
|
30
|
-
@urb = "#{ops[:www]}/api/v#{ops[:ver]}"
|
31
|
-
end
|
32
|
-
|
33
|
-
# @example
|
34
|
-
# {
|
35
|
-
# name: '...',
|
36
|
-
# email: '...',
|
37
|
-
# locale: 'en',
|
38
|
-
# channel_id: '...',
|
39
|
-
# meta_state: 'approved',
|
40
|
-
# balance_eur: '0.0',
|
41
|
-
# locked_eur: '0.0',
|
42
|
-
# balance_btc: '0.0',
|
43
|
-
# locked_btc: '0.0',
|
44
|
-
# balance_lbtc: '0.0',
|
45
|
-
# locked_lbtc: '0.0'
|
46
|
-
# }
|
47
|
-
# @return [Hash] saldos no paymium
|
48
|
-
def account
|
49
|
-
api_get('user')
|
50
|
-
end
|
51
|
-
|
52
|
-
# @example
|
53
|
-
# [
|
54
|
-
# {
|
55
|
-
# uuid: '50551e61-4e74-4ae7-85fd-9c2040542818',
|
56
|
-
# currency_amount: nil,
|
57
|
-
# state: 'executed',
|
58
|
-
# btc_fee: '0.0',
|
59
|
-
# currency_fee: '0.0',
|
60
|
-
# created_at: '2014-03-04T09:00Z',
|
61
|
-
# updated_at: '2014-03-04T09:00Z',
|
62
|
-
# currency: 'EUR',
|
63
|
-
# comment: '5723',
|
64
|
-
# amount: '100.0',
|
65
|
-
# type: 'WireDeposit',
|
66
|
-
# account_operations: [{
|
67
|
-
# uuid: 'b5058a68-cf99-4438-86d3-e773eba418ec',
|
68
|
-
# name: 'wire_deposit',
|
69
|
-
# amount: '100.0',
|
70
|
-
# currency: 'EUR',
|
71
|
-
# created_at: '2014-03-04T09:00Z',
|
72
|
-
# created_at_int: 1_393_923_644,
|
73
|
-
# is_trading_account: false
|
74
|
-
# }, {}]
|
75
|
-
# }, {}
|
76
|
-
# ]
|
77
|
-
# @return [Hash] ledger no paymium
|
78
|
-
def ledger(pag = 0, ary = [])
|
79
|
-
r = api_get('user/orders', offset: pag)
|
80
|
-
r.empty? ? ary : ledger(pag + r.size, ary + r)
|
81
|
-
rescue StandardError
|
82
|
-
ary
|
83
|
-
end
|
84
|
-
|
85
|
-
private
|
86
|
-
|
87
|
-
# HTTP GET request for public paymium API queries.
|
88
|
-
def api_get(uri, **ops)
|
89
|
-
resposta(Curl.get("#{urb}/#{uri}", ops) { |r| r.headers = hdrs(url(uri, ops), nonce, {}) })
|
90
|
-
end
|
91
|
-
|
92
|
-
# HTTP POST request for private paymium API queries involving user credentials.
|
93
|
-
def api_post(uri, **ops)
|
94
|
-
resposta(Curl.post("#{urb}/#{uri}", ops) { |r| r.headers = hdrs(uri, nonce, ops) })
|
95
|
-
end
|
96
|
-
|
97
|
-
# @return [String] URL do pedido formatado com todos os parametros
|
98
|
-
def url(uri, ops)
|
99
|
-
ops.empty? ? uri : "#{uri}?#{URI.encode_www_form(ops)}"
|
100
|
-
end
|
101
|
-
|
102
|
-
# @return [Hash] headers necessarios para pedido HTTP
|
103
|
-
def hdrs(qry, non, ops)
|
104
|
-
{
|
105
|
-
content_type: 'application/json',
|
106
|
-
'Api-Key': aky,
|
107
|
-
'Api-Nonce': non,
|
108
|
-
'Api-Signature': auth(qry, non, URI.encode_www_form(ops))
|
109
|
-
}
|
110
|
-
end
|
111
|
-
|
112
|
-
# @return [String] assinarura codificada dos pedidos HTTP
|
113
|
-
def auth(qry, non, par)
|
114
|
-
raise(ArgumentError, 'API Key is not set') unless aky
|
115
|
-
raise(ArgumentError, 'API Secret is not set') unless asc
|
116
|
-
|
117
|
-
OpenSSL::HMAC.hexdigest('sha256', asc, [non, "#{urb}/#{qry}", par].join)
|
118
|
-
end
|
119
|
-
|
120
|
-
# @return [Integer] continually-increasing unsigned integer nonce from the current Unix Time
|
121
|
-
def nonce
|
122
|
-
Integer(Float(Time.now) * 1e6)
|
123
|
-
end
|
124
|
-
|
125
|
-
# @return [Hash] resposta do pedido HTTP
|
126
|
-
def resposta(http)
|
127
|
-
http.response_code == 200 ? JSON.parse(http.body, symbolize_names: true) : http.status
|
128
|
-
rescue JSON::ParserError,
|
129
|
-
EOFError,
|
130
|
-
Errno::ECONNRESET,
|
131
|
-
Errno::EINVAL,
|
132
|
-
Net::HTTPBadResponse,
|
133
|
-
Net::HTTPHeaderSyntaxError,
|
134
|
-
Net::ProtocolError,
|
135
|
-
Timeout::Error => e
|
136
|
-
"Erro da API paymium #{e.inspect}"
|
137
|
-
end
|
138
|
-
end
|
139
|
-
end
|
data/lib/cns/apigm.rb
DELETED
@@ -1,181 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require('faraday')
|
4
|
-
require('json')
|
5
|
-
|
6
|
-
module Cns
|
7
|
-
# classe para acesso dados blockchain EOS
|
8
|
-
class Apigm
|
9
|
-
# @return [String] base URL to use as a prefix for all requests
|
10
|
-
attr_reader :url
|
11
|
-
|
12
|
-
# @param [String] www base URL to use as a prefix for all requests
|
13
|
-
# @return [Apigm] acesso dados blockchain EOS
|
14
|
-
def initialize(www: 'https://eos.greymass.com')
|
15
|
-
@url = www
|
16
|
-
end
|
17
|
-
|
18
|
-
# @return [<Symbol>] adapter for the connection - default :net_http
|
19
|
-
def adapter
|
20
|
-
@adapter ||= Faraday.default_adapter
|
21
|
-
end
|
22
|
-
|
23
|
-
# @return [<Faraday::Connection>] connection object with an URL & adapter
|
24
|
-
def conn
|
25
|
-
@conn ||=
|
26
|
-
Faraday.new(url: url) do |c|
|
27
|
-
c.request(:url_encoded)
|
28
|
-
c.adapter(adapter)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
# @example
|
33
|
-
# {
|
34
|
-
# account_name: '...',
|
35
|
-
# head_block_num: 141_391_122,
|
36
|
-
# head_block_time: '2020-09-11T16:05:51.000',
|
37
|
-
# privileged: false,
|
38
|
-
# last_code_update: '1970-01-01T00:00:00.000',
|
39
|
-
# created: '2018-06-09T13:14:37.000',
|
40
|
-
# core_liquid_balance: '1232.0228 EOS',
|
41
|
-
# ram_quota: 9548,
|
42
|
-
# net_weight: 10_001_142,
|
43
|
-
# cpu_weight: 10_001_144,
|
44
|
-
# net_limit: { used: 0, available: 1_066_648_346, max: 1_066_648_346 },
|
45
|
-
# cpu_limit: { used: 338, available: 88_498, max: 88_836 },
|
46
|
-
# ram_usage: 3574,
|
47
|
-
# permissions: [
|
48
|
-
# {
|
49
|
-
# perm_name: 'active',
|
50
|
-
# parent: 'owner',
|
51
|
-
# required_auth: {
|
52
|
-
# threshold: 1, keys: [{ key: 'EOS...', weight: 1 }], accounts: [], waits: []
|
53
|
-
# }
|
54
|
-
# },
|
55
|
-
# {
|
56
|
-
# perm_name: 'owner',
|
57
|
-
# parent: '',
|
58
|
-
# required_auth: {
|
59
|
-
# threshold: 1, keys: [{ key: 'EOS...', weight: 1 }], accounts: [], waits: []
|
60
|
-
# }
|
61
|
-
# }
|
62
|
-
# ],
|
63
|
-
# total_resources: { owner: '...', net_weight: '1000.1142 EOS', cpu_weight: '1000.1144 EOS', ram_bytes: 8148 },
|
64
|
-
# self_delegated_bandwidth: { from: '...', to: '...', net_weight: '1000.1142 EOS', cpu_weight: '1000.1144 EOS' },
|
65
|
-
# refund_request: nil,
|
66
|
-
# voter_info: {
|
67
|
-
# owner: '...',
|
68
|
-
# proxy: '...',
|
69
|
-
# producers: [],
|
70
|
-
# staked: 20_002_286,
|
71
|
-
# last_vote_weight: '17172913021904.12109375000000000',
|
72
|
-
# proxied_vote_weight: '0.00000000000000000',
|
73
|
-
# is_proxy: 0,
|
74
|
-
# flags1: 0,
|
75
|
-
# reserved2: 0,
|
76
|
-
# reserved3: '0.0000 EOS'
|
77
|
-
# },
|
78
|
-
# rex_info: nil
|
79
|
-
# }
|
80
|
-
# @param [Hash] arg argumentos trabalho
|
81
|
-
# @option arg [String] :account_name endereco carteira EOS
|
82
|
-
# @return [Hash] dados & saldo duma carteira EOS
|
83
|
-
def account(**arg)
|
84
|
-
raise(Erro, 'endereco tem de ser definido') if arg[:account_name].nil? || arg[:account_name].empty?
|
85
|
-
|
86
|
-
get('/v1/chain/get_account', **arg)
|
87
|
-
end
|
88
|
-
|
89
|
-
# @example
|
90
|
-
# {
|
91
|
-
# actions: [
|
92
|
-
# {
|
93
|
-
# account_action_seq: 964,
|
94
|
-
# action_trace: {
|
95
|
-
# account_ram_deltas: [],
|
96
|
-
# act: {
|
97
|
-
# account: 'voicebestapp',
|
98
|
-
# authorization: [
|
99
|
-
# { actor: 'thetruevoice', permission: 'active' },
|
100
|
-
# { actor: 'voicebestapp', permission: 'active' }
|
101
|
-
# ],
|
102
|
-
# data: { from: 'voicebestapp', memo: '...', quantity: '1.0001 MESSAGE', to: '...' },
|
103
|
-
# hex_data: '...',
|
104
|
-
# name: 'transfer'
|
105
|
-
# },
|
106
|
-
# action_ordinal: 10,
|
107
|
-
# block_num: 141_345_345,
|
108
|
-
# block_time: '2020-09-11T09:44:04.500',
|
109
|
-
# closest_unnotified_ancestor_action_ordinal: 5,
|
110
|
-
# context_free: false,
|
111
|
-
# creator_action_ordinal: 5,
|
112
|
-
# elapsed: 6,
|
113
|
-
# producer_block_id: '...',
|
114
|
-
# receipt: {
|
115
|
-
# abi_sequence: 1,
|
116
|
-
# act_digest: '...',
|
117
|
-
# auth_sequence: [['thetruevoice', 6_778_215], ['voicebestapp', 435_346]],
|
118
|
-
# code_sequence: 1,
|
119
|
-
# global_sequence: 233_283_589_258,
|
120
|
-
# receiver: '...',
|
121
|
-
# recv_sequence: 927
|
122
|
-
# },
|
123
|
-
# receiver: '...',
|
124
|
-
# trx_id: '...'
|
125
|
-
# },
|
126
|
-
# block_num: 141_345_345,
|
127
|
-
# block_time: '2020-09-11T09:44:04.500',
|
128
|
-
# global_action_seq: 233_283_589_258,
|
129
|
-
# irreversible: true
|
130
|
-
# },
|
131
|
-
# {}
|
132
|
-
# ],
|
133
|
-
# head_block_num: 141_721_698,
|
134
|
-
# last_irreversible_block: 141_721_371
|
135
|
-
# }
|
136
|
-
# @param [String] add endereco carteira EOS
|
137
|
-
# @param [Hash] arg argumentos trabalho
|
138
|
-
# @option arg [String] :account_name endereco carteira EOS
|
139
|
-
# @option arg [Integer] :pos posicao da primeira transacao a devolver
|
140
|
-
# @option arg [Integer] :offset numero maximo transacoes a devolver
|
141
|
-
# @option arg [String] :filter filtro a aplicar na resposta
|
142
|
-
# @option arg [String] :sort ordenacao asc/desc
|
143
|
-
# @option arg [String] :after time inicio "2020-09-13T13:44:03.105Z"
|
144
|
-
# @option arg [String] :before time fim "2020-09-13T13:44:03.105Z"
|
145
|
-
# @option arg [Integer] :parent transacao pai
|
146
|
-
# @return [Array<Hash>] devolve lista de transacoes
|
147
|
-
def all_tx(add, **arg)
|
148
|
-
raise(Erro, 'endereco tem de ser definido') if add.nil? || add.empty?
|
149
|
-
|
150
|
-
ledger(**arg.merge(account_name: add))
|
151
|
-
end
|
152
|
-
|
153
|
-
# @param [Integer] pos posicao das transacoes a devolver
|
154
|
-
# @param [Array<Hash>] ary lista acumuladora das transacoes a devolver
|
155
|
-
# @param arg (see all_tx)
|
156
|
-
# @option arg (see all_tx)
|
157
|
-
# @return [Array<Hash>] lista das transacoes ligadas a uma carteira EOS
|
158
|
-
def ledger(pos = 0, ary = [], **arg)
|
159
|
-
r = get('/v1/history/get_actions', **arg.merge(pos: pos, offset: 100))[:actions]
|
160
|
-
ary += r
|
161
|
-
r.count < 100 ? ary : ledger(pos + r.count, ary, **arg)
|
162
|
-
rescue StandardError
|
163
|
-
ary
|
164
|
-
end
|
165
|
-
|
166
|
-
private
|
167
|
-
|
168
|
-
# @param [String] uri identificacao do recurso a questionar
|
169
|
-
# @param arg (see all_tx)
|
170
|
-
# @option arg (see all_tx)
|
171
|
-
# @return [Hash] resultado do HTTP request
|
172
|
-
def get(uri, **arg)
|
173
|
-
JSON.parse(
|
174
|
-
conn.post(uri, arg.to_json, content_type: 'application/json').body,
|
175
|
-
symbolize_names: true
|
176
|
-
)
|
177
|
-
rescue StandardError
|
178
|
-
{ actions: [] }
|
179
|
-
end
|
180
|
-
end
|
181
|
-
end
|