solana_rpc_ruby 1.1.1 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +22 -0
- data/LICENSE +20 -674
- data/README.md +14 -9
- data/lib/solana_rpc_ruby/api_client.rb +22 -12
- data/lib/solana_rpc_ruby/api_error.rb +13 -2
- data/lib/solana_rpc_ruby/methods_wrapper.rb +303 -109
- data/lib/solana_rpc_ruby/version.rb +1 -1
- data/lib/solana_rpc_ruby/websocket_client.rb +0 -18
- data/lib/solana_rpc_ruby/websocket_methods_wrapper.rb +82 -31
- metadata +6 -6
@@ -27,7 +27,6 @@ module SolanaRpcRuby
|
|
27
27
|
@client = websocket_client
|
28
28
|
@cluster = cluster || SolanaRpcRuby.ws_cluster
|
29
29
|
@retries = 0
|
30
|
-
@subscription_info = nil
|
31
30
|
|
32
31
|
message = 'Websocket cluster is missing. Please provide default cluster in config or pass it to the client directly.'
|
33
32
|
raise ArgumentError, message unless @cluster
|
@@ -59,11 +58,6 @@ module SolanaRpcRuby
|
|
59
58
|
end
|
60
59
|
end
|
61
60
|
|
62
|
-
# Uncomment to disconnect websocket.
|
63
|
-
# EM::Timer.new(2) do
|
64
|
-
# ws.send(unsubscribe_body(body))
|
65
|
-
# end
|
66
|
-
|
67
61
|
ws.on :open do |event|
|
68
62
|
p [:open]
|
69
63
|
p "Status: #{ws.status}"
|
@@ -79,7 +73,6 @@ module SolanaRpcRuby
|
|
79
73
|
# result = block_given? ? block.call(event.data) : event.data
|
80
74
|
# return result
|
81
75
|
# end
|
82
|
-
@subscription_info = event.data unless @subscription_info
|
83
76
|
|
84
77
|
if block_given?
|
85
78
|
block.call(event.data)
|
@@ -114,16 +107,5 @@ module SolanaRpcRuby
|
|
114
107
|
message = "#{e.class} #{e.message}\n Backtrace: \n #{e.backtrace}"
|
115
108
|
fail ApiError.new(message: message)
|
116
109
|
end
|
117
|
-
|
118
|
-
def unsubscribe_body(body)
|
119
|
-
method = JSON.parse(body)['method']
|
120
|
-
info = JSON.parse(@subscription_info)
|
121
|
-
|
122
|
-
subscription_id = info['result']
|
123
|
-
id = info['id']
|
124
|
-
unsubscribe_method = method.gsub('Sub', 'Unsub')
|
125
|
-
|
126
|
-
create_json_body(unsubscribe_method, method_params: [subscription_id], id: id)
|
127
|
-
end
|
128
110
|
end
|
129
111
|
end
|
@@ -29,7 +29,7 @@ module SolanaRpcRuby
|
|
29
29
|
# @param cluster [String] cluster where requests will be sent.
|
30
30
|
# @param id [Integer] unique client-generated identifying integer.
|
31
31
|
def initialize(
|
32
|
-
websocket_client: WebsocketClient,
|
32
|
+
websocket_client: WebsocketClient,
|
33
33
|
cluster: SolanaRpcRuby.ws_cluster,
|
34
34
|
id: rand(1...99_999)
|
35
35
|
)
|
@@ -47,7 +47,7 @@ module SolanaRpcRuby
|
|
47
47
|
#
|
48
48
|
# @return [Integer] Subscription id (needed to unsubscribe)
|
49
49
|
def account_subscribe(account_pubkey, commitment: nil, encoding: '', &block)
|
50
|
-
method = create_method_name(__method__)
|
50
|
+
method = create_method_name(__method__)
|
51
51
|
|
52
52
|
params = []
|
53
53
|
params_hash = {}
|
@@ -56,7 +56,7 @@ module SolanaRpcRuby
|
|
56
56
|
|
57
57
|
params << account_pubkey
|
58
58
|
params << params_hash if params_hash.any?
|
59
|
-
|
59
|
+
|
60
60
|
subscribe(method, method_params: params, &block)
|
61
61
|
end
|
62
62
|
|
@@ -71,6 +71,57 @@ module SolanaRpcRuby
|
|
71
71
|
unsubscribe(method, subscription_id: subscription_id)
|
72
72
|
end
|
73
73
|
|
74
|
+
# @see https://docs.solana.com/developing/clients/jsonrpc-api#blocksubscribe---unstable-disabled-by-default
|
75
|
+
# This subscription is unstable and only available if the validator was started with the --rpc-pubsub-enable-block-subscription flag. The format of this subscription may change in the future
|
76
|
+
#
|
77
|
+
# Subscribe to receive notification anytime a new block is Confirmed or Finalized.
|
78
|
+
#
|
79
|
+
# @param filter [String] # 'all' or public key as base-58 endcoded string
|
80
|
+
# @param commitment [String]
|
81
|
+
# @param encoding [String]
|
82
|
+
# @param transaction_details [String]
|
83
|
+
# @param show_rewards [Boolean]
|
84
|
+
# @param &block [Proc]
|
85
|
+
#
|
86
|
+
# @return [Integer] Subscription id (needed to unsubscribe)
|
87
|
+
def block_subscribe(
|
88
|
+
filter,
|
89
|
+
commitment: nil,
|
90
|
+
encoding: '',
|
91
|
+
transaction_details: '',
|
92
|
+
show_rewards: nil,
|
93
|
+
&block
|
94
|
+
)
|
95
|
+
method = create_method_name(__method__)
|
96
|
+
|
97
|
+
params = []
|
98
|
+
param_filter = nil
|
99
|
+
params_hash = {}
|
100
|
+
|
101
|
+
param_filter = filter == 'all' ? filter : { 'mentionsAccountOrProgram': filter}
|
102
|
+
|
103
|
+
params_hash['commitment'] = commitment unless blank?(commitment)
|
104
|
+
params_hash['encoding'] = encoding unless blank?(encoding)
|
105
|
+
params_hash['transactionDetails'] = transaction_details unless blank?(transaction_details)
|
106
|
+
params_hash['showRewards'] = show_rewards unless blank?(show_rewards)
|
107
|
+
|
108
|
+
params << param_filter
|
109
|
+
params << params_hash if params_hash.any?
|
110
|
+
|
111
|
+
subscribe(method, method_params: params, &block)
|
112
|
+
end
|
113
|
+
|
114
|
+
# @see https://docs.solana.com/developing/clients/jsonrpc-api#blockunsubscribe
|
115
|
+
# Unsubscribe from block notifications
|
116
|
+
#
|
117
|
+
# @param subscription_id [Integer]
|
118
|
+
#
|
119
|
+
# @return [Bool] unsubscribe success message
|
120
|
+
def block_unsubscribe(subscription_id)
|
121
|
+
method = create_method_name(__method__)
|
122
|
+
unsubscribe(method, subscription_id: subscription_id)
|
123
|
+
end
|
124
|
+
|
74
125
|
# @see https://docs.solana.com/developing/clients/jsonrpc-api#logssubscribe
|
75
126
|
# Subscribe to transaction logging
|
76
127
|
#
|
@@ -81,15 +132,15 @@ module SolanaRpcRuby
|
|
81
132
|
#
|
82
133
|
# @return [Integer] Subscription id (needed to unsubscribe)
|
83
134
|
def logs_subscribe(filter, commitment: nil, &block)
|
84
|
-
method = create_method_name(__method__)
|
135
|
+
method = create_method_name(__method__)
|
85
136
|
|
86
137
|
params = []
|
87
138
|
params_hash = {}
|
88
139
|
params_hash['commitment'] = commitment unless blank?(commitment)
|
89
|
-
|
140
|
+
|
90
141
|
params << filter
|
91
142
|
params << params_hash
|
92
|
-
|
143
|
+
|
93
144
|
subscribe(method, method_params: params, &block)
|
94
145
|
end
|
95
146
|
|
@@ -107,7 +158,7 @@ module SolanaRpcRuby
|
|
107
158
|
|
108
159
|
# @see https://docs.solana.com/developing/clients/jsonrpc-api#programsubscribe
|
109
160
|
# Subscribe to a program to receive notifications when the lamports or data for a given account owned by the program changes
|
110
|
-
#
|
161
|
+
#
|
111
162
|
# @param account_pubkey [String]
|
112
163
|
# @param commitment [String]
|
113
164
|
# @param encoding [String]
|
@@ -116,13 +167,13 @@ module SolanaRpcRuby
|
|
116
167
|
#
|
117
168
|
# @return [Integer] Subscription id (needed to unsubscribe)
|
118
169
|
def program_subscribe(
|
119
|
-
program_id_pubkey,
|
120
|
-
commitment: nil,
|
121
|
-
encoding: '',
|
170
|
+
program_id_pubkey,
|
171
|
+
commitment: nil,
|
172
|
+
encoding: '',
|
122
173
|
filters: [],
|
123
174
|
&block
|
124
175
|
)
|
125
|
-
method = create_method_name(__method__)
|
176
|
+
method = create_method_name(__method__)
|
126
177
|
|
127
178
|
params = []
|
128
179
|
params_hash = {}
|
@@ -132,7 +183,7 @@ module SolanaRpcRuby
|
|
132
183
|
|
133
184
|
params << program_id_pubkey
|
134
185
|
params << params_hash if params_hash.any?
|
135
|
-
|
186
|
+
|
136
187
|
subscribe(method, method_params: params, &block)
|
137
188
|
end
|
138
189
|
|
@@ -149,7 +200,7 @@ module SolanaRpcRuby
|
|
149
200
|
end
|
150
201
|
|
151
202
|
# @see https://docs.solana.com/developing/clients/jsonrpc-api#signaturesubscribe
|
152
|
-
# Subscribe to a transaction signature to receive notification when the transaction is confirmed
|
203
|
+
# Subscribe to a transaction signature to receive notification when the transaction is confirmed
|
153
204
|
# On signatureNotification, the subscription is automatically cancelled
|
154
205
|
#
|
155
206
|
# @param transaction_signature [String]
|
@@ -158,19 +209,19 @@ module SolanaRpcRuby
|
|
158
209
|
#
|
159
210
|
# @return [Integer] Subscription id (needed to unsubscribe)
|
160
211
|
def signature_subscribe(
|
161
|
-
transaction_signature,
|
212
|
+
transaction_signature,
|
162
213
|
commitment: nil,
|
163
214
|
&block
|
164
215
|
)
|
165
|
-
method = create_method_name(__method__)
|
216
|
+
method = create_method_name(__method__)
|
166
217
|
|
167
218
|
params = []
|
168
219
|
params_hash = {}
|
169
220
|
params_hash['commitment'] = commitment unless blank?(commitment)
|
170
|
-
|
221
|
+
|
171
222
|
params << transaction_signature
|
172
223
|
params << params_hash
|
173
|
-
|
224
|
+
|
174
225
|
subscribe(method, method_params: params, &block)
|
175
226
|
end
|
176
227
|
|
@@ -189,11 +240,11 @@ module SolanaRpcRuby
|
|
189
240
|
# Subscribe to receive notification anytime a slot is processed by the validator
|
190
241
|
#
|
191
242
|
# @param &block [Proc]
|
192
|
-
#
|
243
|
+
#
|
193
244
|
# @return [Integer] Subscription id (needed to unsubscribe)
|
194
245
|
def slot_subscribe(&block)
|
195
246
|
method = create_method_name(__method__)
|
196
|
-
|
247
|
+
|
197
248
|
subscribe(method, &block)
|
198
249
|
end
|
199
250
|
|
@@ -209,16 +260,16 @@ module SolanaRpcRuby
|
|
209
260
|
end
|
210
261
|
|
211
262
|
# @see https://docs.solana.com/developing/clients/jsonrpc-api#slotsupdatessubscribe---unstable
|
212
|
-
#
|
263
|
+
#
|
213
264
|
# This subscription is unstable; the format of this subscription may change in the future and it may not always be supported
|
214
265
|
# Subscribe to receive a notification from the validator on a variety of updates on every slot
|
215
266
|
#
|
216
267
|
# @param &block [Proc]
|
217
|
-
#
|
268
|
+
#
|
218
269
|
# @return [Integer] Subscription id (needed to unsubscribe)
|
219
270
|
def slots_updates_subscribe(&block)
|
220
271
|
method = create_method_name(__method__)
|
221
|
-
|
272
|
+
|
222
273
|
subscribe(method, &block)
|
223
274
|
end
|
224
275
|
|
@@ -234,15 +285,15 @@ module SolanaRpcRuby
|
|
234
285
|
end
|
235
286
|
|
236
287
|
# @see https://docs.solana.com/developing/clients/jsonrpc-api#rootsubscribe
|
237
|
-
#
|
288
|
+
#
|
238
289
|
# Subscribe to receive notification anytime a new root is set by the validator.
|
239
290
|
#
|
240
291
|
# @param &block [Proc]
|
241
|
-
#
|
292
|
+
#
|
242
293
|
# @return [Integer] Subscription id (needed to unsubscribe)
|
243
294
|
def root_subscribe(&block)
|
244
295
|
method = create_method_name(__method__)
|
245
|
-
|
296
|
+
|
246
297
|
subscribe(method, &block)
|
247
298
|
end
|
248
299
|
|
@@ -258,19 +309,19 @@ module SolanaRpcRuby
|
|
258
309
|
end
|
259
310
|
|
260
311
|
# @see https://docs.solana.com/developing/clients/jsonrpc-api#votesubscribe---unstable-disabled-by-default
|
261
|
-
#
|
262
|
-
# This subscription is unstable and only available if the validator was started with the --rpc-pubsub-enable-vote-subscription flag.
|
312
|
+
#
|
313
|
+
# This subscription is unstable and only available if the validator was started with the --rpc-pubsub-enable-vote-subscription flag.
|
263
314
|
# The format of this subscription may change in the future
|
264
|
-
#
|
265
|
-
# Subscribe to receive notification anytime a new vote is observed in gossip.
|
315
|
+
#
|
316
|
+
# Subscribe to receive notification anytime a new vote is observed in gossip.
|
266
317
|
# These votes are pre-consensus therefore there is no guarantee these votes will enter the ledger.
|
267
318
|
#
|
268
319
|
# @param &block [Proc]
|
269
|
-
#
|
320
|
+
#
|
270
321
|
# @return [Integer] Subscription id (needed to unsubscribe)
|
271
322
|
def vote_subscribe(&block)
|
272
323
|
method = create_method_name(__method__)
|
273
|
-
|
324
|
+
|
274
325
|
subscribe(method, &block)
|
275
326
|
end
|
276
327
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solana_rpc_ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Block Logic Team
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faye-websocket
|
@@ -241,7 +241,7 @@ licenses:
|
|
241
241
|
metadata:
|
242
242
|
documentation_uri: https://www.rubydoc.info/github/Block-Logic/solana-rpc-ruby
|
243
243
|
source_code_uri: https://github.com/Block-Logic/solana-rpc-ruby
|
244
|
-
post_install_message:
|
244
|
+
post_install_message:
|
245
245
|
rdoc_options: []
|
246
246
|
require_paths:
|
247
247
|
- lib
|
@@ -256,8 +256,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
256
256
|
- !ruby/object:Gem::Version
|
257
257
|
version: '0'
|
258
258
|
requirements: []
|
259
|
-
rubygems_version: 3.
|
260
|
-
signing_key:
|
259
|
+
rubygems_version: 3.2.2
|
260
|
+
signing_key:
|
261
261
|
specification_version: 4
|
262
262
|
summary: Ruby wrapper for solana JSON RPC API.
|
263
263
|
test_files: []
|