binance_client 2.1.0 → 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 92d03cdb49a0580cae0efce1cbcaf3f908994f2959473801eccfcabb46cd8c1d
4
- data.tar.gz: 8eadce8b6bdb99dad54e1e58724c65595f79a843006e13cc0c4618ee5d62bf88
3
+ metadata.gz: d0ffbedc335b6922f76dc12d791c2e362e012408ec15d89ccbc9a601277874d2
4
+ data.tar.gz: d260ca781537671f0efa3cbefad3543f681b5d8c8616d52ceaa8f411dda02d02
5
5
  SHA512:
6
- metadata.gz: f31e20576e0c83a044f2f59a3e4a5a8bddb0dfce7eab0a73494ef101dbfce4cefee7c3404b004bd3b1d1438f1accd155d151d819d4028405d9c36c2c10a4ab11
7
- data.tar.gz: 7f24cd955d6a8e2ca3ab560b0f45900c514f12001e49e5cfcbfd206b49b24ad7a105111dbc1f673b8831f4091d01486fe6a97922ca0ce12c9dd8116cf6635c7d
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
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- binance_client (2.1.0)
4
+ binance_client (3.0.1)
5
5
  activesupport
6
6
  api_client_base (~> 1.11)
7
7
  typhoeus
data/README.md CHANGED
@@ -34,7 +34,7 @@ We provide one method per API endpoint.
34
34
  ```
35
35
  client.system_status
36
36
  client.account_snapshot
37
- client.get_all
37
+ client.coins_info
38
38
  client.book_ticker(symbol: "BTCETH")
39
39
  client.order_book_depth(symbol: "BTCUSDT", limit: 100)
40
40
  ```
@@ -5,7 +5,7 @@ module BinanceClient
5
5
  api_action :account
6
6
  api_action :system_status
7
7
  api_action :account_snapshot
8
- api_action :get_all
8
+ api_action :coins_info
9
9
  api_action :exchange_info
10
10
  api_action :book_ticker
11
11
  api_action :order_book_depth
@@ -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
@@ -3,5 +3,12 @@ module BinanceClient
3
3
 
4
4
  include Virtus.model
5
5
 
6
+ private
7
+
8
+ def memoize_results(key)
9
+ return instance_variable_get(key) if instance_variable_defined?(key)
10
+ instance_variable_set key, yield
11
+ end
12
+
6
13
  end
7
14
  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
- attr_reader :raw_hash
18
+ attr_accessor :raw_hash
19
+ attr_writer *METHODS
19
20
 
20
- def initialize(raw_hash:)
21
- @raw_hash = raw_hash
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
- raw_hash[method_name.to_s.camelcase(:lower)]
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
- attr_reader :raw_hash
30
+ attr_accessor :raw_hash
31
+ attr_writer *METHODS
31
32
 
32
- def initialize(raw_hash:)
33
- @raw_hash = raw_hash
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
- raw_hash[method_name.to_s.camelcase(:lower)]
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
- attr_reader :raw_hash
12
+ attr_accessor :raw_hash
13
+ attr_writer *METHODS
12
14
 
13
- def initialize(raw_hash:)
14
- @raw_hash = raw_hash
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
- raw_hash[method_name.to_s.camelcase(:lower)]
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
 
@@ -1,5 +1,5 @@
1
1
  module BinanceClient
2
- class GetAllRequest < AuthenticatedBaseRequest
2
+ class CoinsInfoRequest < AuthenticatedBaseRequest
3
3
  private
4
4
 
5
5
  def path
@@ -0,0 +1,11 @@
1
+ module BinanceClient
2
+ class CoinsInfoResponse < BaseResponse
3
+
4
+ def coins
5
+ @coins ||= body.map do |coin_hash|
6
+ Coin.new(raw_hash: coin_hash)
7
+ end
8
+ end
9
+
10
+ end
11
+ end
@@ -1,3 +1,3 @@
1
1
  module BinanceClient
2
- VERSION = "2.1.0"
2
+ VERSION = "3.0.1"
3
3
  end
@@ -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/get_all_request"
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/get_all_response"
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: 2.1.0
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-22 00:00:00.000000000 Z
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
@@ -1,4 +0,0 @@
1
- module BinanceClient
2
- class GetAllResponse < BaseResponse
3
- end
4
- end