cns 0.7.7 → 0.7.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +69 -32
- data/cns.gemspec +0 -1
- data/lib/cns/apibc.rb +24 -20
- data/lib/cns/version.rb +1 -1
- metadata +1 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2877c747c139b72d545038365090e1fbcb59c81765fa1148d8df42fad5e41b1d
|
4
|
+
data.tar.gz: c41981db14030be80f42b0e0ab6854029bf17a6139252b8b54327e5322dada49
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 78c94bf76ba9186e059ea685cb8f7f2dc60b977f4c006b9f220bdd7872c34864f676e3e429f21f3f0482c40af4288deaba3540bd860e54cfb1eff91cef720d23
|
7
|
+
data.tar.gz: d40243a18acc0c830f30bbbea36ad2f86b948cee06527a378bde11848db21fc19d17a1bd8de36ce63c6f8fb269dc59e26145e7e47da573b63b514243746657ed
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
cns (0.7.
|
4
|
+
cns (0.7.9)
|
5
5
|
curb
|
6
6
|
faraday
|
7
7
|
google-cloud-bigquery
|
@@ -20,7 +20,36 @@ GEM
|
|
20
20
|
concurrent-ruby (1.3.5)
|
21
21
|
curb (1.0.8)
|
22
22
|
declarative (0.0.20)
|
23
|
-
|
23
|
+
diff-lcs (1.5.1)
|
24
|
+
dry-configurable (1.3.0)
|
25
|
+
dry-core (~> 1.1)
|
26
|
+
zeitwerk (~> 2.6)
|
27
|
+
dry-core (1.1.0)
|
28
|
+
concurrent-ruby (~> 1.0)
|
29
|
+
logger
|
30
|
+
zeitwerk (~> 2.6)
|
31
|
+
dry-inflector (1.2.0)
|
32
|
+
dry-initializer (3.2.0)
|
33
|
+
dry-logic (1.6.0)
|
34
|
+
bigdecimal
|
35
|
+
concurrent-ruby (~> 1.0)
|
36
|
+
dry-core (~> 1.1)
|
37
|
+
zeitwerk (~> 2.6)
|
38
|
+
dry-schema (1.13.4)
|
39
|
+
concurrent-ruby (~> 1.0)
|
40
|
+
dry-configurable (~> 1.0, >= 1.0.1)
|
41
|
+
dry-core (~> 1.0, < 2)
|
42
|
+
dry-initializer (~> 3.0)
|
43
|
+
dry-logic (>= 1.4, < 2)
|
44
|
+
dry-types (>= 1.7, < 2)
|
45
|
+
zeitwerk (~> 2.6)
|
46
|
+
dry-types (1.8.2)
|
47
|
+
bigdecimal (~> 3.0)
|
48
|
+
concurrent-ruby (~> 1.0)
|
49
|
+
dry-core (~> 1.0)
|
50
|
+
dry-inflector (~> 1.0)
|
51
|
+
dry-logic (~> 1.4)
|
52
|
+
zeitwerk (~> 2.6)
|
24
53
|
faraday (2.12.2)
|
25
54
|
faraday-net_http (>= 2.0, < 3.5)
|
26
55
|
json
|
@@ -69,7 +98,7 @@ GEM
|
|
69
98
|
rexml (>= 3.3.9)
|
70
99
|
kramdown-parser-gfm (1.1.0)
|
71
100
|
kramdown (~> 2.0)
|
72
|
-
|
101
|
+
language_server-protocol (3.17.0.4)
|
73
102
|
logger (1.6.5)
|
74
103
|
mini_mime (1.1.5)
|
75
104
|
mini_portile2 (2.8.8)
|
@@ -80,45 +109,48 @@ GEM
|
|
80
109
|
nokogiri (1.18.2)
|
81
110
|
mini_portile2 (~> 2.8.2)
|
82
111
|
racc (~> 1.4)
|
112
|
+
observer (0.1.2)
|
83
113
|
os (1.1.4)
|
114
|
+
ostruct (0.6.1)
|
84
115
|
parallel (1.26.3)
|
85
|
-
parser (
|
116
|
+
parser (3.3.7.1)
|
86
117
|
ast (~> 2.4.1)
|
87
|
-
|
118
|
+
racc
|
88
119
|
public_suffix (6.0.1)
|
89
120
|
racc (1.8.1)
|
90
121
|
rainbow (3.1.1)
|
91
122
|
rake (12.3.3)
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
123
|
+
rbs (3.8.1)
|
124
|
+
logger
|
125
|
+
reek (6.4.0)
|
126
|
+
dry-schema (~> 1.13.0)
|
127
|
+
logger (~> 1.6)
|
128
|
+
parser (~> 3.3.0)
|
96
129
|
rainbow (>= 2.0, < 4.0)
|
130
|
+
rexml (~> 3.1)
|
97
131
|
regexp_parser (2.10.0)
|
98
132
|
representable (3.2.0)
|
99
133
|
declarative (< 0.1.0)
|
100
134
|
trailblazer-option (>= 0.1.1, < 0.2.0)
|
101
135
|
uber (< 0.2.0)
|
102
136
|
retriable (3.1.2)
|
103
|
-
reverse_markdown (
|
137
|
+
reverse_markdown (3.0.0)
|
104
138
|
nokogiri
|
105
139
|
rexml (3.4.0)
|
106
|
-
rubocop (1.
|
140
|
+
rubocop (1.71.2)
|
141
|
+
json (~> 2.3)
|
142
|
+
language_server-protocol (>= 3.17.0)
|
107
143
|
parallel (~> 1.10)
|
108
|
-
parser (>=
|
144
|
+
parser (>= 3.3.0.2)
|
109
145
|
rainbow (>= 2.2.2, < 4.0)
|
110
|
-
regexp_parser (>=
|
111
|
-
|
112
|
-
rubocop-ast (>= 1.2.0, < 2.0)
|
146
|
+
regexp_parser (>= 2.9.3, < 3.0)
|
147
|
+
rubocop-ast (>= 1.38.0, < 2.0)
|
113
148
|
ruby-progressbar (~> 1.7)
|
114
|
-
unicode-display_width (>=
|
115
|
-
rubocop-ast (1.
|
116
|
-
parser (>=
|
149
|
+
unicode-display_width (>= 2.4.0, < 4.0)
|
150
|
+
rubocop-ast (1.38.0)
|
151
|
+
parser (>= 3.3.1.0)
|
117
152
|
rubocop-rake (0.6.0)
|
118
153
|
rubocop (~> 1.0)
|
119
|
-
ruby-lint (2.3.1)
|
120
|
-
parser (~> 2.2)
|
121
|
-
slop (~> 3.4, >= 3.4.7)
|
122
154
|
ruby-progressbar (1.13.0)
|
123
155
|
rufo (0.18.0)
|
124
156
|
signet (0.19.0)
|
@@ -126,18 +158,21 @@ GEM
|
|
126
158
|
faraday (>= 0.17.5, < 3.a)
|
127
159
|
jwt (>= 1.5, < 3.0)
|
128
160
|
multi_json (~> 1.10)
|
129
|
-
|
130
|
-
|
131
|
-
backport (~> 1.1)
|
161
|
+
solargraph (0.51.2)
|
162
|
+
backport (~> 1.2)
|
132
163
|
benchmark
|
133
|
-
bundler (
|
134
|
-
|
135
|
-
jaro_winkler (~> 1.
|
164
|
+
bundler (~> 2.0)
|
165
|
+
diff-lcs (~> 1.4)
|
166
|
+
jaro_winkler (~> 1.6)
|
136
167
|
kramdown (~> 2.3)
|
137
168
|
kramdown-parser-gfm (~> 1.1)
|
138
|
-
|
139
|
-
|
140
|
-
|
169
|
+
logger (~> 1.6)
|
170
|
+
observer (~> 0.1)
|
171
|
+
ostruct (~> 0.6)
|
172
|
+
parser (~> 3.0)
|
173
|
+
rbs (~> 3.0)
|
174
|
+
reverse_markdown (>= 2.0, < 4)
|
175
|
+
rubocop (~> 1.38)
|
141
176
|
thor (~> 1.0)
|
142
177
|
tilt (~> 2.0)
|
143
178
|
yard (~> 0.9, >= 0.9.24)
|
@@ -145,9 +180,12 @@ GEM
|
|
145
180
|
tilt (2.6.0)
|
146
181
|
trailblazer-option (0.1.2)
|
147
182
|
uber (0.1.0)
|
148
|
-
unicode-display_width (1.
|
183
|
+
unicode-display_width (3.1.4)
|
184
|
+
unicode-emoji (~> 4.0, >= 4.0.4)
|
185
|
+
unicode-emoji (4.0.4)
|
149
186
|
uri (1.0.2)
|
150
187
|
yard (0.9.37)
|
188
|
+
zeitwerk (2.6.18)
|
151
189
|
|
152
190
|
PLATFORMS
|
153
191
|
x86_64-linux
|
@@ -159,7 +197,6 @@ DEPENDENCIES
|
|
159
197
|
reek
|
160
198
|
rubocop
|
161
199
|
rubocop-rake
|
162
|
-
ruby-lint
|
163
200
|
rufo
|
164
201
|
solargraph
|
165
202
|
yard
|
data/cns.gemspec
CHANGED
@@ -31,7 +31,6 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.add_development_dependency('reek')
|
32
32
|
spec.add_development_dependency('rubocop')
|
33
33
|
spec.add_development_dependency('rubocop-rake')
|
34
|
-
spec.add_development_dependency('ruby-lint')
|
35
34
|
spec.add_development_dependency('rufo')
|
36
35
|
spec.add_development_dependency('solargraph')
|
37
36
|
spec.add_development_dependency('yard')
|
data/lib/cns/apibc.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require(
|
4
|
-
require(
|
3
|
+
require('faraday')
|
4
|
+
require('json')
|
5
5
|
|
6
6
|
# @author Hernani Rodrigues Vaz
|
7
7
|
module Cns
|
@@ -11,15 +11,15 @@ module Cns
|
|
11
11
|
# @param addresses [Array<String>] List of ETH addresses (max 20)
|
12
12
|
# @return [Array<Hash>] List of addresses with balances
|
13
13
|
def account_es(addresses)
|
14
|
-
response = etherscan_req(
|
15
|
-
response[:status] ==
|
14
|
+
response = etherscan_req('balancemulti', addresses.join(','), 1, tag: 'latest')
|
15
|
+
response[:status] == '1' ? response.dig(:result) : []
|
16
16
|
end
|
17
17
|
|
18
18
|
# Get EOS account information
|
19
19
|
# @param address [String] EOS account name
|
20
20
|
# @return [Hash] Account details with resources
|
21
21
|
def account_gm(address)
|
22
|
-
response = greymass_req(
|
22
|
+
response = greymass_req('/v1/chain/get_account', { account_name: address })
|
23
23
|
response || { core_liquid_balance: 0, total_resources: { net_weight: 0, cpu_weight: 0 } }
|
24
24
|
end
|
25
25
|
|
@@ -27,35 +27,35 @@ module Cns
|
|
27
27
|
# @param [String] address endereco ETH
|
28
28
|
# @return [Array<Hash>] lista transacoes normais etherscan
|
29
29
|
def norml_es(address)
|
30
|
-
pag_etherscan_req(
|
30
|
+
pag_etherscan_req('txlist', address)
|
31
31
|
end
|
32
32
|
|
33
33
|
# Get internal transactions for ETH address
|
34
34
|
# @param (see norml_es)
|
35
35
|
# @return [Array<Hash>] lista transacoes internas etherscan
|
36
36
|
def inter_es(address)
|
37
|
-
pag_etherscan_req(
|
37
|
+
pag_etherscan_req('txlistinternal', address)
|
38
38
|
end
|
39
39
|
|
40
40
|
# Get mined blocks for ETH address
|
41
41
|
# @param (see norml_es)
|
42
42
|
# @return [Array<Hash>] lista blocos etherscan
|
43
43
|
def block_es(address)
|
44
|
-
pag_etherscan_req(
|
44
|
+
pag_etherscan_req('getminedblocks', address, blocktype: 'blocks')
|
45
45
|
end
|
46
46
|
|
47
47
|
# Get withdrawals for ETH address
|
48
48
|
# @param (see norml_es)
|
49
49
|
# @return [Array<Hash>] lista blocos etherscan
|
50
50
|
def withw_es(address)
|
51
|
-
pag_etherscan_req(
|
51
|
+
pag_etherscan_req('txsBeaconWithdrawal', address)
|
52
52
|
end
|
53
53
|
|
54
54
|
# Get token transfers for ETH address
|
55
55
|
# @param (see norml_es)
|
56
56
|
# @return [Array<Hash>] lista token transfer events etherscan
|
57
57
|
def token_es(address)
|
58
|
-
pag_etherscan_req(
|
58
|
+
pag_etherscan_req('tokentx', address)
|
59
59
|
end
|
60
60
|
|
61
61
|
# Get complete transaction history for EOS account
|
@@ -65,7 +65,7 @@ module Cns
|
|
65
65
|
actions = []
|
66
66
|
pos = 0
|
67
67
|
loop do
|
68
|
-
response = greymass_req(
|
68
|
+
response = greymass_req('/v1/history/get_actions', { account_name: address, pos: pos, offset: 100 })
|
69
69
|
batch = response[:actions] || []
|
70
70
|
actions += batch
|
71
71
|
break if batch.size < 100
|
@@ -80,23 +80,27 @@ module Cns
|
|
80
80
|
# Reusable Faraday connection
|
81
81
|
def connection(base_url)
|
82
82
|
Faraday.new(base_url) do |conn|
|
83
|
-
conn.headers = {
|
84
|
-
|
83
|
+
conn.headers = {
|
84
|
+
content_type: 'application/json',
|
85
|
+
accept: 'application/json',
|
86
|
+
user_agent: 'blockchain-api-client'
|
87
|
+
}
|
88
|
+
conn.adapter(Faraday.default_adapter)
|
85
89
|
end
|
86
90
|
end
|
87
91
|
|
88
92
|
# Generic Etherscan API request handler
|
89
93
|
def etherscan_req(action, address, page = 1, params = {})
|
90
94
|
params = {
|
91
|
-
module:
|
95
|
+
module: 'account',
|
92
96
|
action: action,
|
93
97
|
address: address,
|
94
98
|
page: page,
|
95
|
-
apikey: ENV.fetch(
|
99
|
+
apikey: ENV.fetch('ETHERSCAN_API_KEY')
|
96
100
|
}.merge(params)
|
97
|
-
parse_json(connection(
|
101
|
+
parse_json(connection('https://api.etherscan.io').get('/api', params).body)
|
98
102
|
rescue Faraday::Error, JSON::ParserError
|
99
|
-
{ status:
|
103
|
+
{ status: '0', result: [] }
|
100
104
|
end
|
101
105
|
|
102
106
|
# Generic method for paginated Etherscan requests
|
@@ -109,11 +113,11 @@ module Cns
|
|
109
113
|
page = 1
|
110
114
|
loop do
|
111
115
|
response = etherscan_req(action, address, page, params)
|
112
|
-
break unless response[:status] ==
|
116
|
+
break unless response[:status] == '1'
|
113
117
|
|
114
118
|
batch = response[:result] || []
|
115
119
|
results += batch
|
116
|
-
break if batch.size <
|
120
|
+
break if batch.size < 10_000
|
117
121
|
|
118
122
|
page += 1
|
119
123
|
end
|
@@ -122,7 +126,7 @@ module Cns
|
|
122
126
|
|
123
127
|
# Generic Greymass API request handler
|
124
128
|
def greymass_req(endpoint, payload)
|
125
|
-
parse_json((connection(
|
129
|
+
parse_json((connection('https://eos.greymass.com').post(endpoint) { |req| req.body = payload.to_json }).body)
|
126
130
|
rescue Faraday::Error, JSON::ParserError
|
127
131
|
nil
|
128
132
|
end
|
data/lib/cns/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cns
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hernâni Rodrigues Vaz
|
@@ -80,20 +80,6 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: ruby-lint
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
83
|
- !ruby/object:Gem::Dependency
|
98
84
|
name: rufo
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|