peerplays-ruby 1.0.0.pre.1
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|