binance-connector-ruby 1.2.0 → 1.4.0
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 +18 -0
- data/README.md +4 -0
- data/lib/binance/authentication.rb +22 -2
- data/lib/binance/session.rb +3 -2
- data/lib/binance/spot/margin.rb +13 -0
- data/lib/binance/spot/wallet.rb +13 -0
- data/lib/binance/utils/faraday/middleware/{signature.rb → hmac_signature.rb} +3 -5
- data/lib/binance/utils/faraday/middleware/rsa_signature.rb +19 -0
- data/lib/binance/utils/faraday/middleware.rb +2 -1
- data/lib/binance/version.rb +1 -1
- metadata +9 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 79de67acd5f3ce04c90bd7af5a1219d351f2475da326c52dd15d31de87a5fc59
|
4
|
+
data.tar.gz: a6c937781d4becf1574fa0ae75159ef4183c5305ed71886b2a35a46d6f96726e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3fe1f8765880b0fb14c08333affda07065579f272b4250b2276544a93e4e4e64cbcdcad5b818903c6ed26b8e1ae932b273c832c337ef6fd45cc26b8a6935b23f
|
7
|
+
data.tar.gz: '085799a56d01d5568f0a4cc98c709d98cba18b70d4011e512fd1e4460c52b2b408344fc5c5e54f4e11e152ff1d99ca73d80f327d5c2e25f6a236e9aacd68f37f'
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,23 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 1.4.0 - 2022-12-20
|
4
|
+
### Added
|
5
|
+
- Add RSA signature
|
6
|
+
- Support Ruby 3.1
|
7
|
+
|
8
|
+
### Changed
|
9
|
+
- Drop support of Ruby 2.5
|
10
|
+
|
11
|
+
|
12
|
+
## 1.3.0 - 2022-07-21
|
13
|
+
|
14
|
+
### Add
|
15
|
+
- New endpoint for Margin:
|
16
|
+
- `POST /sapi/v3/asset/getUserAsset` to get user assets.
|
17
|
+
- New endpoint for Wallet:
|
18
|
+
- `GET /sapi/v1/margin/dribblet` to query the historical information of user's margin account small-value asset conversion BNB.
|
19
|
+
|
20
|
+
|
3
21
|
## 1.2.0 - 2022-07-15
|
4
22
|
|
5
23
|
### Add
|
data/README.md
CHANGED
@@ -86,6 +86,10 @@ It's recommended to pass in the `base_url` parameter, even in production as Bina
|
|
86
86
|
- `https://api2.binance.com`
|
87
87
|
- `https://api3.binance.com`
|
88
88
|
|
89
|
+
### RSA Signature
|
90
|
+
|
91
|
+
Binance support both HMAC and RSA signature. Please find the example at `examples/trade/account.rb` for how to sign in both solutions.
|
92
|
+
|
89
93
|
### RecvWindow
|
90
94
|
|
91
95
|
From Binance API, recvWindow is available for all endpoints require signature. By default, it's 5000ms.
|
@@ -1,13 +1,33 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'openssl'
|
4
|
+
require 'base64'
|
5
|
+
|
3
6
|
module Binance
|
4
7
|
# Authentication response to API key and signature
|
5
8
|
class Authentication
|
6
|
-
attr_accessor :key, :secret
|
9
|
+
attr_accessor :key, :secret, :private_key, :private_key_pass_phrase
|
7
10
|
|
8
|
-
def initialize(key, secret)
|
11
|
+
def initialize(key, secret, private_key = nil, private_key_pass_phrase = nil)
|
9
12
|
@key = key
|
10
13
|
@secret = secret
|
14
|
+
@private_key = private_key
|
15
|
+
@private_key_pass_phrase = private_key_pass_phrase
|
16
|
+
end
|
17
|
+
|
18
|
+
def provide_private_key?
|
19
|
+
private_key
|
20
|
+
end
|
21
|
+
|
22
|
+
def hmac_sign(data)
|
23
|
+
OpenSSL::HMAC.hexdigest(
|
24
|
+
OpenSSL::Digest.new('sha256'), secret, data
|
25
|
+
)
|
26
|
+
end
|
27
|
+
|
28
|
+
def rsa_sign(data)
|
29
|
+
pkey = OpenSSL::PKey::RSA.new(private_key, private_key_pass_phrase)
|
30
|
+
Base64.encode64(pkey.sign('SHA256', data))
|
11
31
|
end
|
12
32
|
end
|
13
33
|
end
|
data/lib/binance/session.rb
CHANGED
@@ -11,7 +11,7 @@ module Binance
|
|
11
11
|
|
12
12
|
def initialize(options = {})
|
13
13
|
@base_url = options[:base_url] || 'https://api.binance.com'
|
14
|
-
@auth = Authentication.new(options[:key], options[:secret])
|
14
|
+
@auth = Authentication.new(options[:key], options[:secret], options[:private_key], options[:private_key_pass_phrase])
|
15
15
|
@logger = options[:logger]
|
16
16
|
@show_weight_usage = options[:show_weight_usage] || false
|
17
17
|
@show_header = options[:show_header] || false
|
@@ -78,7 +78,8 @@ module Binance
|
|
78
78
|
build_connection do |conn|
|
79
79
|
conn.headers['X-MBX-APIKEY'] = @auth.key
|
80
80
|
conn.use Timestamp
|
81
|
-
conn.use
|
81
|
+
conn.use RSASignature, @auth if @auth.provide_private_key?
|
82
|
+
conn.use HMACSignature, @auth unless @auth.provide_private_key?
|
82
83
|
end
|
83
84
|
end
|
84
85
|
|
data/lib/binance/spot/margin.rb
CHANGED
@@ -725,6 +725,19 @@ module Binance
|
|
725
725
|
def get_margin_order_usage(**kwargs)
|
726
726
|
@session.sign_request(:get, '/sapi/v1/margin/rateLimit/order', params: kwargs)
|
727
727
|
end
|
728
|
+
|
729
|
+
# Margin Dustlog (USER_DATA)
|
730
|
+
#
|
731
|
+
# GET /sapi/v1/margin/dribblet
|
732
|
+
#
|
733
|
+
# @param kwargs [Hash]
|
734
|
+
# @option kwargs [String] :startTime
|
735
|
+
# @option kwargs [String] :endTime
|
736
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
737
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#margin-dustlog-user_data
|
738
|
+
def get_margin_dust_log(**kwargs)
|
739
|
+
@session.sign_request(:get, '/sapi/v1/margin/dribblet', params: kwargs)
|
740
|
+
end
|
728
741
|
end
|
729
742
|
end
|
730
743
|
end
|
data/lib/binance/spot/wallet.rb
CHANGED
@@ -311,6 +311,19 @@ module Binance
|
|
311
311
|
def api_key_permission(**kwargs)
|
312
312
|
@session.sign_request(:get, '/sapi/v1/account/apiRestrictions', params: kwargs)
|
313
313
|
end
|
314
|
+
|
315
|
+
# User Asset (USER_DATA)
|
316
|
+
#
|
317
|
+
# POST /sapi/v3/asset/getUserAsset
|
318
|
+
#
|
319
|
+
# @param kwargs [Hash]
|
320
|
+
# @option kwargs [String] :asset If asset is blank, then query all positive assets user have.
|
321
|
+
# @option kwargs [Boolean] :needBtcValuation
|
322
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
323
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#user-asset-user_data
|
324
|
+
def get_user_asset(**kwargs)
|
325
|
+
@session.sign_request(:post, '/sapi/v3/asset/getUserAsset', params: kwargs)
|
326
|
+
end
|
314
327
|
end
|
315
328
|
end
|
316
329
|
end
|
@@ -1,17 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'openssl'
|
4
|
+
require 'base64'
|
4
5
|
|
5
6
|
module Binance
|
6
7
|
module Utils
|
7
8
|
module Faraday
|
8
9
|
module Middleware
|
9
|
-
|
10
|
+
HMACSignature = Struct.new(:app, :auth) do
|
10
11
|
def call(env)
|
11
|
-
|
12
|
-
OpenSSL::Digest.new('sha256'), secret, env.url.query
|
13
|
-
)
|
14
|
-
env.url.query = Url.add_param(env.url.query, 'signature', hash)
|
12
|
+
env.url.query = Url.add_param(env.url.query, 'signature', auth.hmac_sign(env.url.query))
|
15
13
|
app.call env
|
16
14
|
end
|
17
15
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'openssl'
|
4
|
+
require 'base64'
|
5
|
+
|
6
|
+
module Binance
|
7
|
+
module Utils
|
8
|
+
module Faraday
|
9
|
+
module Middleware
|
10
|
+
RSASignature = Struct.new(:app, :auth) do
|
11
|
+
def call(env)
|
12
|
+
env.url.query = Url.add_param(env.url.query, 'signature', auth.rsa_sign(env.url.query))
|
13
|
+
app.call env
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/binance/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: binance-connector-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Binance
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-12-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -95,7 +95,7 @@ dependencies:
|
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '1.3'
|
97
97
|
description: ''
|
98
|
-
email:
|
98
|
+
email:
|
99
99
|
executables: []
|
100
100
|
extensions: []
|
101
101
|
extra_rdoc_files: []
|
@@ -127,7 +127,8 @@ files:
|
|
127
127
|
- lib/binance/spot/websocket.rb
|
128
128
|
- lib/binance/utils/faraday/custom_params_encoder.rb
|
129
129
|
- lib/binance/utils/faraday/middleware.rb
|
130
|
-
- lib/binance/utils/faraday/middleware/
|
130
|
+
- lib/binance/utils/faraday/middleware/hmac_signature.rb
|
131
|
+
- lib/binance/utils/faraday/middleware/rsa_signature.rb
|
131
132
|
- lib/binance/utils/faraday/middleware/timestamp.rb
|
132
133
|
- lib/binance/utils/url.rb
|
133
134
|
- lib/binance/utils/validation.rb
|
@@ -138,7 +139,7 @@ licenses:
|
|
138
139
|
- MIT
|
139
140
|
metadata:
|
140
141
|
rubygems_mfa_required: 'true'
|
141
|
-
post_install_message:
|
142
|
+
post_install_message:
|
142
143
|
rdoc_options: []
|
143
144
|
require_paths:
|
144
145
|
- lib
|
@@ -153,8 +154,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
153
154
|
- !ruby/object:Gem::Version
|
154
155
|
version: '0'
|
155
156
|
requirements: []
|
156
|
-
rubygems_version: 3.
|
157
|
-
signing_key:
|
157
|
+
rubygems_version: 3.3.3
|
158
|
+
signing_key:
|
158
159
|
specification_version: 4
|
159
160
|
summary: This is a lightweight library that works as a connector to the Binance public
|
160
161
|
API.
|