peerplays-ruby 1.0.0.pre.1
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/.gitignore +19 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +84 -0
- data/LICENSE.txt +23 -0
- data/README.md +81 -0
- data/Rakefile +26 -0
- data/lib/peerplays.rb +23 -0
- data/lib/peerplays/api.rb +115 -0
- data/lib/peerplays/asset_api.rb +17 -0
- data/lib/peerplays/base_error.rb +49 -0
- data/lib/peerplays/block_api.rb +16 -0
- data/lib/peerplays/chain_config.rb +18 -0
- data/lib/peerplays/crypto_api.rb +22 -0
- data/lib/peerplays/database_api.rb +74 -0
- data/lib/peerplays/history_api.rb +21 -0
- data/lib/peerplays/network_broadcast_api.rb +18 -0
- data/lib/peerplays/network_node_api.rb +21 -0
- data/lib/peerplays/orders_api.rb +16 -0
- data/lib/peerplays/version.rb +4 -0
- data/lib/peerplays/wallet_api.rb +118 -0
- data/peerplays-ruby.gemspec +39 -0
- metadata +425 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 35a78c6fb3c7f210ce43680547d1ab2174183762428a948164be64e9c6f69ddb
|
4
|
+
data.tar.gz: 40afb1e1d97f39a3e6094c4c45534df8b91108d7e611138a1c78d396dd0ee634
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2554955eeb96fd7833b79e4c77f7d83eac3390f8f9faf37cdaf98ea24dfca402eb0b2d98e6fe551f4703bb3d1146bcd06ade5866f95eca3d921ee19266e414ee
|
7
|
+
data.tar.gz: 44d6e613313a299099951c2144ac597d23d5fbc0da997adb95d6218db10cde6db7df6f998f50b3434688a3094e7f1a14b9769e16f666e160e6866fa87b6a6c6d
|
data/.gitignore
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
*.gem
|
2
|
+
/coverage/
|
3
|
+
/pkg/
|
4
|
+
/tmp/
|
5
|
+
|
6
|
+
## Documentation cache and generated files:
|
7
|
+
/.yardoc/
|
8
|
+
/_yardoc/
|
9
|
+
/doc/
|
10
|
+
/rdoc/
|
11
|
+
|
12
|
+
## Environment normalization:
|
13
|
+
/.bundle/
|
14
|
+
|
15
|
+
# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
|
16
|
+
.rvmrc
|
17
|
+
|
18
|
+
# gource output
|
19
|
+
output.mp4
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,84 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
peerplays-ruby (1.0.0.pre.1)
|
5
|
+
base58 (~> 0.2, >= 0.2.3)
|
6
|
+
bindata (~> 2.4, >= 2.4.4)
|
7
|
+
bitcoin-ruby (~> 0.0, >= 0.0.18)
|
8
|
+
faye-websocket (~> 0.10, >= 0.10.9)
|
9
|
+
ffi (~> 1.13, >= 1.9.23)
|
10
|
+
hashie (~> 4.1, >= 3.5.7)
|
11
|
+
json (~> 2.3, >= 2.1.0)
|
12
|
+
logging (~> 2.2, >= 2.2.0)
|
13
|
+
|
14
|
+
GEM
|
15
|
+
remote: https://rubygems.org/
|
16
|
+
specs:
|
17
|
+
awesome_print (1.8.0)
|
18
|
+
base58 (0.2.3)
|
19
|
+
bindata (2.4.7)
|
20
|
+
bitcoin-ruby (0.0.20)
|
21
|
+
eventmachine
|
22
|
+
ffi
|
23
|
+
scrypt
|
24
|
+
coderay (1.1.3)
|
25
|
+
docile (1.3.2)
|
26
|
+
eventmachine (1.2.7)
|
27
|
+
faye-websocket (0.10.9)
|
28
|
+
eventmachine (>= 0.12.0)
|
29
|
+
websocket-driver (>= 0.5.1)
|
30
|
+
ffi (1.13.1)
|
31
|
+
ffi-compiler (1.0.1)
|
32
|
+
ffi (>= 1.0.0)
|
33
|
+
rake
|
34
|
+
hashie (4.1.0)
|
35
|
+
io-console (0.5.6)
|
36
|
+
irb (1.2.4)
|
37
|
+
reline (>= 0.0.1)
|
38
|
+
json (2.3.0)
|
39
|
+
little-plugger (1.1.4)
|
40
|
+
logging (2.2.2)
|
41
|
+
little-plugger (~> 1.1)
|
42
|
+
multi_json (~> 1.10)
|
43
|
+
method_source (1.0.0)
|
44
|
+
minitest (5.14.1)
|
45
|
+
minitest-line (0.6.5)
|
46
|
+
minitest (~> 5.0)
|
47
|
+
minitest-proveit (1.0.0)
|
48
|
+
minitest (> 5, < 7)
|
49
|
+
multi_json (1.14.1)
|
50
|
+
pry (0.13.1)
|
51
|
+
coderay (~> 1.1)
|
52
|
+
method_source (~> 1.0)
|
53
|
+
rake (13.0.1)
|
54
|
+
reline (0.1.4)
|
55
|
+
io-console (~> 0.5)
|
56
|
+
scrypt (3.0.7)
|
57
|
+
ffi-compiler (>= 1.0, < 2.0)
|
58
|
+
simplecov (0.18.5)
|
59
|
+
docile (~> 1.1)
|
60
|
+
simplecov-html (~> 0.11)
|
61
|
+
simplecov-html (0.12.2)
|
62
|
+
websocket-driver (0.7.2)
|
63
|
+
websocket-extensions (>= 0.1.0)
|
64
|
+
websocket-extensions (0.1.5)
|
65
|
+
yard (0.9.25)
|
66
|
+
|
67
|
+
PLATFORMS
|
68
|
+
ruby
|
69
|
+
|
70
|
+
DEPENDENCIES
|
71
|
+
awesome_print (~> 1.8, >= 1.8.0)
|
72
|
+
bundler (~> 2.1, >= 1.16.1)
|
73
|
+
irb (~> 1.2, >= 1.2.3)
|
74
|
+
minitest (~> 5.14, >= 5.10.3)
|
75
|
+
minitest-line (~> 0.6, >= 0.6.4)
|
76
|
+
minitest-proveit (~> 1.0, >= 1.0.0)
|
77
|
+
peerplays-ruby!
|
78
|
+
pry (~> 0.13, >= 0.11.3)
|
79
|
+
rake (~> 13.0, >= 12.3.0)
|
80
|
+
simplecov (~> 0.18, >= 0.15.1)
|
81
|
+
yard (~> 0.9, >= 0.9.12)
|
82
|
+
|
83
|
+
BUNDLED WITH
|
84
|
+
2.1.4
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
Copyright (c) 2015-2016 Cryptonomex Inc. <contact@cryptonomex.com>
|
2
|
+
Copyright (c) 2015-2017 contributors <CONTRIBUTORS.txt>
|
3
|
+
Copyright (c) 2017 - 2018 Peerplays Blockchain Standards Association, and contributors.
|
4
|
+
|
5
|
+
The MIT License
|
6
|
+
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
8
|
+
of this software and associated documentation files (the "Software"), to deal
|
9
|
+
in the Software without restriction, including without limitation the rights
|
10
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
11
|
+
copies of the Software, and to permit persons to whom the Software is
|
12
|
+
furnished to do so, subject to the following conditions:
|
13
|
+
|
14
|
+
The above copyright notice and this permission notice shall be included in
|
15
|
+
all copies or substantial portions of the Software.
|
16
|
+
|
17
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
18
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
19
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
20
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
21
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
22
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
23
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
# `peerplays-ruby`
|
2
|
+
|
3
|
+
Peerplays-ruby the Ruby API for Peerplays blockchain.
|
4
|
+
|
5
|
+
## Getting Started
|
6
|
+
|
7
|
+
The peerplays-ruby gem is compatible with Ruby 2.4 or later.
|
8
|
+
|
9
|
+
### Install the gem for your project
|
10
|
+
|
11
|
+
*(Assuming that [Ruby is installed](https://www.ruby-lang.org/en/downloads/) on your computer, as well as [RubyGems](http://rubygems.org/pages/download))*
|
12
|
+
|
13
|
+
To install the gem on your computer, run in shell:
|
14
|
+
|
15
|
+
```bash
|
16
|
+
gem install peerplays-ruby
|
17
|
+
```
|
18
|
+
|
19
|
+
... then add in your code:
|
20
|
+
|
21
|
+
```ruby
|
22
|
+
require 'peerplays'
|
23
|
+
```
|
24
|
+
|
25
|
+
To add the gem as a dependency to your project with [Bundler](http://bundler.io/), you can add this line in your Gemfile:
|
26
|
+
|
27
|
+
```ruby
|
28
|
+
gem 'peerplays-ruby', require: 'peerplays'
|
29
|
+
```
|
30
|
+
|
31
|
+
### Get Accounts
|
32
|
+
|
33
|
+
```ruby
|
34
|
+
require 'peerplays'
|
35
|
+
|
36
|
+
api = Peerplays::DatabaseApi.new
|
37
|
+
|
38
|
+
api.get_accounts(['init1']) do |result|
|
39
|
+
result.each do |account|
|
40
|
+
puts account
|
41
|
+
end
|
42
|
+
end
|
43
|
+
```
|
44
|
+
|
45
|
+
### Set API Node
|
46
|
+
|
47
|
+
To set an alternative node, pass it as an argument, e.g.:
|
48
|
+
|
49
|
+
```ruby
|
50
|
+
api = Peerplays::DatabaseApi.new(url: 'wss://ppyws.roelandp.nl/ws')
|
51
|
+
```
|
52
|
+
|
53
|
+
### Reference
|
54
|
+
|
55
|
+
For lists of available methods provided by this gem:
|
56
|
+
|
57
|
+
* https://www.peerplays.tech/api/peerplays-core-api
|
58
|
+
* https://www.peerplays.tech/api/peerplays-wallet-api
|
59
|
+
|
60
|
+
### Tests
|
61
|
+
|
62
|
+
* Clone the client repository into a directory of your choice:
|
63
|
+
* `git clone git@gitlab.com:PBSA/PeerplaysIO/tools-libs/ruby-peerplays.git`
|
64
|
+
* Navigate into the new folder
|
65
|
+
* `cd ruby-peerplays`
|
66
|
+
* All tests can be invoked as follows:
|
67
|
+
* `bundle exec rake test`
|
68
|
+
* To run `testnet` tests (which does actual broadcasts)
|
69
|
+
* `TEST_NODE=ws://api.ppy-beatrice.blckchnd.com bundle exec rake`
|
70
|
+
|
71
|
+
## Contributions
|
72
|
+
|
73
|
+
Patches are welcome! Contributors are listed in the `peerplays-ruby.gemspec` file. Please run the tests (`rake test`) before opening a pull request and make sure that you are passing all of them. If you would like to contribute, but don't know what to work on, check the issues list.
|
74
|
+
|
75
|
+
## Issues
|
76
|
+
|
77
|
+
When you find issues, please report them!
|
78
|
+
|
79
|
+
## License
|
80
|
+
|
81
|
+
MIT
|
data/Rakefile
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'yard'
|
4
|
+
require 'peerplays'
|
5
|
+
|
6
|
+
Rake::TestTask.new(:test) do |t|
|
7
|
+
t.libs << 'test'
|
8
|
+
t.libs << 'lib'
|
9
|
+
t.test_files = FileList['test/**/*_test.rb']
|
10
|
+
t.ruby_opts << if ENV['HELL_ENABLED']
|
11
|
+
'-W2'
|
12
|
+
else
|
13
|
+
'-W1'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
YARD::Rake::YardocTask.new do |t|
|
18
|
+
t.files = ['lib/**/*.rb']
|
19
|
+
end
|
20
|
+
|
21
|
+
task default: :test
|
22
|
+
|
23
|
+
desc 'Ruby console with peerplays already required.'
|
24
|
+
task :console do
|
25
|
+
exec 'irb -r peerplays -r awesome_print -I ./lib'
|
26
|
+
end
|
data/lib/peerplays.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'json' unless defined?(JSON)
|
3
|
+
require 'net/https'
|
4
|
+
|
5
|
+
require 'hashie'
|
6
|
+
require 'peerplays/version'
|
7
|
+
require 'peerplays/chain_config'
|
8
|
+
require 'peerplays/base_error'
|
9
|
+
require 'peerplays/api'
|
10
|
+
require 'peerplays/history_api'
|
11
|
+
require 'peerplays/asset_api'
|
12
|
+
require 'peerplays/block_api'
|
13
|
+
require 'peerplays/crypto_api'
|
14
|
+
require 'peerplays/database_api'
|
15
|
+
require 'peerplays/network_broadcast_api'
|
16
|
+
require 'peerplays/network_node_api'
|
17
|
+
require 'peerplays/orders_api'
|
18
|
+
require 'peerplays/wallet_api'
|
19
|
+
|
20
|
+
module Peerplays
|
21
|
+
end
|
22
|
+
|
23
|
+
Hashie.logger = Logger.new(ENV['HASHIE_LOGGER'])
|
@@ -0,0 +1,115 @@
|
|
1
|
+
require 'faye/websocket'
|
2
|
+
require 'eventmachine'
|
3
|
+
|
4
|
+
module Peerplays
|
5
|
+
# See: {https://www.peerplays.tech/api/peerplays-core-api Core API}
|
6
|
+
class Api
|
7
|
+
attr_reader :methods
|
8
|
+
|
9
|
+
INITIAL_LATCH = 0.01
|
10
|
+
MAX_LATCH = 3.0
|
11
|
+
|
12
|
+
def initialize(options = {})
|
13
|
+
@url = options[:url] || ChainConfig::NETWORKS_PEERPLAYS_DEFAULT_NODE
|
14
|
+
@rpc_id = 0
|
15
|
+
@latch = INITIAL_LATCH
|
16
|
+
@socket = nil
|
17
|
+
@messages = nil
|
18
|
+
@thread_running = false
|
19
|
+
@api_id = api_id if !!@api_name && !!options[:check_enabled]
|
20
|
+
@api_id ||= options[:api_id] || @api_name
|
21
|
+
end
|
22
|
+
|
23
|
+
def api_id
|
24
|
+
@api_id = socket_send(1, @api_name, [])
|
25
|
+
end
|
26
|
+
|
27
|
+
def socket_send(*args)
|
28
|
+
id = rpc_id
|
29
|
+
send_options = {id: id, method: :call, params: args}
|
30
|
+
|
31
|
+
socket.send(send_options.to_json)
|
32
|
+
latch_reset
|
33
|
+
latch until !!(message = messages.delete(id))
|
34
|
+
|
35
|
+
if !!message['error']
|
36
|
+
BaseError.build_error(message['error'], send_options)
|
37
|
+
end
|
38
|
+
|
39
|
+
message['result']
|
40
|
+
end
|
41
|
+
|
42
|
+
def socket
|
43
|
+
start_thread unless !!@thread_running
|
44
|
+
|
45
|
+
@socket
|
46
|
+
end
|
47
|
+
|
48
|
+
def messages
|
49
|
+
start_thread unless !!@thread_running
|
50
|
+
|
51
|
+
@messages
|
52
|
+
end
|
53
|
+
private
|
54
|
+
# @private
|
55
|
+
def start_thread
|
56
|
+
Thread.new do
|
57
|
+
EM.run {
|
58
|
+
@socket ||= Faye::WebSocket::Client.new(@url)
|
59
|
+
|
60
|
+
@socket.on :open do |event|
|
61
|
+
@socket.send({id: rpc_id, method: 'call', params: [1, 'login', ['','']]}.to_json)
|
62
|
+
@thread_running = true
|
63
|
+
end
|
64
|
+
|
65
|
+
@socket.on :message do |event|
|
66
|
+
@messages ||= {}
|
67
|
+
|
68
|
+
JSON[event.data].tap do |object|
|
69
|
+
@messages[object['id']] = Hashie::Mash.new(object.select{|k| !%w(id jsonrpc).include? k})
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
@socket.on :close do |event|
|
74
|
+
@thread_running = false
|
75
|
+
@socket = nil
|
76
|
+
end
|
77
|
+
}
|
78
|
+
end
|
79
|
+
|
80
|
+
latch_reset
|
81
|
+
latch until !!@socket && !!@messages && @thread_running
|
82
|
+
end
|
83
|
+
|
84
|
+
# @private
|
85
|
+
def respond_to_missing?(m, include_private = false)
|
86
|
+
@methods.nil? ? false : @methods.include?(m.to_sym)
|
87
|
+
end
|
88
|
+
|
89
|
+
# @private
|
90
|
+
def method_missing(m, *args, &block)
|
91
|
+
super unless respond_to_missing?(m)
|
92
|
+
|
93
|
+
return socket_send(@api_id, m, args) unless block_given?
|
94
|
+
|
95
|
+
yield socket_send(@api_id, m, args)
|
96
|
+
end
|
97
|
+
|
98
|
+
# @private
|
99
|
+
def latch_reset
|
100
|
+
@latch = INITIAL_LATCH
|
101
|
+
end
|
102
|
+
|
103
|
+
# @private
|
104
|
+
def latch
|
105
|
+
raise RequestTimeoutUpstreamResponseError if @latch > MAX_LATCH * 2
|
106
|
+
|
107
|
+
sleep [@latch *= 2, MAX_LATCH].min
|
108
|
+
end
|
109
|
+
|
110
|
+
# @private
|
111
|
+
def rpc_id
|
112
|
+
@rpc_id = @rpc_id + 1
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Peerplays
|
2
|
+
# See: {https://www.peerplays.tech/api/peerplays-core-api/asset-api Asset API}
|
3
|
+
class AssetApi < Peerplays::Api
|
4
|
+
ASSET_API_NAMESPACE = 'asset'.freeze
|
5
|
+
ASSET_API_METHODS = %i(
|
6
|
+
get_asset_holders
|
7
|
+
get_all_asset_holders
|
8
|
+
).freeze
|
9
|
+
|
10
|
+
def initialize(options = {})
|
11
|
+
@api_name = ASSET_API_NAMESPACE
|
12
|
+
@methods = ASSET_API_METHODS
|
13
|
+
|
14
|
+
super
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module Peerplays
|
2
|
+
class BaseError < StandardError
|
3
|
+
def initialize(error = nil, cause = nil)
|
4
|
+
@error = error
|
5
|
+
@cause = cause
|
6
|
+
end
|
7
|
+
|
8
|
+
def to_s
|
9
|
+
detail = {}
|
10
|
+
detail[:error] = @error if !!@error
|
11
|
+
detail[:cause] = @cause if !!@cause
|
12
|
+
|
13
|
+
JSON[detail] rescue detail.to_s
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.build_error(error, context)
|
17
|
+
if error.message =~ /too few arguments passed to method/
|
18
|
+
raise ArgumentError, "#{error.message}: #{context}:", build_backtrace(error)
|
19
|
+
elsif error.message =~ /Invalid cast/
|
20
|
+
raise ArgumentError, "#{error.message}: #{context}:", build_backtrace(error)
|
21
|
+
elsif error.message =~ /doesn't match expected value/
|
22
|
+
raise ArgumentError, "#{error.message}: #{context}:", build_backtrace(error)
|
23
|
+
elsif error.message =~ /name_or_id.size\(\) > 0/
|
24
|
+
raise ArgumentError, "#{error.message}: #{context}:", build_backtrace(error)
|
25
|
+
elsif error.message =~ /account: no such account/
|
26
|
+
raise ArgumentError, "#{error.message}: #{context}:", build_backtrace(error)
|
27
|
+
elsif error.message =~ /A transaction must have at least one operation/
|
28
|
+
raise EmptyTransactionError, "#{error.message}: #{context}:", build_backtrace(error)
|
29
|
+
elsif error.message =~ /attempting to push a block that is too old/
|
30
|
+
raise BlockTooOldError, "#{error.message}: #{context}:", build_backtrace(error)
|
31
|
+
else
|
32
|
+
raise UnknownError, "#{error.message}: #{context}:", build_backtrace(error)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
private
|
36
|
+
def self.build_backtrace(error)
|
37
|
+
backtrace = Thread.current.backtrace.reject{ |line| line =~ /base_error/ }
|
38
|
+
JSON.pretty_generate(error) + "\n" + backtrace.join("\n")
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
class ArgumentError < BaseError; end
|
43
|
+
class RemoteNodeError < BaseError; end
|
44
|
+
class UpstreamResponseError < RemoteNodeError; end
|
45
|
+
class RequestTimeoutUpstreamResponseError < UpstreamResponseError; end
|
46
|
+
class EmptyTransactionError < ArgumentError; end
|
47
|
+
class BlockTooOldError < BaseError; end
|
48
|
+
class UnknownError < BaseError; end
|
49
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Peerplays
|
2
|
+
# See: {https://www.peerplays.tech/api/peerplays-core-api/block-api Block API}
|
3
|
+
class BlockApi < Peerplays::Api
|
4
|
+
BLOCK_API_NAMESPACE = 'block'.freeze
|
5
|
+
BLOCK_API_METHODS = %i(
|
6
|
+
get_blocks
|
7
|
+
).freeze
|
8
|
+
|
9
|
+
def initialize(options = {})
|
10
|
+
@api_name = BLOCK_API_NAMESPACE
|
11
|
+
@methods = BLOCK_API_METHODS
|
12
|
+
|
13
|
+
super
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Peerplays
|
2
|
+
module ChainConfig
|
3
|
+
EXPIRE_IN_SECS = 600
|
4
|
+
EXPIRE_IN_SECS_PROPOSAL = 24 * 60 * 60
|
5
|
+
|
6
|
+
NETWORKS_PEERPLAYS_CHAIN_ID = '6b6b5f0ce7a36d323768e534f3edb41c6d6332a541a95725b98e28d140850134'
|
7
|
+
NETWORKS_PEERPLAYS_ADDRESS_PREFIX = 'PPY'
|
8
|
+
NETWORKS_PEERPLAYS_CORE_ASSET = 'PPY'
|
9
|
+
NETWORKS_PEERPLAYS_DEFAULT_NODE = 'wss://api.ppy.blckchnd.com'
|
10
|
+
|
11
|
+
NETWORKS_TEST_CHAIN_ID = 'b3f7fe1e5ad0d2deca40a626a4404524f78e65c3a48137551c33ea4e7c365672'
|
12
|
+
NETWORKS_TEST_ADDRESS_PREFIX = 'TEST'
|
13
|
+
NETWORKS_TEST_CORE_ASSET = 'TEST'
|
14
|
+
NETWORKS_TEST_DEFAULT_NODE = 'ws://api.ppy-beatrice.blckchnd.com'
|
15
|
+
|
16
|
+
NETWORK_CHAIN_IDS = [NETWORKS_PEERPLAYS_CHAIN_ID, NETWORKS_TEST_CHAIN_ID]
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Peerplays
|
2
|
+
# See: {https://www.peerplays.tech/api/peerplays-core-api/crypto-api Crypto API}
|
3
|
+
class CryptoApi < Peerplays::Api
|
4
|
+
CRYPTO_API_NAMESPACE = 'crypto'.freeze
|
5
|
+
CRYPTO_API_METHODS = %i(
|
6
|
+
blind
|
7
|
+
blind_sum
|
8
|
+
range_get_info
|
9
|
+
range_proof_sign
|
10
|
+
verify_sum
|
11
|
+
verify_range
|
12
|
+
verify_range_proof_rewind
|
13
|
+
).freeze
|
14
|
+
|
15
|
+
def initialize(options = {})
|
16
|
+
@api_name = CRYPTO_API_NAMESPACE
|
17
|
+
@methods = CRYPTO_API_METHODS
|
18
|
+
|
19
|
+
super
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
module Peerplays
|
2
|
+
# See: {https://www.peerplays.tech/api/peerplays-core-api/database-api Database API}
|
3
|
+
class DatabaseApi < Peerplays::Api
|
4
|
+
DATABASE_API_NAMESPACE = 'database'
|
5
|
+
DATABASE_API_METHODS = %i(
|
6
|
+
get_objects
|
7
|
+
set_subscribe_callback
|
8
|
+
set_pending_transaction_callback
|
9
|
+
set_block_applied_callback
|
10
|
+
cancel_all_subscriptions
|
11
|
+
get_block_header
|
12
|
+
get_block
|
13
|
+
get_transaction
|
14
|
+
get_recent_transaction_by_id
|
15
|
+
get_chain_properties
|
16
|
+
get_global_properties
|
17
|
+
get_config
|
18
|
+
get_chain_id
|
19
|
+
get_dynamic_global_properties
|
20
|
+
get_key_references
|
21
|
+
get_accounts
|
22
|
+
get_full_accounts
|
23
|
+
get_account_by_name
|
24
|
+
get_account_references
|
25
|
+
lookup_account_names
|
26
|
+
lookup_accounts
|
27
|
+
get_account_count
|
28
|
+
get_account_balances
|
29
|
+
get_named_account_balances
|
30
|
+
get_balance_objects
|
31
|
+
get_vested_balances
|
32
|
+
get_vesting_balances
|
33
|
+
get_assets
|
34
|
+
list_assets
|
35
|
+
lookup_asset_symbols
|
36
|
+
get_order_book
|
37
|
+
get_limit_orders
|
38
|
+
get_call_orders
|
39
|
+
get_settle_orders
|
40
|
+
get_margin_positions
|
41
|
+
subscribe_to_market
|
42
|
+
unsubscribe_from_market
|
43
|
+
get_ticker
|
44
|
+
get_24_volume
|
45
|
+
get_trade_history
|
46
|
+
get_witnesses
|
47
|
+
get_witness_by_account
|
48
|
+
lookup_witness_accounts
|
49
|
+
get_witness_count
|
50
|
+
get_committee_members
|
51
|
+
get_committee_member_by_account
|
52
|
+
lookup_committee_member_accounts
|
53
|
+
get_workers_by_account
|
54
|
+
lookup_vote_ids
|
55
|
+
get_transaction_hex
|
56
|
+
get_required_signatures
|
57
|
+
get_potential_signatures
|
58
|
+
get_potential_address_signatures
|
59
|
+
verify_authority
|
60
|
+
verify_account_authority
|
61
|
+
validate_transaction
|
62
|
+
get_required_fees
|
63
|
+
get_proposed_transactions
|
64
|
+
get_blinded_balances
|
65
|
+
).freeze
|
66
|
+
|
67
|
+
def initialize(options = {})
|
68
|
+
@api_name = DATABASE_API_NAMESPACE
|
69
|
+
@methods = DATABASE_API_METHODS
|
70
|
+
|
71
|
+
super
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Peerplays
|
2
|
+
# See: {https://www.peerplays.tech/api/peerplays-core-api/account-history-api History API}
|
3
|
+
class HistoryApi < Peerplays::Api
|
4
|
+
HISTORY_API_NAMESPACE = 'history'.freeze
|
5
|
+
HISTORY_API_METHODS = %i(
|
6
|
+
get_account_history
|
7
|
+
get_account_history_operations
|
8
|
+
get_relative_account_history
|
9
|
+
get_fill_order_history
|
10
|
+
get_market_history
|
11
|
+
get_market_history_buckets
|
12
|
+
).freeze
|
13
|
+
|
14
|
+
def initialize(options = {})
|
15
|
+
@api_name = HISTORY_API_NAMESPACE
|
16
|
+
@methods = HISTORY_API_METHODS
|
17
|
+
|
18
|
+
super
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Peerplays
|
2
|
+
# See: {https://www.peerplays.tech/api/peerplays-core-api/network-broadcast-api Network Broadcast API}
|
3
|
+
class NetworkBroadcastApi < Peerplays::Api
|
4
|
+
NETWORK_BROADCAST_API_NAMESPACE = 'network_broadcast'.freeze
|
5
|
+
NETWORK_BROADCAST_API_METHODS = %i(
|
6
|
+
broadcast_transaction
|
7
|
+
broadcast_transaction_with_callback
|
8
|
+
broadcast_block
|
9
|
+
).freeze
|
10
|
+
|
11
|
+
def initialize(options = {})
|
12
|
+
@api_name = NETWORK_BROADCAST_API_NAMESPACE
|
13
|
+
@methods = NETWORK_BROADCAST_API_METHODS
|
14
|
+
|
15
|
+
super
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Peerplays
|
2
|
+
# See: {https://www.peerplays.tech/api/peerplays-core-api/network-nodes-api Network Node API}
|
3
|
+
class NetworkNodeApi < Peerplays::Api
|
4
|
+
NETWORK_NODE_API_NAMESPACE = 'network_node'.freeze
|
5
|
+
NETWORK_NODE_API_METHODS = %i(
|
6
|
+
get_info
|
7
|
+
get_connected_peers
|
8
|
+
get_potential_peers
|
9
|
+
get_advanced_node_parameters
|
10
|
+
add_node
|
11
|
+
set_advanced_node_parameters
|
12
|
+
).freeze
|
13
|
+
|
14
|
+
def initialize(options = {})
|
15
|
+
@api_name = NETWORK_NODE_API_NAMESPACE
|
16
|
+
@methods = NETWORK_NODE_API_METHODS
|
17
|
+
|
18
|
+
super
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Peerplays
|
2
|
+
# See: {https://www.peerplays.tech/api/peerplays-core-api/orders-api Orders API}
|
3
|
+
class OrdersApi < Peerplays::Api
|
4
|
+
ORDERS_API_NAMESPACE = 'orders'.freeze
|
5
|
+
ORDERS_API_METHODS = %i(
|
6
|
+
get_grouped_limit_orders
|
7
|
+
).freeze
|
8
|
+
|
9
|
+
def initialize(options = {})
|
10
|
+
@api_name = ORDERS_API_NAMESPACE
|
11
|
+
@methods = ORDERS_API_METHODS
|
12
|
+
|
13
|
+
super
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,118 @@
|
|
1
|
+
module Peerplays
|
2
|
+
# See: {https://www.peerplays.tech/api/peerplays-wallet-api Wallet API}
|
3
|
+
class WalletApi < Peerplays::Api
|
4
|
+
WALLET_API_NAMESPACE = 'wallet'.freeze
|
5
|
+
WALLET_API_METHODS = %i(
|
6
|
+
list_my_accounts
|
7
|
+
list_accounts
|
8
|
+
list_account_balances
|
9
|
+
register_account
|
10
|
+
upgrade_account
|
11
|
+
create_account_with_brain_key
|
12
|
+
transfer
|
13
|
+
transfer2
|
14
|
+
whitelist_account
|
15
|
+
get_vesting_balances
|
16
|
+
withdraw_vesting
|
17
|
+
get_account
|
18
|
+
get_account_id
|
19
|
+
get_account_history
|
20
|
+
approve_proposal
|
21
|
+
list_my_accounts
|
22
|
+
list_accounts
|
23
|
+
list_account_balances
|
24
|
+
register_account
|
25
|
+
upgrade_account
|
26
|
+
create_account_with_brain_key
|
27
|
+
transfer
|
28
|
+
transfer2
|
29
|
+
whitelist_account
|
30
|
+
get_vesting_balances
|
31
|
+
withdraw_vesting
|
32
|
+
get_account
|
33
|
+
get_account_id
|
34
|
+
get_account_history
|
35
|
+
approve_proposal
|
36
|
+
get_block
|
37
|
+
get_account_count
|
38
|
+
get_global_properties
|
39
|
+
get_dynamic_global_properties
|
40
|
+
get_object
|
41
|
+
help
|
42
|
+
gethelp
|
43
|
+
info
|
44
|
+
about
|
45
|
+
network_get_connected_peers
|
46
|
+
create_committee_member
|
47
|
+
get_witness
|
48
|
+
get_committee_member
|
49
|
+
list_witnesses
|
50
|
+
list_committee_members
|
51
|
+
create_witness
|
52
|
+
update_witness
|
53
|
+
create_worker
|
54
|
+
update_worker_votes
|
55
|
+
vote_for_committee_member
|
56
|
+
vote_for_witness
|
57
|
+
set_voting_proxy
|
58
|
+
set_desired_witness_and_committee_member_count
|
59
|
+
propose_parameter_change
|
60
|
+
propose_fee_change
|
61
|
+
set_key_label
|
62
|
+
get_key_label
|
63
|
+
get_public_key
|
64
|
+
get_blind_accounts
|
65
|
+
get_my_blind_accounts
|
66
|
+
get_blind_balances
|
67
|
+
create_blind_account
|
68
|
+
transfer_to_blind
|
69
|
+
transfer_from_blind
|
70
|
+
blind_transfer
|
71
|
+
blind_history
|
72
|
+
receive_blind_transfer
|
73
|
+
sell_asset
|
74
|
+
borrow_asset
|
75
|
+
cancel_order
|
76
|
+
settle_asset
|
77
|
+
get_market_history
|
78
|
+
get_limit_orders
|
79
|
+
get_call_orders
|
80
|
+
get_settle_orders
|
81
|
+
begin_builder_transaction
|
82
|
+
add_operation_to_builder_transaction
|
83
|
+
replace_operation_in_builder_transaction
|
84
|
+
set_fees_on_builder_transaction
|
85
|
+
preview_builder_transaction
|
86
|
+
sign_builder_transaction
|
87
|
+
propose_builder_transaction
|
88
|
+
propose_builder_transaction2
|
89
|
+
remove_builder_transaction
|
90
|
+
serialize_transaction
|
91
|
+
sign_transaction
|
92
|
+
get_prototype_operation
|
93
|
+
is_new
|
94
|
+
is_locked
|
95
|
+
lock
|
96
|
+
unlock
|
97
|
+
set_password
|
98
|
+
dump_private_keys
|
99
|
+
import_key
|
100
|
+
import_accounts
|
101
|
+
import_account_keys
|
102
|
+
import_balance
|
103
|
+
suggest_brain_key
|
104
|
+
get_transaction_id
|
105
|
+
get_private_key
|
106
|
+
load_wallet_file
|
107
|
+
normalize_brain_key
|
108
|
+
save_wallet_file
|
109
|
+
).freeze
|
110
|
+
|
111
|
+
def initialize(options = {})
|
112
|
+
@api_name = WALLET_API_NAMESPACE
|
113
|
+
@methods = WALLET_API_METHODS
|
114
|
+
|
115
|
+
super
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'peerplays/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'peerplays-ruby'
|
8
|
+
spec.version = Peerplays::VERSION
|
9
|
+
spec.authors = ['Anthony Martin']
|
10
|
+
spec.email = ['peerplays-ruby@martin-studio.com']
|
11
|
+
|
12
|
+
spec.summary = %q{Peerplays Ruby Client}
|
13
|
+
spec.description = %q{Client for accessing the Peerplays blockchain.}
|
14
|
+
spec.homepage = 'https://gitlab.com/PBSA/PeerplaysIO/tools-libs/ruby-peerplays'
|
15
|
+
spec.license = 'MIT'
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test)/}) }
|
18
|
+
spec.require_paths = ['lib']
|
19
|
+
|
20
|
+
spec.add_development_dependency 'bundler', '~> 2.1', '>= 1.16.1'
|
21
|
+
spec.add_development_dependency 'rake', '~> 13.0', '>= 12.3.0'
|
22
|
+
spec.add_development_dependency 'minitest', '~> 5.14', '>= 5.10.3'
|
23
|
+
spec.add_development_dependency 'minitest-line', '~> 0.6', '>= 0.6.4'
|
24
|
+
spec.add_development_dependency 'minitest-proveit', '~> 1.0', '>= 1.0.0'
|
25
|
+
spec.add_development_dependency 'simplecov', '~> 0.18', '>= 0.15.1'
|
26
|
+
spec.add_development_dependency 'yard', '~> 0.9', '>= 0.9.12'
|
27
|
+
spec.add_development_dependency 'pry', '~> 0.13', '>= 0.11.3'
|
28
|
+
spec.add_development_dependency 'awesome_print', '~> 1.8', '>= 1.8.0'
|
29
|
+
spec.add_development_dependency 'irb', '~> 1.2', '>= 1.2.3'
|
30
|
+
|
31
|
+
spec.add_dependency 'faye-websocket', '~> 0.10', '>= 0.10.9'
|
32
|
+
spec.add_dependency 'json', '~> 2.3', '>= 2.1.0'
|
33
|
+
spec.add_dependency 'logging', '~> 2.2', '>= 2.2.0'
|
34
|
+
spec.add_dependency 'hashie', '~> 4.1', '>= 3.5.7'
|
35
|
+
spec.add_dependency 'bitcoin-ruby', '~> 0.0', '>= 0.0.18'
|
36
|
+
spec.add_dependency 'ffi', '~> 1.13', '>= 1.9.23'
|
37
|
+
spec.add_dependency 'bindata', '~> 2.4', '>= 2.4.4'
|
38
|
+
spec.add_dependency 'base58', '~> 0.2', '>= 0.2.3'
|
39
|
+
end
|
metadata
ADDED
@@ -0,0 +1,425 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: peerplays-ruby
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0.pre.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Anthony Martin
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-06-10 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.16.1
|
20
|
+
- - "~>"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '2.1'
|
23
|
+
type: :development
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.16.1
|
30
|
+
- - "~>"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '2.1'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: rake
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: 12.3.0
|
40
|
+
- - "~>"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '13.0'
|
43
|
+
type: :development
|
44
|
+
prerelease: false
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: 12.3.0
|
50
|
+
- - "~>"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '13.0'
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: minitest
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: 5.10.3
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '5.14'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 5.10.3
|
70
|
+
- - "~>"
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '5.14'
|
73
|
+
- !ruby/object:Gem::Dependency
|
74
|
+
name: minitest-line
|
75
|
+
requirement: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - "~>"
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0.6'
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.6.4
|
83
|
+
type: :development
|
84
|
+
prerelease: false
|
85
|
+
version_requirements: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0.6'
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: 0.6.4
|
93
|
+
- !ruby/object:Gem::Dependency
|
94
|
+
name: minitest-proveit
|
95
|
+
requirement: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: 1.0.0
|
100
|
+
- - "~>"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '1.0'
|
103
|
+
type: :development
|
104
|
+
prerelease: false
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 1.0.0
|
110
|
+
- - "~>"
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '1.0'
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: simplecov
|
115
|
+
requirement: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - ">="
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: 0.15.1
|
120
|
+
- - "~>"
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: '0.18'
|
123
|
+
type: :development
|
124
|
+
prerelease: false
|
125
|
+
version_requirements: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - ">="
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: 0.15.1
|
130
|
+
- - "~>"
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0.18'
|
133
|
+
- !ruby/object:Gem::Dependency
|
134
|
+
name: yard
|
135
|
+
requirement: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - "~>"
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '0.9'
|
140
|
+
- - ">="
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: 0.9.12
|
143
|
+
type: :development
|
144
|
+
prerelease: false
|
145
|
+
version_requirements: !ruby/object:Gem::Requirement
|
146
|
+
requirements:
|
147
|
+
- - "~>"
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: '0.9'
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: 0.9.12
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: pry
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: 0.11.3
|
160
|
+
- - "~>"
|
161
|
+
- !ruby/object:Gem::Version
|
162
|
+
version: '0.13'
|
163
|
+
type: :development
|
164
|
+
prerelease: false
|
165
|
+
version_requirements: !ruby/object:Gem::Requirement
|
166
|
+
requirements:
|
167
|
+
- - ">="
|
168
|
+
- !ruby/object:Gem::Version
|
169
|
+
version: 0.11.3
|
170
|
+
- - "~>"
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: '0.13'
|
173
|
+
- !ruby/object:Gem::Dependency
|
174
|
+
name: awesome_print
|
175
|
+
requirement: !ruby/object:Gem::Requirement
|
176
|
+
requirements:
|
177
|
+
- - ">="
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: 1.8.0
|
180
|
+
- - "~>"
|
181
|
+
- !ruby/object:Gem::Version
|
182
|
+
version: '1.8'
|
183
|
+
type: :development
|
184
|
+
prerelease: false
|
185
|
+
version_requirements: !ruby/object:Gem::Requirement
|
186
|
+
requirements:
|
187
|
+
- - ">="
|
188
|
+
- !ruby/object:Gem::Version
|
189
|
+
version: 1.8.0
|
190
|
+
- - "~>"
|
191
|
+
- !ruby/object:Gem::Version
|
192
|
+
version: '1.8'
|
193
|
+
- !ruby/object:Gem::Dependency
|
194
|
+
name: irb
|
195
|
+
requirement: !ruby/object:Gem::Requirement
|
196
|
+
requirements:
|
197
|
+
- - "~>"
|
198
|
+
- !ruby/object:Gem::Version
|
199
|
+
version: '1.2'
|
200
|
+
- - ">="
|
201
|
+
- !ruby/object:Gem::Version
|
202
|
+
version: 1.2.3
|
203
|
+
type: :development
|
204
|
+
prerelease: false
|
205
|
+
version_requirements: !ruby/object:Gem::Requirement
|
206
|
+
requirements:
|
207
|
+
- - "~>"
|
208
|
+
- !ruby/object:Gem::Version
|
209
|
+
version: '1.2'
|
210
|
+
- - ">="
|
211
|
+
- !ruby/object:Gem::Version
|
212
|
+
version: 1.2.3
|
213
|
+
- !ruby/object:Gem::Dependency
|
214
|
+
name: faye-websocket
|
215
|
+
requirement: !ruby/object:Gem::Requirement
|
216
|
+
requirements:
|
217
|
+
- - "~>"
|
218
|
+
- !ruby/object:Gem::Version
|
219
|
+
version: '0.10'
|
220
|
+
- - ">="
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: 0.10.9
|
223
|
+
type: :runtime
|
224
|
+
prerelease: false
|
225
|
+
version_requirements: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - "~>"
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '0.10'
|
230
|
+
- - ">="
|
231
|
+
- !ruby/object:Gem::Version
|
232
|
+
version: 0.10.9
|
233
|
+
- !ruby/object:Gem::Dependency
|
234
|
+
name: json
|
235
|
+
requirement: !ruby/object:Gem::Requirement
|
236
|
+
requirements:
|
237
|
+
- - ">="
|
238
|
+
- !ruby/object:Gem::Version
|
239
|
+
version: 2.1.0
|
240
|
+
- - "~>"
|
241
|
+
- !ruby/object:Gem::Version
|
242
|
+
version: '2.3'
|
243
|
+
type: :runtime
|
244
|
+
prerelease: false
|
245
|
+
version_requirements: !ruby/object:Gem::Requirement
|
246
|
+
requirements:
|
247
|
+
- - ">="
|
248
|
+
- !ruby/object:Gem::Version
|
249
|
+
version: 2.1.0
|
250
|
+
- - "~>"
|
251
|
+
- !ruby/object:Gem::Version
|
252
|
+
version: '2.3'
|
253
|
+
- !ruby/object:Gem::Dependency
|
254
|
+
name: logging
|
255
|
+
requirement: !ruby/object:Gem::Requirement
|
256
|
+
requirements:
|
257
|
+
- - ">="
|
258
|
+
- !ruby/object:Gem::Version
|
259
|
+
version: 2.2.0
|
260
|
+
- - "~>"
|
261
|
+
- !ruby/object:Gem::Version
|
262
|
+
version: '2.2'
|
263
|
+
type: :runtime
|
264
|
+
prerelease: false
|
265
|
+
version_requirements: !ruby/object:Gem::Requirement
|
266
|
+
requirements:
|
267
|
+
- - ">="
|
268
|
+
- !ruby/object:Gem::Version
|
269
|
+
version: 2.2.0
|
270
|
+
- - "~>"
|
271
|
+
- !ruby/object:Gem::Version
|
272
|
+
version: '2.2'
|
273
|
+
- !ruby/object:Gem::Dependency
|
274
|
+
name: hashie
|
275
|
+
requirement: !ruby/object:Gem::Requirement
|
276
|
+
requirements:
|
277
|
+
- - ">="
|
278
|
+
- !ruby/object:Gem::Version
|
279
|
+
version: 3.5.7
|
280
|
+
- - "~>"
|
281
|
+
- !ruby/object:Gem::Version
|
282
|
+
version: '4.1'
|
283
|
+
type: :runtime
|
284
|
+
prerelease: false
|
285
|
+
version_requirements: !ruby/object:Gem::Requirement
|
286
|
+
requirements:
|
287
|
+
- - ">="
|
288
|
+
- !ruby/object:Gem::Version
|
289
|
+
version: 3.5.7
|
290
|
+
- - "~>"
|
291
|
+
- !ruby/object:Gem::Version
|
292
|
+
version: '4.1'
|
293
|
+
- !ruby/object:Gem::Dependency
|
294
|
+
name: bitcoin-ruby
|
295
|
+
requirement: !ruby/object:Gem::Requirement
|
296
|
+
requirements:
|
297
|
+
- - "~>"
|
298
|
+
- !ruby/object:Gem::Version
|
299
|
+
version: '0.0'
|
300
|
+
- - ">="
|
301
|
+
- !ruby/object:Gem::Version
|
302
|
+
version: 0.0.18
|
303
|
+
type: :runtime
|
304
|
+
prerelease: false
|
305
|
+
version_requirements: !ruby/object:Gem::Requirement
|
306
|
+
requirements:
|
307
|
+
- - "~>"
|
308
|
+
- !ruby/object:Gem::Version
|
309
|
+
version: '0.0'
|
310
|
+
- - ">="
|
311
|
+
- !ruby/object:Gem::Version
|
312
|
+
version: 0.0.18
|
313
|
+
- !ruby/object:Gem::Dependency
|
314
|
+
name: ffi
|
315
|
+
requirement: !ruby/object:Gem::Requirement
|
316
|
+
requirements:
|
317
|
+
- - ">="
|
318
|
+
- !ruby/object:Gem::Version
|
319
|
+
version: 1.9.23
|
320
|
+
- - "~>"
|
321
|
+
- !ruby/object:Gem::Version
|
322
|
+
version: '1.13'
|
323
|
+
type: :runtime
|
324
|
+
prerelease: false
|
325
|
+
version_requirements: !ruby/object:Gem::Requirement
|
326
|
+
requirements:
|
327
|
+
- - ">="
|
328
|
+
- !ruby/object:Gem::Version
|
329
|
+
version: 1.9.23
|
330
|
+
- - "~>"
|
331
|
+
- !ruby/object:Gem::Version
|
332
|
+
version: '1.13'
|
333
|
+
- !ruby/object:Gem::Dependency
|
334
|
+
name: bindata
|
335
|
+
requirement: !ruby/object:Gem::Requirement
|
336
|
+
requirements:
|
337
|
+
- - "~>"
|
338
|
+
- !ruby/object:Gem::Version
|
339
|
+
version: '2.4'
|
340
|
+
- - ">="
|
341
|
+
- !ruby/object:Gem::Version
|
342
|
+
version: 2.4.4
|
343
|
+
type: :runtime
|
344
|
+
prerelease: false
|
345
|
+
version_requirements: !ruby/object:Gem::Requirement
|
346
|
+
requirements:
|
347
|
+
- - "~>"
|
348
|
+
- !ruby/object:Gem::Version
|
349
|
+
version: '2.4'
|
350
|
+
- - ">="
|
351
|
+
- !ruby/object:Gem::Version
|
352
|
+
version: 2.4.4
|
353
|
+
- !ruby/object:Gem::Dependency
|
354
|
+
name: base58
|
355
|
+
requirement: !ruby/object:Gem::Requirement
|
356
|
+
requirements:
|
357
|
+
- - "~>"
|
358
|
+
- !ruby/object:Gem::Version
|
359
|
+
version: '0.2'
|
360
|
+
- - ">="
|
361
|
+
- !ruby/object:Gem::Version
|
362
|
+
version: 0.2.3
|
363
|
+
type: :runtime
|
364
|
+
prerelease: false
|
365
|
+
version_requirements: !ruby/object:Gem::Requirement
|
366
|
+
requirements:
|
367
|
+
- - "~>"
|
368
|
+
- !ruby/object:Gem::Version
|
369
|
+
version: '0.2'
|
370
|
+
- - ">="
|
371
|
+
- !ruby/object:Gem::Version
|
372
|
+
version: 0.2.3
|
373
|
+
description: Client for accessing the Peerplays blockchain.
|
374
|
+
email:
|
375
|
+
- peerplays-ruby@martin-studio.com
|
376
|
+
executables: []
|
377
|
+
extensions: []
|
378
|
+
extra_rdoc_files: []
|
379
|
+
files:
|
380
|
+
- ".gitignore"
|
381
|
+
- Gemfile
|
382
|
+
- Gemfile.lock
|
383
|
+
- LICENSE.txt
|
384
|
+
- README.md
|
385
|
+
- Rakefile
|
386
|
+
- lib/peerplays.rb
|
387
|
+
- lib/peerplays/api.rb
|
388
|
+
- lib/peerplays/asset_api.rb
|
389
|
+
- lib/peerplays/base_error.rb
|
390
|
+
- lib/peerplays/block_api.rb
|
391
|
+
- lib/peerplays/chain_config.rb
|
392
|
+
- lib/peerplays/crypto_api.rb
|
393
|
+
- lib/peerplays/database_api.rb
|
394
|
+
- lib/peerplays/history_api.rb
|
395
|
+
- lib/peerplays/network_broadcast_api.rb
|
396
|
+
- lib/peerplays/network_node_api.rb
|
397
|
+
- lib/peerplays/orders_api.rb
|
398
|
+
- lib/peerplays/version.rb
|
399
|
+
- lib/peerplays/wallet_api.rb
|
400
|
+
- peerplays-ruby.gemspec
|
401
|
+
homepage: https://gitlab.com/PBSA/PeerplaysIO/tools-libs/ruby-peerplays
|
402
|
+
licenses:
|
403
|
+
- MIT
|
404
|
+
metadata: {}
|
405
|
+
post_install_message:
|
406
|
+
rdoc_options: []
|
407
|
+
require_paths:
|
408
|
+
- lib
|
409
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
410
|
+
requirements:
|
411
|
+
- - ">="
|
412
|
+
- !ruby/object:Gem::Version
|
413
|
+
version: '0'
|
414
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
415
|
+
requirements:
|
416
|
+
- - ">"
|
417
|
+
- !ruby/object:Gem::Version
|
418
|
+
version: 1.3.1
|
419
|
+
requirements: []
|
420
|
+
rubyforge_project:
|
421
|
+
rubygems_version: 2.7.10
|
422
|
+
signing_key:
|
423
|
+
specification_version: 4
|
424
|
+
summary: Peerplays Ruby Client
|
425
|
+
test_files: []
|