binance_client 2.1.0 → 3.0.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 +4 -4
- data/CHANGELOG.md +19 -0
- data/Gemfile.lock +1 -1
- data/README.md +1 -1
- data/lib/binance_client/client.rb +1 -1
- data/lib/binance_client/factories.rb +55 -0
- data/lib/binance_client/models/base_model.rb +7 -0
- data/lib/binance_client/models/coin.rb +70 -0
- data/lib/binance_client/models/deposit.rb +15 -6
- data/lib/binance_client/models/market.rb +9 -4
- data/lib/binance_client/models/network.rb +70 -0
- data/lib/binance_client/models/rate_limit.rb +17 -5
- data/lib/binance_client/requests/{get_all_request.rb → coins_info_request.rb} +1 -1
- data/lib/binance_client/responses/coins_info_response.rb +11 -0
- data/lib/binance_client/version.rb +1 -1
- data/lib/binance_client.rb +4 -2
- metadata +6 -4
- data/lib/binance_client/responses/get_all_response.rb +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d0ffbedc335b6922f76dc12d791c2e362e012408ec15d89ccbc9a601277874d2
|
4
|
+
data.tar.gz: d260ca781537671f0efa3cbefad3543f681b5d8c8616d52ceaa8f411dda02d02
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ae418449f912f5acab8efea9cb2369d221ff25477254f973e4dc87e44b54d1a4eb9b4835cb2e926af9b725a3187a974a105d1c815dd704f4b03d78e2eb61871a
|
7
|
+
data.tar.gz: 81b69e1a4cbb64e0a22459a98909f605421a6fbf9286a94a448868cf951d4004cd468e2a08a2ab2d47843b2e18d774dd1284ac6acb242ded188182799a0629a1
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,25 @@ All notable changes to this project will be documented in this file.
|
|
4
4
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
5
5
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
6
6
|
|
7
|
+
## [3.0.1]
|
8
|
+
### Fixed
|
9
|
+
- `Coin#network_list` is initialized properly
|
10
|
+
- Return decimal for the following methods of `Network`:
|
11
|
+
- `#withdraw_fee`
|
12
|
+
- `#withdraw_integer_multiple`
|
13
|
+
- `#withdraw_max`
|
14
|
+
- `#withdraw_min`
|
15
|
+
|
16
|
+
## [3.0.0]
|
17
|
+
### Changed
|
18
|
+
- Rename `#get_all` to `#coins_info` and give access to info via the response's `#coins` method
|
19
|
+
|
20
|
+
### Fixed
|
21
|
+
- `Deposit#insert_time` returns `Time` and not an Integer of milliseconds
|
22
|
+
|
23
|
+
### Added
|
24
|
+
- Add Deposit, RateLimit factories
|
25
|
+
|
7
26
|
## [2.1.0]
|
8
27
|
### Added
|
9
28
|
- `exchange_info` endpoint
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -10,4 +10,59 @@ FactoryBot.define do
|
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
+
factory :binance_client_deposit, class: "BinanceClient::Deposit" do
|
14
|
+
sequence(:sub_account_id) { |n| n.to_s }
|
15
|
+
sequence(:address) { |n| "address#{n}" }
|
16
|
+
sequence(:address_tag) { |n| "address_tag#{n}" }
|
17
|
+
sequence(:amount) { |n| n * 10 }
|
18
|
+
sequence(:coin) { |n| "coin#{n}" }
|
19
|
+
sequence(:insert_time) { |n| Time.now }
|
20
|
+
sequence(:network) { |n| "network#{n}" }
|
21
|
+
sequence(:status) { |n| "status#{n}" }
|
22
|
+
sequence(:tx_id) { |n| "tx_id#{n}" }
|
23
|
+
sequence(:source_address) { |n| "source_address#{n}" }
|
24
|
+
sequence(:confirm_times) { |n| "#{n}/#{n}" }
|
25
|
+
end
|
26
|
+
|
27
|
+
factory :binance_client_rate_limit, class: "BinanceClient::RateLimit" do
|
28
|
+
rate_limit_type { "REQUEST_WEIGHT" }
|
29
|
+
interval { %w[SECOND MINUTE DAY].sample }
|
30
|
+
sequence(:interval_num) { |n| n }
|
31
|
+
sequence(:limit) { |n| n }
|
32
|
+
end
|
33
|
+
|
34
|
+
factory :binance_client_coin, class: "BinanceClient::Coin" do
|
35
|
+
sequence(:coin) { |n| "ASSET#{n}" }
|
36
|
+
sequence(:name) { |n| "Asset #{n}" }
|
37
|
+
free { 0.001 }
|
38
|
+
freeze { 0.001 }
|
39
|
+
ipoable { 0.002 }
|
40
|
+
ipoing { 0.003 }
|
41
|
+
locked { 0.004 }
|
42
|
+
storage { 0.005 }
|
43
|
+
withdrawing { 0.006 }
|
44
|
+
end
|
45
|
+
|
46
|
+
factory :binance_client_network, class: "BinanceClient::Network" do
|
47
|
+
address_regex { "^(bnb1)[0-9a-z]{38}$" }
|
48
|
+
coin { "BTC" }
|
49
|
+
deposit_desc { "Wallet Maintenance" }
|
50
|
+
deposit_enable { false }
|
51
|
+
is_default { false }
|
52
|
+
memo_regex { "^[0-9A-Za-z\\-_]{1,120}$" }
|
53
|
+
min_confirm { 1 }
|
54
|
+
name { "BEP2" }
|
55
|
+
network { "BNB" }
|
56
|
+
reset_address_status { false }
|
57
|
+
special_tips { "Both a MEMO is required" }
|
58
|
+
un_lock_confirm { 0 }
|
59
|
+
withdraw_desc { "Wallet Maintenance" }
|
60
|
+
withdraw_enable { false }
|
61
|
+
withdraw_fee { "0.00000220" }
|
62
|
+
withdraw_integer_multiple { "0.00000001" }
|
63
|
+
withdraw_max { "9999999999.99999999" }
|
64
|
+
withdraw_min { "0.00000440" }
|
65
|
+
same_address { true }
|
66
|
+
end
|
67
|
+
|
13
68
|
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
module BinanceClient
|
2
|
+
class Coin < BaseModel
|
3
|
+
|
4
|
+
STR_METHODS = %i[
|
5
|
+
coin
|
6
|
+
name
|
7
|
+
].freeze
|
8
|
+
|
9
|
+
DECIMAL_METHODS = %i[
|
10
|
+
free
|
11
|
+
freeze
|
12
|
+
ipoable
|
13
|
+
ipoing
|
14
|
+
locked
|
15
|
+
storage
|
16
|
+
withdrawing
|
17
|
+
].freeze
|
18
|
+
|
19
|
+
BOOL_MAP = {
|
20
|
+
deposit_all_enable: :deposit_all_enabled?,
|
21
|
+
is_legal_money: :legal_money?,
|
22
|
+
trading: :trading?,
|
23
|
+
withdraw_all_enable: :withdraw_all_enabled?,
|
24
|
+
}.freeze
|
25
|
+
|
26
|
+
METHODS = (STR_METHODS + DECIMAL_METHODS + BOOL_MAP.keys).freeze
|
27
|
+
|
28
|
+
attr_accessor :raw_hash
|
29
|
+
attr_writer *METHODS
|
30
|
+
|
31
|
+
def initialize(**kwargs)
|
32
|
+
kwargs.each do |key, value|
|
33
|
+
self.send("#{key}=", value)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
STR_METHODS.each do |method_name|
|
38
|
+
define_method method_name do
|
39
|
+
memoize_results "@#{method_name}" do
|
40
|
+
raw_hash[method_name.to_s.camelcase(:lower)]
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
DECIMAL_METHODS.each do |method_name|
|
46
|
+
define_method method_name do
|
47
|
+
memoize_results "@#{method_name}" do
|
48
|
+
raw_hash[method_name.to_s.camelcase(:lower)].to_d
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
BOOL_MAP.each do |original_method_name, alias_method_name|
|
54
|
+
define_method original_method_name do
|
55
|
+
memoize_results "@#{original_method_name}" do
|
56
|
+
raw_hash[original_method_name.to_s.camelcase(:lower)]
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
alias_method alias_method_name, original_method_name
|
61
|
+
end
|
62
|
+
|
63
|
+
def network_list
|
64
|
+
@network_list ||= raw_hash["networkList"].map do |network_hash|
|
65
|
+
Network.new(raw_hash: network_hash)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module BinanceClient
|
2
|
-
class Deposit
|
2
|
+
class Deposit < BaseModel
|
3
3
|
|
4
4
|
METHODS = %i[
|
5
5
|
sub_account_id
|
@@ -7,25 +7,34 @@ module BinanceClient
|
|
7
7
|
address_tag
|
8
8
|
amount
|
9
9
|
coin
|
10
|
-
insert_time
|
11
10
|
network
|
12
11
|
status
|
13
12
|
tx_id
|
14
13
|
source_address
|
15
14
|
confirm_times
|
15
|
+
insert_time
|
16
16
|
].freeze
|
17
17
|
|
18
|
-
|
18
|
+
attr_accessor :raw_hash
|
19
|
+
attr_writer *METHODS
|
19
20
|
|
20
|
-
def initialize(
|
21
|
-
|
21
|
+
def initialize(**kwargs)
|
22
|
+
kwargs.each do |key, value|
|
23
|
+
self.send("#{key}=", value)
|
24
|
+
end
|
22
25
|
end
|
23
26
|
|
24
27
|
METHODS.each do |method_name|
|
25
28
|
define_method method_name do
|
26
|
-
|
29
|
+
memoize_results "@#{method_name}" do
|
30
|
+
raw_hash[method_name.to_s.camelcase(:lower)]
|
31
|
+
end
|
27
32
|
end
|
28
33
|
end
|
29
34
|
|
35
|
+
def insert_time
|
36
|
+
@insert_time ||= Time.at(raw_hash["insertTime"] / 1_000)
|
37
|
+
end
|
38
|
+
|
30
39
|
end
|
31
40
|
end
|
@@ -27,15 +27,20 @@ module BinanceClient
|
|
27
27
|
is_margin_trading_allowed: :margin_trading_allowed?,
|
28
28
|
}.freeze
|
29
29
|
|
30
|
-
|
30
|
+
attr_accessor :raw_hash
|
31
|
+
attr_writer *METHODS
|
31
32
|
|
32
|
-
def initialize(
|
33
|
-
|
33
|
+
def initialize(**kwargs)
|
34
|
+
kwargs.each do |key, value|
|
35
|
+
self.send("#{key}=", value)
|
36
|
+
end
|
34
37
|
end
|
35
38
|
|
36
39
|
METHODS.each do |method_name|
|
37
40
|
define_method method_name do
|
38
|
-
|
41
|
+
memoize_results "@#{method_name}" do
|
42
|
+
raw_hash[method_name.to_s.camelcase(:lower)]
|
43
|
+
end
|
39
44
|
end
|
40
45
|
end
|
41
46
|
|
@@ -0,0 +1,70 @@
|
|
1
|
+
module BinanceClient
|
2
|
+
class Network < BaseModel
|
3
|
+
|
4
|
+
PLAIN_METHODS = %i[
|
5
|
+
address_regex
|
6
|
+
coin
|
7
|
+
deposit_desc
|
8
|
+
memo_regex
|
9
|
+
min_confirm
|
10
|
+
name
|
11
|
+
network
|
12
|
+
special_tips
|
13
|
+
un_lock_confirm
|
14
|
+
withdraw_desc
|
15
|
+
].freeze
|
16
|
+
|
17
|
+
DECIMAL_METHODS = %i[
|
18
|
+
withdraw_fee
|
19
|
+
withdraw_integer_multiple
|
20
|
+
withdraw_max
|
21
|
+
withdraw_min
|
22
|
+
].freeze
|
23
|
+
|
24
|
+
BOOL_MAP = {
|
25
|
+
deposit_enable: :deposit_enabled?,
|
26
|
+
is_default: :default?,
|
27
|
+
reset_address_status: :reset_address_status?,
|
28
|
+
withdraw_enable: :withdraw_enabled?,
|
29
|
+
same_address: :same_address?
|
30
|
+
}.freeze
|
31
|
+
|
32
|
+
METHODS = (PLAIN_METHODS + DECIMAL_METHODS + BOOL_MAP.keys).freeze
|
33
|
+
|
34
|
+
attr_accessor :raw_hash
|
35
|
+
attr_writer *METHODS
|
36
|
+
|
37
|
+
def initialize(**kwargs)
|
38
|
+
kwargs.each do |key, value|
|
39
|
+
self.send("#{key}=", value)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
PLAIN_METHODS.each do |method_name|
|
44
|
+
define_method method_name do
|
45
|
+
memoize_results "@#{method_name}" do
|
46
|
+
raw_hash[method_name.to_s.camelcase(:lower)]
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
DECIMAL_METHODS.each do |method_name|
|
52
|
+
define_method method_name do
|
53
|
+
memoize_results "@#{method_name}" do
|
54
|
+
raw_hash[method_name.to_s.camelcase(:lower)].to_d
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
BOOL_MAP.each do |original_method_name, alias_method_name|
|
60
|
+
define_method original_method_name do
|
61
|
+
memoize_results "@#{original_method_name}" do
|
62
|
+
raw_hash[original_method_name.to_s.camelcase(:lower)]
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
alias_method alias_method_name, original_method_name
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module BinanceClient
|
2
|
-
class RateLimit
|
2
|
+
class RateLimit < BaseModel
|
3
3
|
|
4
|
+
INTERVALS = %w[SECOND MINUTE DAY].freeze
|
4
5
|
METHODS = %i[
|
5
6
|
rate_limit_type
|
6
7
|
interval
|
@@ -8,15 +9,26 @@ module BinanceClient
|
|
8
9
|
limit
|
9
10
|
].freeze
|
10
11
|
|
11
|
-
|
12
|
+
attr_accessor :raw_hash
|
13
|
+
attr_writer *METHODS
|
12
14
|
|
13
|
-
def initialize(
|
14
|
-
|
15
|
+
def initialize(**kwargs)
|
16
|
+
kwargs.each do |key, value|
|
17
|
+
self.send("#{key}=", value)
|
18
|
+
end
|
15
19
|
end
|
16
20
|
|
17
21
|
METHODS.each do |method_name|
|
18
22
|
define_method method_name do
|
19
|
-
|
23
|
+
memoize_results("@#{method_name}") do
|
24
|
+
raw_hash[method_name.to_s.camelcase(:lower)]
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
INTERVALS.each do |interval|
|
30
|
+
define_method "#{interval.downcase}?" do
|
31
|
+
interval == self.interval
|
20
32
|
end
|
21
33
|
end
|
22
34
|
|
data/lib/binance_client.rb
CHANGED
@@ -19,6 +19,8 @@ require "binance_client/models/market"
|
|
19
19
|
require "binance_client/models/market_filter"
|
20
20
|
require "binance_client/models/rate_limit"
|
21
21
|
require "binance_client/models/deposit"
|
22
|
+
require "binance_client/models/network"
|
23
|
+
require "binance_client/models/coin"
|
22
24
|
|
23
25
|
require "binance_client/requests/base_request"
|
24
26
|
require "binance_client/requests/authenticated_base_request"
|
@@ -26,7 +28,7 @@ require "binance_client/responses/base_response"
|
|
26
28
|
require "binance_client/requests/system_status_request"
|
27
29
|
require "binance_client/requests/account_snapshot_request"
|
28
30
|
require "binance_client/requests/exchange_info_request"
|
29
|
-
require "binance_client/requests/
|
31
|
+
require "binance_client/requests/coins_info_request"
|
30
32
|
require "binance_client/requests/book_ticker_request"
|
31
33
|
require "binance_client/requests/order_book_depth_request"
|
32
34
|
require "binance_client/requests/sub_account_assets_request"
|
@@ -35,7 +37,7 @@ require "binance_client/requests/sub_account_deposit_history_request"
|
|
35
37
|
require "binance_client/requests/account_request"
|
36
38
|
require "binance_client/responses/system_status_response"
|
37
39
|
require "binance_client/responses/account_snapshot_response"
|
38
|
-
require "binance_client/responses/
|
40
|
+
require "binance_client/responses/coins_info_response"
|
39
41
|
require "binance_client/responses/exchange_info_response"
|
40
42
|
require "binance_client/responses/book_ticker_response"
|
41
43
|
require "binance_client/responses/order_book_depth_response"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: binance_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- AJ Villalobos
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-12-
|
11
|
+
date: 2021-12-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: api_client_base
|
@@ -119,10 +119,12 @@ files:
|
|
119
119
|
- lib/binance_client/factories.rb
|
120
120
|
- lib/binance_client/models/asset_balance.rb
|
121
121
|
- lib/binance_client/models/base_model.rb
|
122
|
+
- lib/binance_client/models/coin.rb
|
122
123
|
- lib/binance_client/models/deposit.rb
|
123
124
|
- lib/binance_client/models/deposit_address.rb
|
124
125
|
- lib/binance_client/models/market.rb
|
125
126
|
- lib/binance_client/models/market_filter.rb
|
127
|
+
- lib/binance_client/models/network.rb
|
126
128
|
- lib/binance_client/models/order_book.rb
|
127
129
|
- lib/binance_client/models/order_book_entry.rb
|
128
130
|
- lib/binance_client/models/rate_limit.rb
|
@@ -131,8 +133,8 @@ files:
|
|
131
133
|
- lib/binance_client/requests/authenticated_base_request.rb
|
132
134
|
- lib/binance_client/requests/base_request.rb
|
133
135
|
- lib/binance_client/requests/book_ticker_request.rb
|
136
|
+
- lib/binance_client/requests/coins_info_request.rb
|
134
137
|
- lib/binance_client/requests/exchange_info_request.rb
|
135
|
-
- lib/binance_client/requests/get_all_request.rb
|
136
138
|
- lib/binance_client/requests/order_book_depth_request.rb
|
137
139
|
- lib/binance_client/requests/sub_account_assets_request.rb
|
138
140
|
- lib/binance_client/requests/sub_account_deposit_address_request.rb
|
@@ -142,8 +144,8 @@ files:
|
|
142
144
|
- lib/binance_client/responses/account_snapshot_response.rb
|
143
145
|
- lib/binance_client/responses/base_response.rb
|
144
146
|
- lib/binance_client/responses/book_ticker_response.rb
|
147
|
+
- lib/binance_client/responses/coins_info_response.rb
|
145
148
|
- lib/binance_client/responses/exchange_info_response.rb
|
146
|
-
- lib/binance_client/responses/get_all_response.rb
|
147
149
|
- lib/binance_client/responses/order_book_depth_response.rb
|
148
150
|
- lib/binance_client/responses/sub_account_assets_response.rb
|
149
151
|
- lib/binance_client/responses/sub_account_deposit_address_response.rb
|