solana_rpc_ruby 1.0.0.pre
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 +7 -0
- data/.github/CODE_OF_CONDUCT.md +77 -0
- data/.github/CONTRIBUTING.md +14 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +11 -0
- data/CHANGELOG.md +3 -0
- data/Gemfile +8 -0
- data/LICENSE +674 -0
- data/README.md +50 -0
- data/Rakefile +19 -0
- data/lib/generators/solana_rpc_ruby/install_generator.rb +13 -0
- data/lib/generators/templates/solana_rpc_ruby_config.rb +14 -0
- data/lib/solana_rpc_ruby.rb +27 -0
- data/lib/solana_rpc_ruby/api_client.rb +63 -0
- data/lib/solana_rpc_ruby/api_error.rb +27 -0
- data/lib/solana_rpc_ruby/helper_methods.rb +16 -0
- data/lib/solana_rpc_ruby/methods_wrapper.rb +1316 -0
- data/lib/solana_rpc_ruby/request_body.rb +34 -0
- data/lib/solana_rpc_ruby/response.rb +33 -0
- data/lib/solana_rpc_ruby/version.rb +5 -0
- data/solana_rpc_ruby.gemspec +41 -0
- metadata +245 -0
@@ -0,0 +1,34 @@
|
|
1
|
+
module SolanaRpcRuby
|
2
|
+
module RequestBody
|
3
|
+
# Creates body sent to the solana JSON RPC API
|
4
|
+
#
|
5
|
+
# From solana docs:
|
6
|
+
# To make a JSON-RPC request, send an HTTP POST request with a Content-Type: application/json header.
|
7
|
+
# The JSON request data should contain 4 fields:
|
8
|
+
# jsonrpc: <string>, set to "2.0"
|
9
|
+
# id: <number>, a unique client-generated identifying integer
|
10
|
+
# method: <string>, a string containing the method to be invoked
|
11
|
+
# params: <array>, a JSON array of ordered parameter values
|
12
|
+
#
|
13
|
+
# @param method [string] method name.
|
14
|
+
# @param method_params [Array] ordered array with required and/or optional params.
|
15
|
+
#
|
16
|
+
# @return [Json] JSON string with body.
|
17
|
+
#
|
18
|
+
def create_json_body(method, method_params: [])
|
19
|
+
body = base_body
|
20
|
+
body[:method] = method
|
21
|
+
body[:params] = method_params if method_params.any?
|
22
|
+
body.to_json
|
23
|
+
end
|
24
|
+
|
25
|
+
# Hash with default body params.
|
26
|
+
# @return [Hash] hash with base params for every request.
|
27
|
+
def base_body
|
28
|
+
{
|
29
|
+
"jsonrpc": SolanaRpcRuby.json_rpc_version,
|
30
|
+
"id": 1
|
31
|
+
}
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module SolanaRpcRuby
|
2
|
+
##
|
3
|
+
# Response class parses response from the API to the more convenient format.
|
4
|
+
#
|
5
|
+
class Response
|
6
|
+
# Initialize object with response body in json format.
|
7
|
+
#
|
8
|
+
# @param response [Hash] hash with response from the API.
|
9
|
+
def initialize(response)
|
10
|
+
@response = response
|
11
|
+
end
|
12
|
+
|
13
|
+
# @return [Hash] result in the hash.
|
14
|
+
def result
|
15
|
+
@result ||= parsed_response['result']
|
16
|
+
end
|
17
|
+
|
18
|
+
# @return [String] matching the request specification.
|
19
|
+
def json_rpc
|
20
|
+
@json_rpc ||= parsed_response['jsonrpc']
|
21
|
+
end
|
22
|
+
|
23
|
+
# @return [Integer] matching the request identifier.
|
24
|
+
def id
|
25
|
+
@id ||= parsed_response['id']
|
26
|
+
end
|
27
|
+
|
28
|
+
# @return [Hash] parsed response body.
|
29
|
+
def parsed_response
|
30
|
+
@parsed_response ||= JSON.parse(@response.body)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'lib/solana_rpc_ruby/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = 'solana_rpc_ruby'
|
7
|
+
spec.version = SolanaRpcRuby::VERSION
|
8
|
+
spec.authors = ['Block Logic Team']
|
9
|
+
spec.email = ['email@example.com']
|
10
|
+
spec.summary = 'Ruby wrapper for solana JSON RPC API.'
|
11
|
+
spec.description = 'This gem allows to use JSON RPC API from solana.'
|
12
|
+
spec.homepage = 'https://github.com/Block-Logic/solana-rpc-ruby'
|
13
|
+
spec.license = 'MIT'
|
14
|
+
spec.platform = Gem::Platform::RUBY
|
15
|
+
spec.required_ruby_version = '>= 2.6.5'
|
16
|
+
spec.files = Dir[
|
17
|
+
'README.md', 'LICENSE', 'CHANGELOG.md',
|
18
|
+
'lib/**/*.rb',
|
19
|
+
'lib/**/*.rake',
|
20
|
+
'solana_rpc_ruby.gemspec',
|
21
|
+
'.github/*.md',
|
22
|
+
'Gemfile',
|
23
|
+
'Rakefile'
|
24
|
+
]
|
25
|
+
spec.extra_rdoc_files = ['README.md']
|
26
|
+
|
27
|
+
spec.add_development_dependency 'rubocop', '~> 1.15'
|
28
|
+
spec.add_development_dependency 'rubocop-performance', '~> 1.11'
|
29
|
+
spec.add_development_dependency 'rubocop-rspec', '~> 2.3'
|
30
|
+
spec.add_development_dependency 'pry', '~> 0.13.1'
|
31
|
+
|
32
|
+
spec.add_development_dependency 'codecov', '~> 0.4'
|
33
|
+
spec.add_development_dependency 'dotenv', '~> 2.7'
|
34
|
+
spec.add_development_dependency 'rails', '~> 6.1.3'
|
35
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
36
|
+
spec.add_development_dependency 'rspec', '~> 3.10'
|
37
|
+
spec.add_development_dependency 'rspec-rails', '~> 4.0'
|
38
|
+
spec.add_development_dependency 'simplecov', '~> 0.21'
|
39
|
+
spec.add_development_dependency 'vcr', '~> 6.0'
|
40
|
+
spec.add_development_dependency 'webmock', '~> 3.13'
|
41
|
+
end
|
metadata
ADDED
@@ -0,0 +1,245 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: solana_rpc_ruby
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0.pre
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Block Logic Team
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2021-07-13 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rubocop
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.15'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.15'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rubocop-performance
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.11'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.11'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rubocop-rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '2.3'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.3'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: pry
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.13.1
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.13.1
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: codecov
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.4'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.4'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: dotenv
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '2.7'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '2.7'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rails
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 6.1.3
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 6.1.3
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rake
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '13.0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '13.0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rspec
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '3.10'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '3.10'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: rspec-rails
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '4.0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '4.0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: simplecov
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0.21'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0.21'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: vcr
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "~>"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '6.0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - "~>"
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '6.0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: webmock
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - "~>"
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '3.13'
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - "~>"
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '3.13'
|
195
|
+
description: This gem allows to use JSON RPC API from solana.
|
196
|
+
email:
|
197
|
+
- email@example.com
|
198
|
+
executables: []
|
199
|
+
extensions: []
|
200
|
+
extra_rdoc_files:
|
201
|
+
- README.md
|
202
|
+
files:
|
203
|
+
- ".github/CODE_OF_CONDUCT.md"
|
204
|
+
- ".github/CONTRIBUTING.md"
|
205
|
+
- ".github/PULL_REQUEST_TEMPLATE.md"
|
206
|
+
- CHANGELOG.md
|
207
|
+
- Gemfile
|
208
|
+
- LICENSE
|
209
|
+
- README.md
|
210
|
+
- Rakefile
|
211
|
+
- lib/generators/solana_rpc_ruby/install_generator.rb
|
212
|
+
- lib/generators/templates/solana_rpc_ruby_config.rb
|
213
|
+
- lib/solana_rpc_ruby.rb
|
214
|
+
- lib/solana_rpc_ruby/api_client.rb
|
215
|
+
- lib/solana_rpc_ruby/api_error.rb
|
216
|
+
- lib/solana_rpc_ruby/helper_methods.rb
|
217
|
+
- lib/solana_rpc_ruby/methods_wrapper.rb
|
218
|
+
- lib/solana_rpc_ruby/request_body.rb
|
219
|
+
- lib/solana_rpc_ruby/response.rb
|
220
|
+
- lib/solana_rpc_ruby/version.rb
|
221
|
+
- solana_rpc_ruby.gemspec
|
222
|
+
homepage: https://github.com/Block-Logic/solana-rpc-ruby
|
223
|
+
licenses:
|
224
|
+
- MIT
|
225
|
+
metadata: {}
|
226
|
+
post_install_message:
|
227
|
+
rdoc_options: []
|
228
|
+
require_paths:
|
229
|
+
- lib
|
230
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
231
|
+
requirements:
|
232
|
+
- - ">="
|
233
|
+
- !ruby/object:Gem::Version
|
234
|
+
version: 2.6.5
|
235
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
236
|
+
requirements:
|
237
|
+
- - ">"
|
238
|
+
- !ruby/object:Gem::Version
|
239
|
+
version: 1.3.1
|
240
|
+
requirements: []
|
241
|
+
rubygems_version: 3.0.8
|
242
|
+
signing_key:
|
243
|
+
specification_version: 4
|
244
|
+
summary: Ruby wrapper for solana JSON RPC API.
|
245
|
+
test_files: []
|