ruby-client 1.1.3 → 1.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 35d36e085b3b62d4f91a7265548b390421e6feeefe8473e4d1a7bfd327b89755
4
- data.tar.gz: a278f24af7c7ae31b3ee4c941495fe451f56d84b9a211de32a649a328b7c6c40
3
+ metadata.gz: 5f6475996f60be83ea786daa66d456dbf6e31184fa185e493d2c9cdd576af9aa
4
+ data.tar.gz: ad61ee287cd26dab228cb099747e0aab833da2cbac0e2fee117168e33cf53b00
5
5
  SHA512:
6
- metadata.gz: 6c351e529143d5315e911e06b85b30319f5276ef97afd9ade2bc53a0c98ae1b51130b20fc8f168f765571e4b25d2b59ad6cf12d34f0680bd0828f30162ccc660
7
- data.tar.gz: b5f999bacad15ce501218cc29a4f1200702faf9a3a5b981567abcb7ebe986b9ea15ca47c5c5292a53f964aaf6a4a6454eb36d8d794851fba1b99a829d9df2a58
6
+ metadata.gz: dfa4928e4860a1cdca26674831215110e8a199512b65a64a03540c20cb85932d0faea538afb044ba8694776af8aa3dc73ec5702acda0ef2ce8bbd44954544d44
7
+ data.tar.gz: 6a0dbcfada7f7d0f1fa1e8a64bc727b9e29d208838394a4bfe120b326b5d23c398688514c4352165c97eff85965be95997fe742b71be118f27b81375850df197
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
4
+ version: 1.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - jxdv
@@ -30,28 +30,7 @@ email:
30
30
  executables: []
31
31
  extensions: []
32
32
  extra_rdoc_files: []
33
- files:
34
- - Gemfile
35
- - Gemfile.lock
36
- - LICENSE
37
- - README.md
38
- - Rakefile
39
- - bin/console
40
- - bin/setup
41
- - lib/api.rb
42
- - lib/rpcclient.rb
43
- - lib/ruby-client.rb
44
- - main.rb
45
- - ruby-client-1.0.0.gem
46
- - ruby-client-1.0.1.gem
47
- - ruby-client-1.0.2.gem
48
- - ruby-client-1.0.3.gem
49
- - ruby-client-1.0.4.gem
50
- - ruby-client-1.0.5.gem
51
- - ruby-client-1.1.1.gem
52
- - ruby-client-1.1.2.gem
53
- - ruby-client.gemspec
54
- - rubyclient-1.0.0.gem
33
+ files: []
55
34
  homepage: https://github.com/jxdv/ruby-client
56
35
  licenses:
57
36
  - Apache-2.0
data/Gemfile DELETED
@@ -1,6 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gemspec
4
-
5
- gem "minitest", "~> 5.0"
6
- gem "rspec-rails", "~> 3.5"
@@ -1,92 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- ruby-client (1.0.2)
5
- oj (~> 2.15)
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- actionpack (6.0.3.2)
11
- actionview (= 6.0.3.2)
12
- activesupport (= 6.0.3.2)
13
- rack (~> 2.0, >= 2.0.8)
14
- rack-test (>= 0.6.3)
15
- rails-dom-testing (~> 2.0)
16
- rails-html-sanitizer (~> 1.0, >= 1.2.0)
17
- actionview (6.0.3.2)
18
- activesupport (= 6.0.3.2)
19
- builder (~> 3.1)
20
- erubi (~> 1.4)
21
- rails-dom-testing (~> 2.0)
22
- rails-html-sanitizer (~> 1.1, >= 1.2.0)
23
- activesupport (6.0.3.2)
24
- concurrent-ruby (~> 1.0, >= 1.0.2)
25
- i18n (>= 0.7, < 2)
26
- minitest (~> 5.1)
27
- tzinfo (~> 1.1)
28
- zeitwerk (~> 2.2, >= 2.2.2)
29
- builder (3.2.4)
30
- concurrent-ruby (1.1.6)
31
- crass (1.0.6)
32
- diff-lcs (1.4.4)
33
- erubi (1.9.0)
34
- i18n (1.8.4)
35
- concurrent-ruby (~> 1.0)
36
- loofah (2.6.0)
37
- crass (~> 1.0.2)
38
- nokogiri (>= 1.5.9)
39
- method_source (1.0.0)
40
- mini_portile2 (2.4.0)
41
- minitest (5.14.1)
42
- nokogiri (1.10.10-x64-mingw32)
43
- mini_portile2 (~> 2.4.0)
44
- oj (2.18.5)
45
- rack (2.2.3)
46
- rack-test (1.1.0)
47
- rack (>= 1.0, < 3)
48
- rails-dom-testing (2.0.3)
49
- activesupport (>= 4.2.0)
50
- nokogiri (>= 1.6)
51
- rails-html-sanitizer (1.3.0)
52
- loofah (~> 2.3)
53
- railties (6.0.3.2)
54
- actionpack (= 6.0.3.2)
55
- activesupport (= 6.0.3.2)
56
- method_source
57
- rake (>= 0.8.7)
58
- thor (>= 0.20.3, < 2.0)
59
- rake (13.0.1)
60
- rspec-core (3.9.2)
61
- rspec-support (~> 3.9.3)
62
- rspec-expectations (3.9.2)
63
- diff-lcs (>= 1.2.0, < 2.0)
64
- rspec-support (~> 3.9.0)
65
- rspec-mocks (3.9.1)
66
- diff-lcs (>= 1.2.0, < 2.0)
67
- rspec-support (~> 3.9.0)
68
- rspec-rails (3.9.1)
69
- actionpack (>= 3.0)
70
- activesupport (>= 3.0)
71
- railties (>= 3.0)
72
- rspec-core (~> 3.9.0)
73
- rspec-expectations (~> 3.9.0)
74
- rspec-mocks (~> 3.9.0)
75
- rspec-support (~> 3.9.0)
76
- rspec-support (3.9.3)
77
- thor (1.0.1)
78
- thread_safe (0.3.6)
79
- tzinfo (1.2.7)
80
- thread_safe (~> 0.1)
81
- zeitwerk (2.4.0)
82
-
83
- PLATFORMS
84
- x64-mingw32
85
-
86
- DEPENDENCIES
87
- minitest (~> 5.0)
88
- rspec-rails (~> 3.5)
89
- ruby-client!
90
-
91
- BUNDLED WITH
92
- 2.1.4
data/LICENSE DELETED
@@ -1,177 +0,0 @@
1
-
2
- Apache License
3
- Version 2.0, January 2004
4
- http://www.apache.org/licenses/
5
-
6
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7
-
8
- 1. Definitions.
9
-
10
- "License" shall mean the terms and conditions for use, reproduction,
11
- and distribution as defined by Sections 1 through 9 of this document.
12
-
13
- "Licensor" shall mean the copyright owner or entity authorized by
14
- the copyright owner that is granting the License.
15
-
16
- "Legal Entity" shall mean the union of the acting entity and all
17
- other entities that control, are controlled by, or are under common
18
- control with that entity. For the purposes of this definition,
19
- "control" means (i) the power, direct or indirect, to cause the
20
- direction or management of such entity, whether by contract or
21
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
22
- outstanding shares, or (iii) beneficial ownership of such entity.
23
-
24
- "You" (or "Your") shall mean an individual or Legal Entity
25
- exercising permissions granted by this License.
26
-
27
- "Source" form shall mean the preferred form for making modifications,
28
- including but not limited to software source code, documentation
29
- source, and configuration files.
30
-
31
- "Object" form shall mean any form resulting from mechanical
32
- transformation or translation of a Source form, including but
33
- not limited to compiled object code, generated documentation,
34
- and conversions to other media types.
35
-
36
- "Work" shall mean the work of authorship, whether in Source or
37
- Object form, made available under the License, as indicated by a
38
- copyright notice that is included in or attached to the work
39
- (an example is provided in the Appendix below).
40
-
41
- "Derivative Works" shall mean any work, whether in Source or Object
42
- form, that is based on (or derived from) the Work and for which the
43
- editorial revisions, annotations, elaborations, or other modifications
44
- represent, as a whole, an original work of authorship. For the purposes
45
- of this License, Derivative Works shall not include works that remain
46
- separable from, or merely link (or bind by name) to the interfaces of,
47
- the Work and Derivative Works thereof.
48
-
49
- "Contribution" shall mean any work of authorship, including
50
- the original version of the Work and any modifications or additions
51
- to that Work or Derivative Works thereof, that is intentionally
52
- submitted to Licensor for inclusion in the Work by the copyright owner
53
- or by an individual or Legal Entity authorized to submit on behalf of
54
- the copyright owner. For the purposes of this definition, "submitted"
55
- means any form of electronic, verbal, or written communication sent
56
- to the Licensor or its representatives, including but not limited to
57
- communication on electronic mailing lists, source code control systems,
58
- and issue tracking systems that are managed by, or on behalf of, the
59
- Licensor for the purpose of discussing and improving the Work, but
60
- excluding communication that is conspicuously marked or otherwise
61
- designated in writing by the copyright owner as "Not a Contribution."
62
-
63
- "Contributor" shall mean Licensor and any individual or Legal Entity
64
- on behalf of whom a Contribution has been received by Licensor and
65
- subsequently incorporated within the Work.
66
-
67
- 2. Grant of Copyright License. Subject to the terms and conditions of
68
- this License, each Contributor hereby grants to You a perpetual,
69
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70
- copyright license to reproduce, prepare Derivative Works of,
71
- publicly display, publicly perform, sublicense, and distribute the
72
- Work and such Derivative Works in Source or Object form.
73
-
74
- 3. Grant of Patent License. Subject to the terms and conditions of
75
- this License, each Contributor hereby grants to You a perpetual,
76
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77
- (except as stated in this section) patent license to make, have made,
78
- use, offer to sell, sell, import, and otherwise transfer the Work,
79
- where such license applies only to those patent claims licensable
80
- by such Contributor that are necessarily infringed by their
81
- Contribution(s) alone or by combination of their Contribution(s)
82
- with the Work to which such Contribution(s) was submitted. If You
83
- institute patent litigation against any entity (including a
84
- cross-claim or counterclaim in a lawsuit) alleging that the Work
85
- or a Contribution incorporated within the Work constitutes direct
86
- or contributory patent infringement, then any patent licenses
87
- granted to You under this License for that Work shall terminate
88
- as of the date such litigation is filed.
89
-
90
- 4. Redistribution. You may reproduce and distribute copies of the
91
- Work or Derivative Works thereof in any medium, with or without
92
- modifications, and in Source or Object form, provided that You
93
- meet the following conditions:
94
-
95
- (a) You must give any other recipients of the Work or
96
- Derivative Works a copy of this License; and
97
-
98
- (b) You must cause any modified files to carry prominent notices
99
- stating that You changed the files; and
100
-
101
- (c) You must retain, in the Source form of any Derivative Works
102
- that You distribute, all copyright, patent, trademark, and
103
- attribution notices from the Source form of the Work,
104
- excluding those notices that do not pertain to any part of
105
- the Derivative Works; and
106
-
107
- (d) If the Work includes a "NOTICE" text file as part of its
108
- distribution, then any Derivative Works that You distribute must
109
- include a readable copy of the attribution notices contained
110
- within such NOTICE file, excluding those notices that do not
111
- pertain to any part of the Derivative Works, in at least one
112
- of the following places: within a NOTICE text file distributed
113
- as part of the Derivative Works; within the Source form or
114
- documentation, if provided along with the Derivative Works; or,
115
- within a display generated by the Derivative Works, if and
116
- wherever such third-party notices normally appear. The contents
117
- of the NOTICE file are for informational purposes only and
118
- do not modify the License. You may add Your own attribution
119
- notices within Derivative Works that You distribute, alongside
120
- or as an addendum to the NOTICE text from the Work, provided
121
- that such additional attribution notices cannot be construed
122
- as modifying the License.
123
-
124
- You may add Your own copyright statement to Your modifications and
125
- may provide additional or different license terms and conditions
126
- for use, reproduction, or distribution of Your modifications, or
127
- for any such Derivative Works as a whole, provided Your use,
128
- reproduction, and distribution of the Work otherwise complies with
129
- the conditions stated in this License.
130
-
131
- 5. Submission of Contributions. Unless You explicitly state otherwise,
132
- any Contribution intentionally submitted for inclusion in the Work
133
- by You to the Licensor shall be under the terms and conditions of
134
- this License, without any additional terms or conditions.
135
- Notwithstanding the above, nothing herein shall supersede or modify
136
- the terms of any separate license agreement you may have executed
137
- with Licensor regarding such Contributions.
138
-
139
- 6. Trademarks. This License does not grant permission to use the trade
140
- names, trademarks, service marks, or product names of the Licensor,
141
- except as required for reasonable and customary use in describing the
142
- origin of the Work and reproducing the content of the NOTICE file.
143
-
144
- 7. Disclaimer of Warranty. Unless required by applicable law or
145
- agreed to in writing, Licensor provides the Work (and each
146
- Contributor provides its Contributions) on an "AS IS" BASIS,
147
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148
- implied, including, without limitation, any warranties or conditions
149
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150
- PARTICULAR PURPOSE. You are solely responsible for determining the
151
- appropriateness of using or redistributing the Work and assume any
152
- risks associated with Your exercise of permissions under this License.
153
-
154
- 8. Limitation of Liability. In no event and under no legal theory,
155
- whether in tort (including negligence), contract, or otherwise,
156
- unless required by applicable law (such as deliberate and grossly
157
- negligent acts) or agreed to in writing, shall any Contributor be
158
- liable to You for damages, including any direct, indirect, special,
159
- incidental, or consequential damages of any character arising as a
160
- result of this License or out of the use or inability to use the
161
- Work (including but not limited to damages for loss of goodwill,
162
- work stoppage, computer failure or malfunction, or any and all
163
- other commercial damages or losses), even if such Contributor
164
- has been advised of the possibility of such damages.
165
-
166
- 9. Accepting Warranty or Additional Liability. While redistributing
167
- the Work or Derivative Works thereof, You may choose to offer,
168
- and charge a fee for, acceptance of support, warranty, indemnity,
169
- or other liability obligations and/or rights consistent with this
170
- License. However, in accepting such obligations, You may act only
171
- on Your own behalf and on Your sole responsibility, not on behalf
172
- of any other Contributor, and only if You agree to indemnify,
173
- defend, and hold each Contributor harmless for any liability
174
- incurred by, or claims asserted against, such Contributor by reason
175
- of your accepting any such warranty or additional liability.
176
-
177
- END OF TERMS AND CONDITIONS
data/README.md DELETED
@@ -1,49 +0,0 @@
1
- # Nimiq Ruby RPC Client
2
-
3
- > Ruby implementation of the Nimiq RPC client specs.
4
-
5
- ## Info
6
-
7
- Nimiq Ruby RPC client. It will allow you to interact with the Nimiq Blockchain, to collect data, sync with the network etc.. This library covers all the current [Nimiq JSON-RPC specification](https://github.com/nimiq/core-js/wiki/JSON-RPC-API#remotejs-client).
8
-
9
- # What is Nimiq?
10
-
11
- Inspired by the Bitcoin, Nimiq is a blockchain / cryptocurrency that runs in your browser seamlessly.
12
-
13
- Fast, easy and fun to use, for more information visit the [Nimiq website](https://www.nimiq.com/).
14
-
15
- ### Usage
16
-
17
- Example to use this ruby client:
18
-
19
- ```ruby
20
- options = {
21
- host: "http://127.0.0.1",
22
- port: "8000",
23
- # user: "user",
24
- # pass: "pass",
25
- # uri: "http://USER:PASS@IP:PORT",
26
- }
27
- nimiq = Nimiq::Client.new(options)
28
- consensus = nimiq.consensus()
29
- get_balance = nimiq.get_balance("NQ27 B9ED 98G5 3VH7 FY8D BFP0 XNF4 BD8L TN4B")
30
-
31
- puts "Consensus #{consensus}"
32
- puts "My account balance #{get_balance}"
33
- ```
34
-
35
- ## Development
36
-
37
- This section is for developments. If you only want to use this client go to the [Usage](#Usage) section. After cloning the repo, run `bundle` to install the required dependencies. For testing it requires a running Nimiq RPC node, to connect to. You can then run tests by typing `rspec --format documentation`.
38
-
39
- For a private node connection that require a username/password, don't forget to set these in the configuration spec file.
40
-
41
- ## Contributions
42
-
43
- This implementation was originally contributed by [jxdv](https://github.com/jxdv/).
44
-
45
- Bug reports and pull requests are welcome.
46
-
47
- ## License
48
-
49
- [Apache 2.0](LICENSE)
data/Rakefile DELETED
@@ -1,14 +0,0 @@
1
- # require "bundler/gem_tasks"
2
- require "rake/testtask"
3
-
4
- Rake::TestTask.new do |t|
5
- t.pattern = "spec/*_spec.rb"
6
- end
7
-
8
- # Rake::TestTask.new(:test) do |t|
9
- # t.libs << "test"
10
- # t.libs << "lib"
11
- # t.test_files = FileList["test/**/*_test.rb"]
12
- # end
13
-
14
- # task :default => :test
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require "bundler/setup"
3
- require "nimiq"
4
-
5
- require "irb"
6
- IRB.start(__FILE__)
data/bin/setup DELETED
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
data/lib/api.rb DELETED
@@ -1,317 +0,0 @@
1
- =begin
2
- Copyright 2020 Nimiq community.
3
-
4
- Licensed under the Apache License, Version 2.0 (the "License");
5
- you may not use this file except in compliance with the License.
6
- You may obtain a copy of the License at
7
-
8
- http://www.apache.org/licenses/LICENSE-2.0
9
-
10
- Unless required by applicable law or agreed to in writing, software
11
- distributed under the License is distributed on an "AS IS" BASIS,
12
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- See the License for the specific language governing permissions and
14
- limitations under the License.
15
- =end
16
-
17
- module Api
18
- attr_accessor :rpc
19
-
20
- # accounts - Returns a list of addresses owned by client.
21
- def accounts
22
- result = @rpc.request("accounts")
23
- return result
24
- end
25
-
26
- # block_number - Returns the height of most recent block.
27
- def block_number
28
- result = @rpc.request("blockNumber")
29
- return result
30
- end
31
-
32
- # consensus - Returns information on the current consensus state.
33
- def consensus
34
- result = @rpc.request("consensus")
35
- return result
36
- end
37
-
38
- # constant - Returns or overrides a constant value.
39
- # When no parameter is given, it returns the value of the constant.
40
- # When giving a value as parameter, it sets the constant to the given value.
41
- # To reset the constant to the default value, the parameter "reset" should be used.
42
- # - @param [String] name - The class and name of the constant. (format should be Class.CONSTANT)
43
- # - @param [Integer] value - The new value of the constant or "reset". (optional)
44
- def constant(name, value = nil)
45
- if value
46
- result = @rpc.request("constant", name, value)
47
- else
48
- result = @rpc.request("constant", name)
49
- end
50
- return result
51
- end
52
-
53
- # create_account - Creates a new account and stores its private key in the client store.
54
- def create_account
55
- result = @rpc.request("createAccount")
56
- return result
57
- end
58
-
59
- # create_raw_transaction - Creates and signs a transaction without sending it.
60
- # The transaction can then be send via `send_raw_transaction` without accidentally replaying it.
61
- # - @param [TransactionObject] transaction - The transaction object.
62
- def create_raw_transaction(transaction)
63
- result = @rpc.request("createRawTransaction", transaction)
64
- return result
65
- end
66
-
67
- # # new: update with more info
68
- # # get_raw_transaction_info - Checks signed_transaction raw information.
69
- # # - @param [String] signed_transaction - The hex encoded signed transaction.
70
- # def get_raw_transaction_info(signed_transaction)
71
- # result = @rpc.request("getRawTransactionInfo", signed_transaction)
72
- # return result
73
- # end
74
-
75
- # get_account - Returns details for the account of given address.
76
- # - @param [String] address - Address to get account details.
77
- def get_account(address)
78
- result = @rpc.request("getAccount", address)
79
- return result
80
- end
81
-
82
- # get_balance - Returns the balance of the account of given address.
83
- # - @param [String] address - Address to check for balance.
84
- def get_balance(address)
85
- result = @rpc.request("getBalance", address)
86
- return result
87
- end
88
-
89
- # get_block_by_hash - Returns information about a block by hash.
90
- # - @param [String] block_hash - Hash of the block to gather information on.
91
- # - @param [Boolean] full_transactions (optional) - If true it returns the full transaction objects, if false only the hashes of the transactions. (default false)
92
- def get_block_by_hash(block_hash, full_transactions = nil)
93
- if full_transactions
94
- result = @rpc.request("getBlockByHash", block_hash, full_transactions)
95
- else
96
- result = @rpc.request("getBlockByHash", block_hash)
97
- end
98
- return result
99
- end
100
-
101
- # get_block_by_number - Returns information about a block by block number.
102
- # - @param [Integer] block_number - The height of the block to gather information on.
103
- # - @param [Boolean] full_transactions (optional) - If true it returns the full transaction objects, if false only the hashes of the transactions. (default false)
104
- def get_block_by_number(block_number, full_transactions = nil)
105
- if full_transactions
106
- result = @rpc.request("getBlockByNumber", block_number, full_transactions)
107
- else
108
- result = @rpc.request("getBlockByNumber", block_number)
109
- end
110
- return result
111
- end
112
-
113
- # get_block_template - Returns a template to build the next block for mining.
114
- # This will consider pool instructions when connected to a pool.
115
- # - @param [String] address (optional) - Address to use as a miner for this block. This overrides the address provided during startup or from the pool.
116
- # - @param [String] dada_field (optional) - Hex-encoded value for the extra data field. This overrides the address provided during startup or from the pool.
117
- def get_block_template(address = nil, dada_field = nil)
118
- result = @rpc.request("getBlockTemplate")
119
- return result
120
- end
121
-
122
- # get_block_transaction_count_by_hash - Returns the number of transactions in a block from a block matching the given block hash.
123
- # - @param [String] block_hash - Hash of the block.
124
- def get_block_transaction_count_by_hash(block_hash)
125
- result = @rpc.request("getBlockTransactionCountByHash", block_hash)
126
- return result
127
- end
128
-
129
- # get_block_transaction_count_by_number - Returns the number of transactions in a block matching the given block number.
130
- # - @param [Integer] block_number - Height of the block.
131
- def get_block_transaction_count_by_number(block_number)
132
- result = @rpc.request("getBlockTransactionCountByNumber", block_number)
133
- return result
134
- end
135
-
136
- # get_transaction_by_block_hash_and_index - Returns information about a transaction by block hash and transaction index position.
137
- # - @param [Integer] block_hash - Hash of the block containing the transaction.
138
- # - @param [Integer] transaction_index - Index of the transaction in the block.
139
- def get_transaction_by_block_hash_and_index(block_hash, transaction_index)
140
- result = @rpc.request("getTransactionByBlockHashAndIndex", block_hash, transaction_index)
141
- return result
142
- end
143
-
144
- # get_transaction_by_block_number_and_index - Returns information about a transaction by block number and transaction index position.
145
- # - @param [Integer] block_height - Height of the block containing the transaction.
146
- # - @param [Integer] transaction_index - Index of the transaction in the block.
147
- def get_transaction_by_block_number_and_index(block_height, transaction_index)
148
- result = @rpc.request("getTransactionByBlockNumberAndIndex", block_height, transaction_index)
149
- return result
150
- end
151
-
152
- # get_transaction_by_hash - Returns the information about a transaction requested by transaction hash.
153
- # - @param [String] transaction_hash - Hash of a transaction.
154
- def get_transaction_by_hash(transaction_hash)
155
- result = @rpc.request("getTransactionByHash", transaction_hash)
156
- return result
157
- end
158
-
159
- # get_transaction_receipt - Returns the receipt of a transaction by transaction hash.
160
- # Note That the receipt is not available for pending transactions.
161
- # - @param [String] transaction_hash - Hash of a transaction.
162
- def get_transaction_receipt(transaction_hash)
163
- result = @rpc.request("getTransactionReceipt", transaction_hash)
164
- return result
165
- end
166
-
167
- # get_transactions_by_address - Returns the latest transactions successfully performed by or for an address.
168
- # - @param [String] address - Address of which transactions should be gathered.
169
- # - @param [Integer] transactions_number (optional) - Number of transactions that shall be returned. (default 1000)
170
- def get_transactions_by_address(address, transactions_number = nil)
171
- if transactions_number
172
- result = @rpc.request("getTransactionsByAddress", address, transactions_number)
173
- else
174
- result = @rpc.request("getTransactionsByAddress", address)
175
- end
176
- return result
177
- end
178
-
179
- # get_work - Returns instructions to mine the next block. This will consider pool instructions when connected to a pool.
180
- # - @param [String] address (optional) - Address to use as a miner for this block. This overrides the address provided during startup or from the pool.
181
- # - @param [String] dada_field (optional) - Hex-encoded value for the extra data field. This overrides the address provided during startup or from the pool.
182
- def get_work(address = nil, dada_field = nil)
183
- result = @rpc.request("getWork", address, dada_field)
184
- return result
185
- end
186
-
187
- # hashrate - Returns the number of hashes per second that the node is mining with.
188
- def hashrate
189
- result = @rpc.request("hashrate")
190
- return result
191
- end
192
-
193
- # log - Sets the log level of the node.
194
- # - @param [String] tag - If the tag is '*' the log level will be set globally, otherwise the log level is applied only on this tag.
195
- # - @param [String] log_level - Log levels valid options: `trace`, `verbose`, `debug`, `info`, `warn`, `error`, `assert`.
196
- def log(tag, log_level)
197
- result = @rpc.request("log", tag, log_level)
198
- return result
199
- end
200
-
201
- # mempool - Returns information on the current mempool situation. This will provide an overview of the number of transactions sorted into buckets based on their fee per byte (in smallest unit).
202
- def mempool
203
- result = @rpc.request("mempool")
204
- return result
205
- end
206
-
207
- # mempool_content - Returns transactions that are currently in the mempool.
208
- def mempool_content
209
- result = @rpc.request("mempoolContent")
210
- return result
211
- end
212
-
213
- # miner_address - Returns the miner address.
214
- def miner_address
215
- result = @rpc.request("minerAddress")
216
- return result
217
- end
218
-
219
- # miner_threads - Returns or sets the number of CPU threads for the miner.
220
- # - @param [Integer] set_threads (optional) - The number of threads to allocate for mining.
221
- def miner_threads(set_threads = nil)
222
- if set_threads
223
- result = @rpc.request("minerThreads", set_threads)
224
- else
225
- result = @rpc.request("minerThreads")
226
- end
227
- return result
228
- end
229
-
230
- # min_fee_per_byte - Returns or sets the minimum fee per byte.
231
- # - @param [Integer] set_min_fee (optional) - The new minimum fee per byte.
232
- def min_fee_per_byte(set_min_fee = nil)
233
- if set_min_fee
234
- result = @rpc.request("minFeePerByte", set_min_fee)
235
- else
236
- result = @rpc.request("minFeePerByte")
237
- end
238
- return result
239
- end
240
-
241
- # mining - Returns `true` if client is actively mining new blocks.
242
- def mining
243
- result = @rpc.request("mining")
244
- return result
245
- end
246
-
247
- # peer_count - Returns number of peers currently connected to the client.
248
- def peer_count
249
- result = @rpc.request("peerCount")
250
- return result
251
- end
252
-
253
- # peer_list - Returns list of peers known to the client.
254
- def peer_list
255
- result = @rpc.request("peerList")
256
- return result
257
- end
258
-
259
- # peer_state - Returns the state of the peer.
260
- # - @param [String] peer_address - The address of the peer.
261
- def peer_state(peer_address)
262
- result = @rpc.request("peerState", peer_address)
263
- return result
264
- end
265
-
266
- # pool - Returns or sets the mining pool.
267
- # When no parameter is given, it returns the current mining pool. When a value is given as parameter, it sets the mining pool to that value.
268
- # - @param [String/Boolean] pool_address (optional) - The mining pool connection string (url:port) or boolean to enable/disable pool mining.
269
- def pool(pool_address = nil)
270
- if pool_address
271
- result = @rpc.request("pool", pool_address)
272
- else
273
- result = @rpc.request("pool")
274
- end
275
- return result
276
- end
277
-
278
- # pool_confirmed_balance - Returns the confirmed mining pool balance.
279
- def pool_confirmed_balance
280
- result = @rpc.request("poolConfirmedBalance")
281
- return result
282
- end
283
-
284
- # pool_connection_state - Returns the connection state to mining pool.
285
- def pool_connection_state
286
- result = @rpc.request("poolConnectionState")
287
- return result
288
- end
289
-
290
- # send_raw_transaction - Sends a signed message call transaction or a contract creation, if the data field contains code.
291
- # - @param [String] signed_transaction - The hex encoded signed transaction.
292
- def send_raw_transaction(signed_transaction)
293
- result = @rpc.request("sendRawTransaction", signed_transaction)
294
- return result
295
- end
296
-
297
- # send_transaction - Creates new message call transaction or a contract creation, if the data field contains code.
298
- # - @param [TransactionObject] transaction - The transaction object.
299
- def send_transaction(transaction)
300
- result = @rpc.request("sendTransaction", transaction)
301
- return result
302
- end
303
-
304
- # submit_block - Submits a block to the node. When the block is valid, the node will forward it to other nodes in the network.
305
- # When submitting work from getWork, remember to include the suffix.
306
- # - @param [String] block - Hex-encoded full block (including header, interlink and body).
307
- def submit_block(block)
308
- result = @rpc.request("submitBlock", block)
309
- return result
310
- end
311
-
312
- # syncing - Returns an object with data about the sync status or `false`.
313
- def syncing
314
- result = @rpc.request("syncing")
315
- return result
316
- end
317
- end
@@ -1,108 +0,0 @@
1
- =begin
2
- Copyright 2020 Nimiq community.
3
-
4
- Licensed under the Apache License, Version 2.0 (the "License");
5
- you may not use this file except in compliance with the License.
6
- You may obtain a copy of the License at
7
-
8
- http://www.apache.org/licenses/LICENSE-2.0
9
-
10
- Unless required by applicable law or agreed to in writing, software
11
- distributed under the License is distributed on an "AS IS" BASIS,
12
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- See the License for the specific language governing permissions and
14
- limitations under the License.
15
- =end
16
-
17
- require "oj"
18
- require "net/http"
19
-
20
- # :nodoc: all
21
- module ClientRPC
22
- class Connect
23
- attr_accessor :options, :uri
24
-
25
- DEFAULTS = {
26
- host: "localhost",
27
- port: 18332,
28
- # dev: true,
29
- }.freeze
30
-
31
- def initialize(host)
32
- @options = DEFAULTS.dup.merge(host.dup)
33
- @uri = @options[:uri] ? URI(@options[:uri]) : URI(uri_check())
34
- end
35
-
36
- def request(name, *args)
37
- puts "\n> #{name}: #{args.join(",")}" if options[:dev]
38
- response = request_http_post(name, args)
39
- puts "< #{response.code} #{response.message}" if options[:dev]
40
- raise Error, response.message unless (200...300).cover?(response.code.to_i)
41
- begin
42
- response = Oj.load(response.body, symbol_keys: true, bigdecimal_load: true)
43
- rescue StandardError => e
44
- puts "WARN < Failed to parse JSON response: #{e}" if options[:dev]
45
- raise
46
- end
47
- puts "\n> #{name}: #{args.join(",")}" if options[:dev]
48
- puts response[:result] if options[:dev]
49
- raise Error, response[:error] if response[:error]
50
- response[:result]
51
- end
52
-
53
- def ping_node
54
- user = uri.user
55
- pass = uri.password
56
- http = Net::HTTP.new(uri.host, uri.port)
57
- request = Net::HTTP::Get.new(uri.request_uri)
58
- request.basic_auth(user, pass)
59
- request.body = request_body("", nil)
60
- request["Content-Type"] = "application/json".freeze
61
- response = http.request(request)
62
- @pingres = (response.code).to_i.dup
63
- end
64
-
65
- private
66
-
67
- def request_http_post(name, params)
68
- user = uri.user
69
- pass = uri.password
70
- http = Net::HTTP.new(uri.host, uri.port)
71
- request = Net::HTTP::Post.new(uri.request_uri)
72
- request.basic_auth(user, pass)
73
- request.body = request_body(name, params)
74
- request["Content-Type"] = "application/json".freeze
75
- http.request(request)
76
- end
77
-
78
- def request_body(name, params)
79
- Oj.dump({
80
- id: "rpc",
81
- jsonrpc: "2.0",
82
- method: name,
83
- params: params,
84
- }, mode: :compat)
85
- end
86
-
87
- def uri_check
88
- if (options[:host].include? "http://" or options[:host].include? "https://")
89
- host = options[:host]
90
- newhost = url_strip(host.dup)
91
- if (options[:host].include? "https")
92
- return "https://#{options[:user]}:#{options[:pass]}@#{newhost}:#{options[:port]}"
93
- else
94
- return "http://#{options[:user]}:#{options[:pass]}@#{newhost}:#{options[:port]}"
95
- end
96
- else
97
- return "http://#{options[:user]}:#{options[:pass]}@#{options[:host]}:#{options[:port]}"
98
- end
99
- end
100
-
101
- def url_strip(url)
102
- return url.to_s.sub!(/https?(\:)?(\/)?(\/)?(www\.)?/, "") if url.include?("http")
103
- url.to_s.sub!(/(www\.)?/, "") if url.include?("www")
104
- end
105
-
106
- class Error < RuntimeError; end
107
- end
108
- end
@@ -1,46 +0,0 @@
1
- =begin
2
- Copyright 2020 Nimiq community.
3
-
4
- Licensed under the Apache License, Version 2.0 (the "License");
5
- you may not use this file except in compliance with the License.
6
- You may obtain a copy of the License at
7
-
8
- http://www.apache.org/licenses/LICENSE-2.0
9
-
10
- Unless required by applicable law or agreed to in writing, software
11
- distributed under the License is distributed on an "AS IS" BASIS,
12
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- See the License for the specific language governing permissions and
14
- limitations under the License.
15
- =end
16
-
17
- require_relative "nimiq/version"
18
- require_relative "rpcclient"
19
- require_relative "api"
20
- require "json"
21
-
22
- module Nimiq
23
- class Error < StandardError; end # :nodoc: all
24
-
25
- attr_reader :rpc # :nodoc: all
26
-
27
- class Client
28
- include Api
29
-
30
- def initialize(opts)
31
- return @rpc = ClientRPC::Connect.new(opts)
32
- puts "Connecting to #{@opts}"
33
- end
34
-
35
- # Sends a raw request to the Nimiq node.
36
- def request(name, params = nil)
37
- return @rpc.request(name, params)
38
- end
39
-
40
- # Ping the Nimiq node.
41
- def ping
42
- @rpc.ping_node
43
- @pingres = @rpc.instance_variable_get(:@pingres)
44
- end
45
- end
46
- end
data/main.rb DELETED
@@ -1,153 +0,0 @@
1
- require_relative "./lib/ruby-client"
2
- require "json"
3
-
4
- # :main: README.MD
5
- options = {
6
- host: "http://127.0.0.1",
7
- port: "8005",
8
- user: "user",
9
- pass: "pass",
10
- dev: true,
11
- # uri: "http://USER:PASS@IP:PORT",
12
- }
13
-
14
- nimiq = Nimiq::Client.new(options)
15
- puts "nimiq init #{nimiq}"
16
-
17
- # nimiq.ping
18
- # print ">>> ", nimiq.instance_variable_get(:@pingres)
19
-
20
- consensus = nimiq.request("consenasus")
21
- puts "custom #{consensus}"
22
-
23
- # accounts = nimiq.accounts()
24
- # puts "accounts #{accounts}"
25
-
26
- # blockNumber = nimiq.block_number()
27
- # puts "blockNumber #{blockNumber}"
28
-
29
- # consensus = nimiq.consensus()
30
- # puts "consensus #{consensus}"
31
-
32
- # constant = nimiq.constant("BaseConsensus.MAX_ATTEMPTS_TO_FETCH", 10)
33
- # puts "constant #{constant}"
34
-
35
- # createAccount = nimiq.create_account()
36
- # puts "createAccount #{createAccount}"
37
-
38
- # transaction = {
39
- # "from": "NQ94 VESA PKTA 9YQ0 XKGC HVH0 Q9DF VSFU STSP",
40
- # "to": "NQ16 61ET MB3M 2JG6 TBLK BR0D B6EA X6XQ L91U",
41
- # "value": 100000,
42
- # "fee": 0,
43
- # }
44
- # createRawTransaction = nimiq.create_raw_transaction(transaction)
45
- # puts "createRawTransaction #{createRawTransaction}"
46
-
47
- # # new
48
- # getRawTransactionInfo = nimiq.get_raw_transaction_info("010000...abcdef")
49
- # puts "getRawTransactionInfo #{getRawTransactionInfo}"
50
-
51
- # getAccount = nimiq.get_account("NQ30 JLD6 U347 DFVU 40J3 F93V 9TCF YMMX RKY3")
52
- # puts "GetAccount #{getAccount}"
53
-
54
- # getBalance = nimiq.get_balance("NQ30 JLD6 U347 DFVU 40J3 F93V 9TCF YMMX RKY3")
55
- # puts "GetBalance #{getBalance}"
56
-
57
- # getBlockByHash = nimiq.get_block_by_hash("14c91f6d6f3a0b62271e546bb09461231ab7e4d1ddc2c3e1b93de52d48a1da87", true)
58
- # puts "getBlockByHash #{getBlockByHash}"
59
-
60
- # getBlockByNumber = nimiq.get_block_by_number(76415, true)
61
- # puts "getBlockByNumber #{getBlockByNumber}"
62
-
63
- # getBlockTemplate = nimiq.get_block_template()
64
- # puts "getBlockTemplate #{getBlockTemplate}"
65
-
66
- # getBlockTransactionCountByHash = nimiq.get_block_transaction_count_by_hash("dfe7d166f2c86bd10fa4b1f29cd06c13228f893167ce9826137c85758645572f")
67
- # puts "getBlockTransactionCountByHash #{getBlockTransactionCountByHash}"
68
-
69
- # getBlockTransactionCountByNumber = nimiq.get_block_transaction_count_by_number(76415)
70
- # puts "getBlockTransactionCountByNumber #{getBlockTransactionCountByNumber}"
71
-
72
- # getTransactionByBlockHashAndIndex = nimiq.get_transaction_by_block_hash_and_index("dfe7d166f2c86bd10fa4b1f29cd06c13228f893167ce9826137c85758645572f", 20)
73
- # puts "getTransactionByBlockHashAndIndex #{getTransactionByBlockHashAndIndex}"
74
-
75
- # getTransactionByBlockNumberAndIndex = nimiq.get_transaction_by_block_number_and_index(76415, 20)
76
- # puts "getTransactionByBlockNumberAndIndex #{getTransactionByBlockNumberAndIndex}"
77
-
78
- # getTransactionByHash = nimiq.get_transaction_by_hash("9eb228482138a8e64c5bb60608979904aa2be5721c115a9e3db54a0c481bb398")
79
- # puts "getTransactionByHash #{getTransactionByHash}"
80
-
81
- # getTransactionReceipt = nimiq.get_transaction_receipt("465a63b73aa0b9b54b777be9a585ea00b367a17898ad520e1f22cb2c986ff554")
82
- # puts "getTransactionReceipt #{getTransactionReceipt}"
83
-
84
- # getTransactionsByAddress = nimiq.get_transactions_by_address("NQ699A4AMB83HXDQ4J46BH5R4JFFQMA9C3GN", 100)
85
- # puts "getTransactionsByAddress #{getTransactionsByAddress}"
86
-
87
- # getWork = nimiq.get_work()
88
- # puts "getWork #{getWork}"
89
-
90
- # hashrate = nimiq.hashrate()
91
- # puts "hashrate #{hashrate}"
92
-
93
- # log = nimiq.log("BaseConsensus", "debug")
94
- # puts "log #{log}"
95
-
96
- # mempool = nimiq.mempool()
97
- # puts "mempool #{mempool}"
98
-
99
- # mempoolContent = nimiq.mempool_content()
100
- # puts "mempoolContent #{mempoolContent}"
101
-
102
- # minerAddress = nimiq.miner_address()
103
- # puts "minerAddress #{minerAddress}"
104
-
105
- # minerThreads = nimiq.miner_threads(2)
106
- # puts "minerThreads #{minerThreads}"
107
-
108
- # minFeePerByte = nimiq.min_fee_per_byte(0)
109
- # puts "minFeePerByte #{minFeePerByte}"
110
-
111
- # mining = nimiq.mining()
112
- # puts "mining #{mining}"
113
-
114
- # peerCount = nimiq.peer_count()
115
- # puts "peerCount #{peerCount}"
116
-
117
- # peerList = nimiq.peer_list()
118
- # puts "peerList #{peerList}"
119
-
120
- # peerState = nimiq.peer_state("wss://seed-1.nimiq.com:8443/dfd55fe967d6c0ca707d3a73ec31e4ac")
121
- # puts "peerState #{peerState}"
122
-
123
- # pool = nimiq.pool("eu.nimpool.io:8444")
124
- # puts "pool #{pool}"
125
-
126
- # poolConfirmedBalance = nimiq.pool_confirmed_balance()
127
- # puts "poolConfirmedBalance #{poolConfirmedBalance}"
128
-
129
- # poolConnectionState = nimiq.pool_connection_state()
130
- # puts "poolConnectionState #{poolConnectionState}"
131
-
132
- # sendRawTransaction = nimiq.send_raw_transaction("010000...abcdef")
133
- # puts "sendRawTransaction #{sendRawTransaction}"
134
-
135
- # transaction = {
136
- # "from": "NQ94 VESA PKTA 9YQ0 XKGC HVH0 Q9DF VSFU STSP",
137
- # "to": "NQ16 61ET MB3M 2JG6 TBLK BR0D B6EA X6XQ L91U",
138
- # "value": 100000,
139
- # "fee": 0,
140
- # }
141
- # sendTransaction = nimiq.send_transaction(transaction)
142
- # puts "sendTransaction #{sendTransaction}"
143
-
144
- # block="0000000"
145
- # submitBlock = nimiq.submit_block(block)
146
- # puts "submitBlock #{submitBlock}"
147
-
148
- # syncing = nimiq.syncing()
149
- # puts "syncing #{syncing}"
150
-
151
- # require_relative "./lib/ruby-client"
152
- # aaaaaaaa = Nimiq::Client.new()
153
- # puts aaaaaaaa.world
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,32 +0,0 @@
1
- # lib = File.expand_path("lib", __dir__)
2
- # $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- # require "nimiq/version"
4
- require_relative "lib/ruby-client"
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = "ruby-client"
8
- spec.version = Nimiq::VERSION
9
- spec.authors = ["jxdv"]
10
- spec.email = ["root@localhost"]
11
-
12
- spec.summary = %q{Ruby implementation of the Nimiq RPC client specifications.}
13
- spec.homepage = "https://github.com/jxdv/ruby-client"
14
- spec.license = "Apache-2.0"
15
- spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
16
-
17
- spec.metadata["homepage_uri"] = spec.homepage
18
- spec.metadata["source_code_uri"] = "https://github.com/jxdv/ruby-client"
19
- spec.metadata["changelog_uri"] = "https://github.com/jxdv/ruby-client/readme.md"
20
-
21
- spec.add_dependency "oj", "~> 2.15"
22
-
23
- spec.files = Dir["lib/*.rb"] + Dir["lib/rubyclient/*.rb"] + Dir["bin/*"]
24
- spec.files += Dir["[A-Z]*"] + Dir["test/**/*"]
25
- spec.files.reject! { |fn| fn.include? "CVS" }
26
- # spec.files = Dir.chdir(File.expand_path("..", __FILE__)) do
27
- # `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
28
- # end
29
- spec.bindir = "exe"
30
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
- spec.require_paths = ["lib"]
32
- end
Binary file