binance-ruby 0.1.9 → 0.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 2fa97c211796ec21d0913bd6abdda560746f12ee
4
- data.tar.gz: 5baaab69416897b39b2cf4a7f8fbb81a77aa243b
2
+ SHA256:
3
+ metadata.gz: 9573431110b2ce6731230f3660f9023dbbea1064bff0c508072a4dc059c90d06
4
+ data.tar.gz: 0664dcff66ef95d5bdf96f8feb37d2f47fe00fc606d166df3c4846a63cee64b1
5
5
  SHA512:
6
- metadata.gz: 27441435714dc55c72d1e5038721e7724a0fbda2bf1daf2bd866d8326ec0695cbc8ff11e5bab9774e34101e54fb9916d74202a5566ef7ddc6c6dd2045998b1eb
7
- data.tar.gz: f0a0634dd09c3588b7ae52eac618a25bddf1be3b6d0506991a3d6e62f5ddeda259a16d17e0a503155e6dc3f68cb014bed4236e1f3426c00b8c795c7ddf0eb0eb
6
+ metadata.gz: 4da7aa59ff6987dff9690848fe48df6774370e194cc10ac1a33692b18dfe9a00c7e39ccda67d13c565c6fd5ae1f15b8f22e9c45e0c4e47be92e9a15740c98fce
7
+ data.tar.gz: a9ac599985d66f28656e11b609c50888ecaf93f9450f3cfddc33a6b6ba37913e650f9f98573db4b4e9bd9a50fae2c5c37155ad634c4d871ca62ab27fb7ed0af2
@@ -1,12 +1,13 @@
1
- require 'active_support/core_ext/string'
2
- require 'awrence'
3
- require 'httparty'
1
+ require "active_support/core_ext/string"
2
+ require "awrence"
3
+ require "httparty"
4
4
 
5
- require 'binance/api'
6
- require 'binance/api/account'
7
- require 'binance/api/configuration'
8
- require 'binance/api/data_stream'
9
- require 'binance/api/error'
10
- require 'binance/api/order'
11
- require 'binance/api/request'
5
+ require "binance/api"
6
+ require "binance/api/account"
7
+ require "binance/api/configuration"
8
+ require "binance/api/data_stream"
9
+ require "binance/api/error"
10
+ require "binance/api/margin/order"
11
+ require "binance/api/order"
12
+ require "binance/api/request"
12
13
  require "binance/api/version"
@@ -2,50 +2,50 @@ module Binance
2
2
  module Api
3
3
  class << self
4
4
  # Valid limits:[5, 10, 20, 50, 100, 500, 1000]
5
- def candlesticks!(end_time: nil, interval: nil, limit: 500, start_time: nil, symbol: nil)
6
- raise Error.new(message: 'interval is required') unless interval
7
- raise Error.new(message: 'symbol is required') unless symbol
8
- params = { endTime: end_time, interval: interval, limit: limit, startTime: start_time, symbol: symbol }
9
- Request.send!(api_key_type: :read_info, path: '/api/v1/klines', params: params)
5
+ def candlesticks!(endTime: nil, interval: nil, limit: 500, startTime: nil, symbol: nil)
6
+ raise Error.new(message: "interval is required") unless interval
7
+ raise Error.new(message: "symbol is required") unless symbol
8
+ params = { endTime: endTime, interval: interval, limit: limit, startTime: startTime, symbol: symbol }
9
+ Request.send!(api_key_type: :read_info, path: "/api/v1/klines", params: params)
10
10
  end
11
11
 
12
- def compressed_aggregate_trades!(end_time: nil, from_id: nil, limit: 500, start_time: nil, symbol: nil)
12
+ def compressed_aggregate_trades!(endTime: nil, fromId: nil, limit: 500, startTime: nil, symbol: nil)
13
13
  raise Error.new(message: "symbol is required") unless symbol
14
14
  params = {
15
- endTime: end_time, fromId: from_id, limit: limit, startTime: start_time, symbol: symbol
15
+ endTime: endTime, fromId: fromId, limit: limit, startTime: startTime, symbol: symbol,
16
16
  }.delete_if { |key, value| value.nil? }
17
- Request.send!(api_key_type: :read_info, path: '/api/v1/aggTrades', params: params)
17
+ Request.send!(api_key_type: :read_info, path: "/api/v1/aggTrades", params: params)
18
18
  end
19
19
 
20
20
  def depth!(symbol: nil, limit: 100)
21
21
  raise Error.new(message: "symbol is required") unless symbol
22
22
  params = { limit: limit, symbol: symbol }
23
- Request.send!(api_key_type: :read_info, path: '/api/v1/depth', params: params)
23
+ Request.send!(api_key_type: :read_info, path: "/api/v1/depth", params: params)
24
24
  end
25
25
 
26
26
  def exchange_info!
27
- Request.send!(api_key_type: :read_info, path: '/api/v1/exchangeInfo')
27
+ Request.send!(api_key_type: :read_info, path: "/api/v1/exchangeInfo")
28
28
  end
29
29
 
30
- def historical_trades!(symbol: nil, limit: 500, from_id: nil)
30
+ def historical_trades!(symbol: nil, limit: 500, fromId: nil)
31
31
  raise Error.new(message: "symbol is required") unless symbol
32
- params = { fromId: from_id, limit: limit, symbol: symbol }
33
- Request.send!(api_key_type: :read_info, path: '/api/v1/historicalTrades', params: params, security_type: :market_data)
32
+ params = { fromId: fromId, limit: limit, symbol: symbol }
33
+ Request.send!(api_key_type: :read_info, path: "/api/v1/historicalTrades", params: params, security_type: :market_data)
34
34
  end
35
35
 
36
- def info!(recv_window: nil)
36
+ def info!(recvWindow: nil)
37
37
  timestamp = Configuration.timestamp
38
- params = { recvWindow: recv_window, timestamp: timestamp }.delete_if { |key, value| value.nil? }
39
- Request.send!(api_key_type: :read_info, path: '/api/v3/account', params: params, security_type: :user_data)
38
+ params = { recvWindow: recvWindow, timestamp: timestamp }.delete_if { |key, value| value.nil? }
39
+ Request.send!(api_key_type: :read_info, path: "/api/v3/account", params: params, security_type: :user_data)
40
40
  end
41
41
 
42
42
  def ping!
43
- Request.send!(path: '/api/v1/ping')
43
+ Request.send!(path: "/api/v1/ping")
44
44
  end
45
45
 
46
46
  def ticker!(symbol: nil, type: nil)
47
47
  ticker_type = type&.to_sym
48
- error_message = "type must be one of: #{ticker_types.join(', ')}. #{type} was provided."
48
+ error_message = "type must be one of: #{ticker_types.join(", ")}. #{type} was provided."
49
49
  raise Error.new(message: error_message) unless ticker_types.include? ticker_type
50
50
  path = ticker_path(type: ticker_type)
51
51
  params = symbol ? { symbol: symbol } : {}
@@ -53,13 +53,13 @@ module Binance
53
53
  end
54
54
 
55
55
  def time!
56
- Request.send!(path: '/api/v1/time')
56
+ Request.send!(path: "/api/v1/time")
57
57
  end
58
58
 
59
59
  def trades!(symbol: nil, limit: 500)
60
60
  raise Error.new(message: "symbol is required") unless symbol
61
61
  params = { limit: limit, symbol: symbol }
62
- Request.send!(api_key_type: :read_info, path: '/api/v1/trades', params: params)
62
+ Request.send!(api_key_type: :read_info, path: "/api/v1/trades", params: params)
63
63
  end
64
64
 
65
65
  private
@@ -67,14 +67,14 @@ module Binance
67
67
  def ticker_path(type:)
68
68
  case type
69
69
  when :daily
70
- '/api/v1/ticker/24hr'
71
- when :price, :book_ticker
70
+ "/api/v1/ticker/24hr"
71
+ when :price, :bookTicker, :avgPrice
72
72
  "/api/v3/ticker/#{type.to_s.camelize(:lower)}"
73
73
  end
74
74
  end
75
75
 
76
76
  def ticker_types
77
- [:daily, :price, :book_ticker].freeze
77
+ [:daily, :price, :bookTicker].freeze
78
78
  end
79
79
  end
80
80
  end
@@ -2,19 +2,27 @@ module Binance
2
2
  module Api
3
3
  class Account
4
4
  class << self
5
- def info!(recv_window: 5000)
5
+ def fees!(recvWindow: 5000)
6
6
  timestamp = Configuration.timestamp
7
- params = { recvWindow: recv_window, timestamp: timestamp }
7
+ params = { recvWindow: recvWindow, timestamp: timestamp }
8
+ Request.send!(api_key_type: :read_info, path: "/wapi/v3/assetDetail.html",
9
+ params: params.delete_if { |key, value| value.nil? },
10
+ security_type: :user_data)
11
+ end
12
+
13
+ def info!(recvWindow: 5000)
14
+ timestamp = Configuration.timestamp
15
+ params = { recvWindow: recvWindow, timestamp: timestamp }
8
16
  Request.send!(api_key_type: :read_info, path: "/api/v3/account",
9
17
  params: params.delete_if { |key, value| value.nil? },
10
18
  security_type: :user_data)
11
19
  end
12
20
 
13
- def trades!(from_id: nil, limit: 500, recv_window: 5000, symbol: nil)
21
+ def trades!(fromId: nil, limit: 500, recvWindow: 5000, symbol: nil)
14
22
  raise Error.new(message: "max limit is 500") unless limit <= 500
15
23
  raise Error.new(message: "symbol is required") if symbol.nil?
16
24
  timestamp = Configuration.timestamp
17
- params = { fromId: from_id, limit: limit, recvWindow: recv_window, symbol: symbol, timestamp: timestamp }
25
+ params = { fromId: fromId, limit: limit, recvWindow: recvWindow, symbol: symbol, timestamp: timestamp }
18
26
  Request.send!(api_key_type: :read_info, path: "/api/v3/myTrades",
19
27
  params: params.delete_if { |key, value| value.nil? },
20
28
  security_type: :user_data)
@@ -1,45 +1,60 @@
1
- require 'openssl'
2
- require 'base64'
1
+ require "openssl"
2
+ require "base64"
3
3
 
4
4
  module Binance
5
5
  module Api
6
6
  class Configuration
7
7
  class << self
8
- attr_writer :api_key, :read_info_api_key, :trading_api_key, :withdrawals_api_key
9
- attr_writer :secret_key
10
-
8
+ attr_writer :api_key, :locale, :read_info_api_key, :secret_key,
9
+ :trading_api_key, :withdrawals_api_key
10
+
11
11
  def api_key(type: nil)
12
12
  raise Error.new(message: "invalid security_type type: #{type}.") unless type.nil? || api_key_types.include?(type)
13
13
  instance_api_key(type: type) || ENV["BINANCE_#{type.to_s.humanize.upcase}_API_KEY"] ||
14
- instance_api_key || ENV["BINANCE_API_KEY"]
14
+ instance_api_key || ENV["BINANCE_API_KEY"]
15
+ end
16
+
17
+ def tld
18
+ tld = ENV["BINANCE_TLD"]&.downcase&.to_sym || :com
19
+ validate_tld!(tld)
20
+ tld
15
21
  end
16
-
22
+
17
23
  def secret_key
18
- instance_variable_get("@secret_key") || ENV['BINANCE_SECRET_KEY']
24
+ instance_variable_get("@secret_key") || ENV["BINANCE_SECRET_KEY"]
19
25
  end
20
26
 
21
27
  def signed_request_signature(payload:)
22
28
  raise Error.new(message: "environment variable 'BINANCE_SECRET_KEY' is required " \
23
- "for signed requests.") unless secret_key
29
+ "for signed requests.") unless secret_key
24
30
  digest = OpenSSL::Digest::SHA256.new
25
31
  OpenSSL::HMAC.hexdigest(digest, secret_key, payload)
26
32
  end
27
33
 
28
34
  def timestamp
29
- Time.now.utc.strftime('%s%3N')
35
+ Time.now.utc.strftime("%s%3N")
36
+ end
37
+
38
+ def validate_tld!(tld)
39
+ error_message = "Invalid tld (top-level-domain): #{tld}. Use one of: #{allowed_tlds.join(", ")}."
40
+ raise Error.new(message: error_message) unless allowed_tlds.include?(tld&.to_sym)
30
41
  end
31
42
 
32
43
  private
33
44
 
45
+ def allowed_tlds
46
+ [:com, :us]
47
+ end
48
+
34
49
  def api_key_types
35
50
  [:none, :read_info, :trading, :withdrawals].freeze
36
51
  end
37
52
 
38
53
  def instance_api_key(type: nil)
39
- var = "#{type.to_s.downcase}_api_key".sub(/^\_/, '')
40
- instance_variable_get('@' + var)
54
+ var = "#{type.to_s.downcase}_api_key".sub(/^\_/, "")
55
+ instance_variable_get("@" + var)
41
56
  end
42
- end
57
+ end
43
58
  end
44
59
  end
45
60
  end
@@ -0,0 +1,54 @@
1
+ module Binance
2
+ module Api
3
+ module Margin
4
+ class Order
5
+ class << self
6
+ def create!(symbol: nil, isIsolated: false, side: nil, type: nil, quantity: nil,
7
+ quoteOrderQty: nil, price: nil, stopPrice: nil, newClientOrderId: nil,
8
+ icebergQty: nil, newOrderRespType: nil, sideEffectType: nil, timeInForce: nil,
9
+ recvWindow: nil)
10
+ timestamp = Configuration.timestamp
11
+ params = {
12
+ symbol: symbol, isIsolated: isIsolated, side: side, type: type,
13
+ quantity: quantity, quoteOrderQty: quoteOrderQty, price: price,
14
+ stopPrice: stopPrice, newClientOrderId: newClientOrderId, icebergQty: icebergQty,
15
+ newOrderRespType: newOrderRespType, sideEffectType: sideEffectType,
16
+ timeInForce: timeInForce, recvWindow: recvWindow, timestamp: timestamp,
17
+ }.delete_if { |_, value| value.nil? }
18
+ ensure_required_create_keys!(params: params)
19
+ path = "/sapi/v1/margin/order"
20
+ Request.send!(api_key_type: :trading, method: :post, path: path,
21
+ params: params, security_type: :trade, tld: Configuration.tld)
22
+ end
23
+
24
+ private
25
+
26
+ def additional_required_create_keys(type:)
27
+ case type
28
+ when :limit
29
+ [:price, :timeInForce].freeze
30
+ when :stop_loss, :take_profit
31
+ [:stopPrice].freeze
32
+ when :stop_loss_limit, :take_profit_limit
33
+ [:price, :stopPrice, :timeInForce].freeze
34
+ when :limit_maker
35
+ [:price].freeze
36
+ else
37
+ [].freeze
38
+ end
39
+ end
40
+
41
+ def ensure_required_create_keys!(params:)
42
+ keys = required_create_keys.dup.concat(additional_required_create_keys(type: params[:type]))
43
+ missing_keys = keys.select { |key| params[key].nil? }
44
+ raise Error.new(message: "required keys are missing: #{missing_keys.join(", ")}") unless missing_keys.empty?
45
+ end
46
+
47
+ def required_create_keys
48
+ [:symbol, :side, :type, :timestamp].freeze
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -2,69 +2,63 @@ module Binance
2
2
  module Api
3
3
  class Order
4
4
  class << self
5
- def all!(limit: 500, order_id: nil, recv_window: 5000, symbol: nil)
5
+ def all!(limit: 500, orderId: nil, recvWindow: 5000, symbol: nil)
6
6
  raise Error.new(message: "max limit is 500") unless limit <= 500
7
7
  raise Error.new(message: "symbol is required") if symbol.nil?
8
8
  timestamp = Configuration.timestamp
9
- params = { limit: limit, orderId: order_id, recvWindow: recv_window, symbol: symbol, timestamp: timestamp }
9
+ params = { limit: limit, orderId: orderId, recvWindow: recvWindow, symbol: symbol, timestamp: timestamp }
10
10
  Request.send!(api_key_type: :read_info, path: "/api/v3/allOrders",
11
11
  params: params.delete_if { |key, value| value.nil? },
12
- security_type: :user_data)
12
+ security_type: :user_data, tld: Configuration.tld)
13
13
  end
14
14
 
15
15
  # Be careful when accessing without a symbol!
16
- def all_open!(recv_window: 5000, symbol: nil)
16
+ def all_open!(recvWindow: 5000, symbol: nil)
17
17
  timestamp = Configuration.timestamp
18
- params = { recvWindow: recv_window, symbol: symbol, timestamp: timestamp }
19
- Request.send!(api_key_type: :read_info, path: '/api/v3/openOrders',
20
- params: params, security_type: :user_data)
18
+ params = { recvWindow: recvWindow, symbol: symbol, timestamp: timestamp }
19
+ Request.send!(api_key_type: :read_info, path: "/api/v3/openOrders",
20
+ params: params, security_type: :user_data, tld: Configuration.tld)
21
21
  end
22
22
 
23
- def cancel!(order_id: nil, original_client_order_id: nil, new_client_order_id: nil, recv_window: nil, symbol: nil)
23
+ def cancel!(orderId: nil, originalClientOrderId: nil, newClientOrderId: nil, recvWindow: nil, symbol: nil)
24
24
  raise Error.new(message: "symbol is required") if symbol.nil?
25
- raise Error.new(message: "either order_id or original_client_order_id " \
26
- "is required") if order_id.nil? && original_client_order_id.nil?
25
+ raise Error.new(message: "either orderid or originalclientorderid " \
26
+ "is required") if orderId.nil? && originalClientOrderId.nil?
27
27
  timestamp = Configuration.timestamp
28
- params = { orderId: order_id, origClientOrderId: original_client_order_id,
29
- newClientOrderId: new_client_order_id, recvWindow: recv_window,
28
+ params = { orderId: orderId, origClientOrderId: originalClientOrderId,
29
+ newClientOrderId: newClientOrderId, recvWindow: recvWindow,
30
30
  symbol: symbol, timestamp: timestamp }.delete_if { |key, value| value.nil? }
31
31
  Request.send!(api_key_type: :trading, method: :delete, path: "/api/v3/order",
32
- params: params, security_type: :trade)
32
+ params: params, security_type: :trade, tld: Configuration.tld)
33
33
  end
34
34
 
35
- def create!(iceberg_quantity: nil, new_client_order_id: nil, new_order_response_type: nil,
36
- price: nil, quantity: nil, recv_window: nil, stop_price: nil, symbol: nil,
37
- side: nil, type: nil, time_in_force: nil, test: false)
35
+ def create!(icebergQuantity: nil, newClientOrderId: nil, newOrderResponseType: nil,
36
+ price: nil, quantity: nil, recvWindow: nil, stopPrice: nil, symbol: nil,
37
+ side: nil, type: nil, timeInForce: nil, test: false)
38
38
  timestamp = Configuration.timestamp
39
- ensure_required_create_keys!(params: {
40
- iceberg_quantity: iceberg_quantity, new_client_order_id: new_client_order_id,
41
- new_order_response_type: new_order_response_type, price: price,
42
- quantity: quantity, recv_window: recv_window, stop_price: stop_price,
43
- symbol: symbol, side: side, type: type, time_in_force: time_in_force,
44
- timestamp: timestamp
45
- })
46
- params = {
47
- icebergQty: iceberg_quantity, newClientOrderId: new_client_order_id,
48
- newOrderRespType: new_order_response_type, price: price, quantity: quantity,
49
- recvWindow: recv_window, stopPrice: stop_price, symbol: symbol, side: side,
50
- type: type, timeInForce: time_in_force, timestamp: timestamp
39
+ params = {
40
+ icebergQty: icebergQuantity, newClientOrderId: newClientOrderId,
41
+ newOrderRespType: newOrderResponseType, price: price, quantity: quantity,
42
+ recvWindow: recvWindow, stopPrice: stopPrice, symbol: symbol, side: side,
43
+ type: type, timeInForce: timeInForce, timestamp: timestamp,
51
44
  }.delete_if { |key, value| value.nil? }
52
- path = "/api/v3/order#{'/test' if test}"
45
+ ensure_required_create_keys!(params: params)
46
+ path = "/api/v3/order#{"/test" if test}"
53
47
  Request.send!(api_key_type: :trading, method: :post, path: path,
54
- params: params, security_type: :trade)
48
+ params: params, security_type: :trade, tld: Configuration.tld)
55
49
  end
56
50
 
57
- def status!(order_id: nil, original_client_order_id: nil, recv_window: nil, symbol: nil)
51
+ def status!(orderId: nil, originalClientOrderId: nil, recvWindow: nil, symbol: nil)
58
52
  raise Error.new(message: "symbol is required") if symbol.nil?
59
- raise Error.new(message: "either order_id or original_client_order_id " \
60
- "is required") if order_id.nil? && original_client_order_id.nil?
53
+ raise Error.new(message: "either orderid or originalclientorderid " \
54
+ "is required") if orderId.nil? && originalClientOrderId.nil?
61
55
  timestamp = Configuration.timestamp
62
56
  params = {
63
- orderId: order_id, origClientOrderId: original_client_order_id, recvWindow: recv_window,
64
- symbol: symbol, timestamp: timestamp
57
+ orderId: orderId, origClientOrderId: originalClientOrderId, recvWindow: recvWindow,
58
+ symbol: symbol, timestamp: timestamp,
65
59
  }.delete_if { |key, value| value.nil? }
66
60
  Request.send!(api_key_type: :trading, path: "/api/v3/order",
67
- params: params, security_type: :user_data)
61
+ params: params, security_type: :user_data, tld: Configuration.tld)
68
62
  end
69
63
 
70
64
  private
@@ -72,11 +66,11 @@ module Binance
72
66
  def additional_required_create_keys(type:)
73
67
  case type
74
68
  when :limit
75
- [:price, :time_in_force].freeze
69
+ [:price, :timeInForce].freeze
76
70
  when :stop_loss, :take_profit
77
- [:stop_price].freeze
71
+ [:stopPrice].freeze
78
72
  when :stop_loss_limit, :take_profit_limit
79
- [:price, :stop_price, :time_in_force].freeze
73
+ [:price, :stopPrice, :timeInForce].freeze
80
74
  when :limit_maker
81
75
  [:price].freeze
82
76
  else
@@ -87,7 +81,7 @@ module Binance
87
81
  def ensure_required_create_keys!(params:)
88
82
  keys = required_create_keys.dup.concat(additional_required_create_keys(type: params[:type]))
89
83
  missing_keys = keys.select { |key| params[key].nil? }
90
- raise Error.new(message: "required keys are missing: #{missing_keys.join(', ')}") unless missing_keys.empty?
84
+ raise Error.new(message: "required keys are missing: #{missing_keys.join(", ")}") unless missing_keys.empty?
91
85
  end
92
86
 
93
87
  def required_create_keys
@@ -2,16 +2,15 @@ module Binance
2
2
  module Api
3
3
  class Request
4
4
  include HTTParty
5
-
6
- base_uri 'https://api.binance.com'
7
-
8
5
  class << self
9
- def send!(api_key_type: :none, headers: {}, method: :get, path: '/', params: {}, security_type: :none)
6
+ def send!(api_key_type: :none, headers: {}, method: :get, path: "/", params: {}, security_type: :none, tld: :com)
7
+ Configuration.validate_tld!(tld)
8
+ self.base_uri "https://api.binance.#{tld}"
9
+
10
10
  raise Error.new(message: "invalid security type #{security_type}") unless security_types.include?(security_type)
11
11
  all_headers = default_headers(api_key_type: api_key_type, security_type: security_type)
12
12
  params.delete_if { |k, v| v.nil? }
13
- params.merge!(signature: signed_request_signature(params: params)) \
14
- if [:trade, :user_data].include?(security_type)
13
+ params.merge!(signature: signed_request_signature(params: params)) if [:trade, :user_data].include?(security_type)
15
14
  # send() is insecure so don't use it.
16
15
  case method
17
16
  when :get
@@ -25,15 +24,15 @@ module Binance
25
24
  else
26
25
  raise Error.new(message: "invalid http method used: #{method}")
27
26
  end
28
- process!(response: response || '{}')
27
+ process!(response: response || "{}")
29
28
  end
30
29
 
31
30
  private
32
31
 
33
32
  def default_headers(api_key_type:, security_type:)
34
33
  headers = {}
35
- headers['Content-Type'] = 'application/json; charset=utf-8'
36
- headers['X-MBX-APIKEY'] = Configuration.api_key(type: api_key_type) unless security_type == :none
34
+ headers["Content-Type"] = "application/json; charset=utf-8"
35
+ headers["X-MBX-APIKEY"] = Configuration.api_key(type: api_key_type) unless security_type == :none
37
36
  headers
38
37
  end
39
38
 
@@ -48,7 +47,7 @@ module Binance
48
47
  end
49
48
 
50
49
  def signed_request_signature(params:)
51
- payload = params.map { |key, value| "#{key}=#{value}" }.join('&')
50
+ payload = params.map { |key, value| "#{key}=#{value}" }.join("&")
52
51
  Configuration.signed_request_signature(payload: payload)
53
52
  end
54
53
  end
@@ -1,5 +1,5 @@
1
1
  module Binance
2
2
  module Api
3
- VERSION = "0.1.9"
3
+ VERSION = "0.6"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: binance-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: '0.6'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jake Peterson
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-02-05 00:00:00.000000000 Z
11
+ date: 2021-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: codecov
@@ -95,19 +95,47 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '12.0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: activesupport
98
+ name: pry
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '5.1'
104
- type: :runtime
103
+ version: 0.11.3
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 0.11.3
111
+ - !ruby/object:Gem::Dependency
112
+ name: simplecov
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 0.20.0
118
+ type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
122
  - - "~>"
109
123
  - !ruby/object:Gem::Version
110
- version: '5.1'
124
+ version: 0.20.0
125
+ - !ruby/object:Gem::Dependency
126
+ name: activesupport
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: 5.1.0
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: 5.1.0
111
139
  - !ruby/object:Gem::Dependency
112
140
  name: awrence
113
141
  requirement: !ruby/object:Gem::Requirement
@@ -149,6 +177,7 @@ files:
149
177
  - lib/binance/api/configuration.rb
150
178
  - lib/binance/api/data_stream.rb
151
179
  - lib/binance/api/error.rb
180
+ - lib/binance/api/margin/order.rb
152
181
  - lib/binance/api/order.rb
153
182
  - lib/binance/api/request.rb
154
183
  - lib/binance/api/version.rb
@@ -157,7 +186,7 @@ licenses:
157
186
  - MIT
158
187
  metadata:
159
188
  allowed_push_host: https://rubygems.org
160
- post_install_message:
189
+ post_install_message:
161
190
  rdoc_options: []
162
191
  require_paths:
163
192
  - lib
@@ -172,9 +201,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
172
201
  - !ruby/object:Gem::Version
173
202
  version: '0'
174
203
  requirements: []
175
- rubyforge_project:
176
- rubygems_version: 2.5.2
177
- signing_key:
204
+ rubygems_version: 3.0.8
205
+ signing_key:
178
206
  specification_version: 4
179
- summary: binance-ruby-0.1.9
207
+ summary: binance-ruby-0.6
180
208
  test_files: []