bibox 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +4 -1
- data/Gemfile.lock +7 -1
- data/README.md +2 -2
- data/bibox.gemspec +2 -0
- data/bin/console +5 -5
- data/bin/websocket +24 -7
- data/lib/bibox.rb +5 -0
- data/lib/bibox/models/contract.rb +20 -0
- data/lib/bibox/models/transfer.rb +2 -2
- data/lib/bibox/rest/client.rb +4 -0
- data/lib/bibox/rest/private/contracts/assets.rb +24 -0
- data/lib/bibox/rest/private/contracts/general.rb +22 -0
- data/lib/bibox/rest/private/contracts/orders.rb +24 -0
- data/lib/bibox/utilities.rb +6 -1
- data/lib/bibox/version.rb +1 -1
- data/lib/bibox/websocket/client.rb +36 -18
- metadata +19 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5e8cf4b3e892dc5fc64f8807f486cb890b5c46d6b3abe2110f604ebb9b0ee796
|
4
|
+
data.tar.gz: 22c23c9ef4ae49f24ef93ef9918bd278aaedb85ad617590038f188782e71c08d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9b38220351d35b3dde46f77daf13b8d030fe922e1f58b0a1353f525755c63413ca8f761201c7741216432913e7d94bdfefcdd2e6b58e73be35d20fd6a523ff03
|
7
|
+
data.tar.gz: 742ffce82b24e37ab872cbd9fd8fee74105efc8a039b619cdf5f1856fff0faa99d98928552df8430ccef07dd8541057c63aecd87d1c5fe3783eebc111a518329
|
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
bibox (0.1.
|
4
|
+
bibox (0.1.3)
|
5
5
|
eventmachine (>= 1.2.7)
|
6
6
|
faraday (>= 0.15.4)
|
7
7
|
faraday_middleware (>= 0.13.1)
|
@@ -12,6 +12,7 @@ GEM
|
|
12
12
|
specs:
|
13
13
|
addressable (2.6.0)
|
14
14
|
public_suffix (>= 2.0.2, < 4.0)
|
15
|
+
coderay (1.1.2)
|
15
16
|
crack (0.4.3)
|
16
17
|
safe_yaml (~> 1.0.0)
|
17
18
|
diff-lcs (1.3)
|
@@ -24,7 +25,11 @@ GEM
|
|
24
25
|
eventmachine (>= 0.12.0)
|
25
26
|
websocket-driver (>= 0.5.1)
|
26
27
|
hashdiff (0.3.8)
|
28
|
+
method_source (0.9.2)
|
27
29
|
multipart-post (2.0.0)
|
30
|
+
pry (0.12.2)
|
31
|
+
coderay (~> 1.1.0)
|
32
|
+
method_source (~> 0.9.0)
|
28
33
|
public_suffix (3.0.3)
|
29
34
|
rake (10.5.0)
|
30
35
|
rdoc (6.1.1)
|
@@ -57,6 +62,7 @@ PLATFORMS
|
|
57
62
|
DEPENDENCIES
|
58
63
|
bibox!
|
59
64
|
bundler (~> 1.16)
|
65
|
+
pry (~> 0.12.2)
|
60
66
|
rake (~> 10.0)
|
61
67
|
rdoc (~> 6.0)
|
62
68
|
rspec (~> 3.0)
|
data/README.md
CHANGED
@@ -56,7 +56,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
56
56
|
|
57
57
|
## Contributing
|
58
58
|
|
59
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
59
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/SebastianJ/bibox. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
60
60
|
|
61
61
|
## License
|
62
62
|
|
@@ -64,4 +64,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
|
|
64
64
|
|
65
65
|
## Code of Conduct
|
66
66
|
|
67
|
-
Everyone interacting in the Bibox project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/
|
67
|
+
Everyone interacting in the Bibox project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/SebastianJ/bibox/blob/master/CODE_OF_CONDUCT.md).
|
data/bibox.gemspec
CHANGED
data/bin/console
CHANGED
@@ -23,9 +23,9 @@ end
|
|
23
23
|
# You can add fixtures and/or initialization code here to make experimenting
|
24
24
|
# with your gem easier. You can also use a different console, if you like.
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
26
|
+
require "pry"
|
27
|
+
Pry.config.history.file = File.join(__FILE__, "../.pry_history")
|
28
|
+
Pry.start
|
29
29
|
|
30
|
-
require "irb"
|
31
|
-
IRB.start(__FILE__)
|
30
|
+
#require "irb"
|
31
|
+
#IRB.start(__FILE__)
|
data/bin/websocket
CHANGED
@@ -23,18 +23,25 @@ class WebsocketWrapper
|
|
23
23
|
|
24
24
|
def set_callbacks
|
25
25
|
# Subscription callback
|
26
|
-
self.client.callbacks[:subscribe]
|
26
|
+
self.client.callbacks[:subscribe] = -> { subscribe! }
|
27
27
|
|
28
28
|
# Received messages callbacks
|
29
|
-
self.client.callbacks[:trading_pairs]
|
30
|
-
self.client.callbacks[:order_book]
|
31
|
-
self.client.callbacks[:trades]
|
32
|
-
self.client.callbacks[:ticker]
|
33
|
-
self.client.callbacks[:klines]
|
29
|
+
self.client.callbacks[:trading_pairs] = -> (data) { trading_pairs(data) }
|
30
|
+
self.client.callbacks[:order_book] = -> (data) { order_book(data) }
|
31
|
+
self.client.callbacks[:trades] = -> (data) { trades(data) }
|
32
|
+
self.client.callbacks[:ticker] = -> (data) { ticker(data) }
|
33
|
+
self.client.callbacks[:klines] = -> (data) { klines(data) }
|
34
|
+
|
35
|
+
self.client.callbacks[:index_markets] = -> (data) { index_markets(data) }
|
36
|
+
self.client.callbacks[:contract_price_limits] = -> (data) { contract_price_limits(data) }
|
34
37
|
end
|
35
38
|
|
36
39
|
def subscribe!(pairs: ["4ETH_USDT"])
|
37
|
-
|
40
|
+
self.client.login!
|
41
|
+
self.client.subscribe_to_trading_pairs!
|
42
|
+
#self.client.subscribe_to_index_markets!
|
43
|
+
#self.client.subscribe_to_contract_price_limits!
|
44
|
+
|
38
45
|
self.client.subscribe_to_order_book!(pairs: pairs)
|
39
46
|
self.client.subscribe_to_trades!(pairs: pairs)
|
40
47
|
self.client.subscribe_to_ticker!(pairs: pairs)
|
@@ -66,6 +73,16 @@ class WebsocketWrapper
|
|
66
73
|
pp data
|
67
74
|
end
|
68
75
|
|
76
|
+
def index_markets(data)
|
77
|
+
puts "\nReceived index markets message!"
|
78
|
+
pp data
|
79
|
+
end
|
80
|
+
|
81
|
+
def contract_price_limits(data)
|
82
|
+
puts "\nReceived contract price limits message!"
|
83
|
+
pp data
|
84
|
+
end
|
85
|
+
|
69
86
|
end
|
70
87
|
|
71
88
|
WebsocketWrapper.new.run!
|
data/lib/bibox.rb
CHANGED
@@ -36,6 +36,7 @@ require "bibox/models/asset"
|
|
36
36
|
require "bibox/models/user_assets"
|
37
37
|
require "bibox/models/transfer"
|
38
38
|
require "bibox/models/bill"
|
39
|
+
require "bibox/models/contract"
|
39
40
|
|
40
41
|
require "bibox/rest/public/ticker"
|
41
42
|
require "bibox/rest/public/pairs"
|
@@ -49,6 +50,10 @@ require "bibox/rest/private/assets"
|
|
49
50
|
require "bibox/rest/private/transfers"
|
50
51
|
require "bibox/rest/private/bills"
|
51
52
|
|
53
|
+
require "bibox/rest/private/contracts/general"
|
54
|
+
require "bibox/rest/private/contracts/assets"
|
55
|
+
require "bibox/rest/private/contracts/orders"
|
56
|
+
|
52
57
|
require "bibox/rest/errors"
|
53
58
|
require "bibox/rest/client"
|
54
59
|
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Bibox
|
2
|
+
module Models
|
3
|
+
class Contract < Base
|
4
|
+
MAPPING = {
|
5
|
+
id: :integer,
|
6
|
+
pair: :string,
|
7
|
+
value: :float,
|
8
|
+
coin_symbol: :string,
|
9
|
+
|
10
|
+
offset_normal: :float,
|
11
|
+
offset_short: :float,
|
12
|
+
offset_long: :float,
|
13
|
+
normal_dx: :float,
|
14
|
+
|
15
|
+
created_at: :datetime,
|
16
|
+
updated_at: :datetime
|
17
|
+
}
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -8,8 +8,8 @@ module Bibox
|
|
8
8
|
coin_symbol: :string,
|
9
9
|
confirm_count: :string,
|
10
10
|
amount: :float,
|
11
|
-
updated_at: :
|
12
|
-
created_at: :
|
11
|
+
updated_at: :time,
|
12
|
+
created_at: :time,
|
13
13
|
url: :string,
|
14
14
|
icon_url: :string,
|
15
15
|
status: {enum: {1 => :pending, 2 => :success, 3 => :failed}},
|
data/lib/bibox/rest/client.rb
CHANGED
@@ -21,6 +21,10 @@ module Bibox
|
|
21
21
|
include ::Bibox::Rest::Private::Assets
|
22
22
|
include ::Bibox::Rest::Private::Transfers
|
23
23
|
include ::Bibox::Rest::Private::Bills
|
24
|
+
|
25
|
+
include ::Bibox::Rest::Private::Contracts::General
|
26
|
+
include ::Bibox::Rest::Private::Contracts::Assets
|
27
|
+
include ::Bibox::Rest::Private::Contracts::Orders
|
24
28
|
|
25
29
|
def configured?
|
26
30
|
!self.configuration.key.to_s.empty? && !self.configuration.secret.to_s.empty?
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Bibox
|
2
|
+
module Rest
|
3
|
+
module Private
|
4
|
+
module Contracts
|
5
|
+
module Assets
|
6
|
+
|
7
|
+
def contract_assets(coin_symbol: "USDT", options: {})
|
8
|
+
payload = [
|
9
|
+
{
|
10
|
+
cmd: "query/assets",
|
11
|
+
body: {
|
12
|
+
coin_symbol: coin_symbol
|
13
|
+
}
|
14
|
+
}
|
15
|
+
]
|
16
|
+
|
17
|
+
response = parse(post("/cquery", data: payload, options: options))&.fetch("result", [])&.first&.fetch("result", [])
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Bibox
|
2
|
+
module Rest
|
3
|
+
module Private
|
4
|
+
module Contracts
|
5
|
+
module General
|
6
|
+
def contract_values(options: {})
|
7
|
+
payload = [
|
8
|
+
{
|
9
|
+
cmd: "query/contractValue",
|
10
|
+
body: {}
|
11
|
+
}
|
12
|
+
]
|
13
|
+
|
14
|
+
response = post("/cquery", data: payload, options: options)#&.fetch("result", [])&.first&.fetch("result", [])
|
15
|
+
|
16
|
+
raise response.inspect
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Bibox
|
2
|
+
module Rest
|
3
|
+
module Private
|
4
|
+
module Contracts
|
5
|
+
module Orders
|
6
|
+
|
7
|
+
def contract_orders(pair:, options: {})
|
8
|
+
payload = [
|
9
|
+
{
|
10
|
+
cmd: "query/order",
|
11
|
+
body: {
|
12
|
+
pair: pair
|
13
|
+
}
|
14
|
+
}
|
15
|
+
]
|
16
|
+
|
17
|
+
response = parse(post("/cquery", data: payload, options: options))&.fetch("result", [])&.first&.fetch("result", [])
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/bibox/utilities.rb
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
module Bibox
|
2
2
|
class Utilities
|
3
3
|
|
4
|
-
class << self
|
4
|
+
class << self
|
5
|
+
|
6
|
+
def decode_and_inflate(data)
|
7
|
+
Zlib::GzipReader.new(StringIO.new(Base64.decode64(data))).read
|
8
|
+
end
|
9
|
+
|
5
10
|
def convert_value(value, type, use_ms_for_time: true)
|
6
11
|
if type.is_a?(Symbol)
|
7
12
|
return case type
|
data/lib/bibox/version.rb
CHANGED
@@ -10,21 +10,27 @@ module Bibox
|
|
10
10
|
self.keepalive = options.fetch(:keepalive, false)
|
11
11
|
|
12
12
|
self.matchers = {
|
13
|
-
trading_pairs:
|
14
|
-
order_book:
|
15
|
-
trades:
|
16
|
-
ticker:
|
17
|
-
klines:
|
13
|
+
trading_pairs: /\d?[A-Z]+_[A-Z]+_market/,
|
14
|
+
order_book: /\d?[A-Z]+_[A-Z]+_depth$/,
|
15
|
+
trades: /\d?[A-Z]+_[A-Z]+_deals$/,
|
16
|
+
ticker: /\d?[A-Z]+_[A-Z]+_ticker$/,
|
17
|
+
klines: /\d?[A-Z]+_[A-Z]+_kline_(?<period>.*)$/,
|
18
|
+
|
19
|
+
index_markets: /\d?[A-Z]+_[A-Z]+_indexMarket/,
|
20
|
+
contract_price_limits: /\d?[A-Z]+_[A-Z]+_contractPriceLimit$/,
|
18
21
|
}
|
19
22
|
|
20
23
|
self.callbacks = {
|
21
|
-
subscribe:
|
22
|
-
message:
|
23
|
-
trading_pairs:
|
24
|
-
order_book:
|
25
|
-
trades:
|
26
|
-
ticker:
|
27
|
-
klines:
|
24
|
+
subscribe: -> { subscribe! },
|
25
|
+
message: -> (data) { message(data) },
|
26
|
+
trading_pairs: -> (data) { nil },
|
27
|
+
order_book: -> (data) { nil },
|
28
|
+
trades: -> (data) { nil },
|
29
|
+
ticker: -> (data) { nil },
|
30
|
+
klines: -> (data) { nil },
|
31
|
+
|
32
|
+
index_markets: -> (data) { nil },
|
33
|
+
contract_price_limits: -> (data) { nil },
|
28
34
|
}
|
29
35
|
end
|
30
36
|
|
@@ -56,10 +62,22 @@ module Bibox
|
|
56
62
|
self.socket.onerror = method(:on_error)
|
57
63
|
end
|
58
64
|
|
65
|
+
def login!
|
66
|
+
subscribe_to! channel_name("ALL_ALL_login")
|
67
|
+
end
|
68
|
+
|
59
69
|
def subscribe_to_trading_pairs!
|
60
70
|
subscribe_to! channel_name("ALL_ALL_market")
|
61
71
|
end
|
62
72
|
|
73
|
+
def subscribe_to_index_markets!
|
74
|
+
subscribe_to! channel_name("ALL_ALL_indexMarket")
|
75
|
+
end
|
76
|
+
|
77
|
+
def subscribe_to_contract_price_limits!
|
78
|
+
subscribe_to! channel_name("ALL_ALL_contractPriceLimit")
|
79
|
+
end
|
80
|
+
|
63
81
|
def subscribe_to_order_book!(pairs: [])
|
64
82
|
pairs&.each { |pair| subscribe_to! channel_name("#{pair}_depth") }
|
65
83
|
end
|
@@ -105,6 +123,10 @@ module Bibox
|
|
105
123
|
period = channel.match(self.matchers[:klines])&.[](:period)
|
106
124
|
data.merge!("period" => period) if !period.to_s.empty?
|
107
125
|
self.callbacks[:klines].call(data)
|
126
|
+
when self.matchers[:index_markets]
|
127
|
+
self.callbacks[:index_markets].call(data)
|
128
|
+
when self.matchers[:contract_price_limits]
|
129
|
+
self.callbacks[:contract_price_limits].call(data)
|
108
130
|
end
|
109
131
|
end
|
110
132
|
|
@@ -116,10 +138,6 @@ module Bibox
|
|
116
138
|
return data
|
117
139
|
end
|
118
140
|
|
119
|
-
def decode_and_inflate(data)
|
120
|
-
Zlib::GzipReader.new(StringIO.new(Base64.decode64(data))).read
|
121
|
-
end
|
122
|
-
|
123
141
|
def send_pong(timestamp)
|
124
142
|
self.socket.send({pong: timestamp}.to_json)
|
125
143
|
end
|
@@ -130,7 +148,7 @@ module Bibox
|
|
130
148
|
|
131
149
|
def on_message(event)
|
132
150
|
parsed = parse(event.data)
|
133
|
-
|
151
|
+
|
134
152
|
if parsed
|
135
153
|
if parsed.is_a?(Hash)
|
136
154
|
send_pong(parsed["ping"]) unless parsed.fetch("ping", nil).to_s.empty?
|
@@ -141,7 +159,7 @@ module Bibox
|
|
141
159
|
is_binary = parsed.fetch("binary", nil)&.eql?("1")
|
142
160
|
|
143
161
|
if is_binary && !parsed.fetch("data", nil).to_s.empty?
|
144
|
-
parsed["data"] = parse(decode_and_inflate(parsed["data"]))
|
162
|
+
parsed["data"] = parse(Bibox::Utilities.decode_and_inflate(parsed["data"]))
|
145
163
|
end
|
146
164
|
|
147
165
|
self.callbacks[:message].call(parsed)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bibox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sebastian Johnsson
|
@@ -150,6 +150,20 @@ dependencies:
|
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '3.1'
|
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.12.2
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: 0.12.2
|
153
167
|
description: Ruby REST + Websocket clients for crypto currency exchange Bibox's API
|
154
168
|
email:
|
155
169
|
- sebastian.johnsson@gmail.com
|
@@ -182,6 +196,7 @@ files:
|
|
182
196
|
- lib/bibox/models/asset.rb
|
183
197
|
- lib/bibox/models/base.rb
|
184
198
|
- lib/bibox/models/bill.rb
|
199
|
+
- lib/bibox/models/contract.rb
|
185
200
|
- lib/bibox/models/ohlcv.rb
|
186
201
|
- lib/bibox/models/order.rb
|
187
202
|
- lib/bibox/models/order_book.rb
|
@@ -194,6 +209,9 @@ files:
|
|
194
209
|
- lib/bibox/rest/errors.rb
|
195
210
|
- lib/bibox/rest/private/assets.rb
|
196
211
|
- lib/bibox/rest/private/bills.rb
|
212
|
+
- lib/bibox/rest/private/contracts/assets.rb
|
213
|
+
- lib/bibox/rest/private/contracts/general.rb
|
214
|
+
- lib/bibox/rest/private/contracts/orders.rb
|
197
215
|
- lib/bibox/rest/private/order_book.rb
|
198
216
|
- lib/bibox/rest/private/orders.rb
|
199
217
|
- lib/bibox/rest/private/transfers.rb
|