binance-connector 1.0.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 +7 -0
- data/CHANGELOG.md +5 -0
- data/LICENSE.txt +21 -0
- data/README.md +220 -0
- data/lib/binance/authentication.rb +13 -0
- data/lib/binance/error.rb +28 -0
- data/lib/binance/session.rb +106 -0
- data/lib/binance/spot/blvt.rb +104 -0
- data/lib/binance/spot/bswap.rb +217 -0
- data/lib/binance/spot/c2c.rb +27 -0
- data/lib/binance/spot/fiat.rb +49 -0
- data/lib/binance/spot/futures.rb +357 -0
- data/lib/binance/spot/loan.rb +26 -0
- data/lib/binance/spot/margin.rb +676 -0
- data/lib/binance/spot/market.rb +220 -0
- data/lib/binance/spot/mining.rb +243 -0
- data/lib/binance/spot/savings.rb +269 -0
- data/lib/binance/spot/stream.rb +61 -0
- data/lib/binance/spot/subaccount.rb +553 -0
- data/lib/binance/spot/trade.rb +294 -0
- data/lib/binance/spot/wallet.rb +316 -0
- data/lib/binance/spot/websocket.rb +147 -0
- data/lib/binance/spot.rb +61 -0
- data/lib/binance/utils/faraday/custom_params_encoder.rb +78 -0
- data/lib/binance/utils/faraday/middleware/signature.rb +21 -0
- data/lib/binance/utils/faraday/middleware/timestamp.rb +20 -0
- data/lib/binance/utils/faraday/middleware.rb +4 -0
- data/lib/binance/utils/url.rb +26 -0
- data/lib/binance/utils/validation.rb +26 -0
- data/lib/binance/version.rb +5 -0
- data/lib/binance/websocket_base.rb +84 -0
- data/lib/binance.rb +5 -0
- metadata +161 -0
@@ -0,0 +1,269 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Binance
|
4
|
+
class Spot
|
5
|
+
# all savings endpoints
|
6
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#savings-endpoints
|
7
|
+
module Savings
|
8
|
+
# Get Flexible Product List (USER_DATA)
|
9
|
+
#
|
10
|
+
# GET /sapi/v1/lending/daily/product/list
|
11
|
+
#
|
12
|
+
# @param kwargs [Hash]
|
13
|
+
# @option kwargs [String] :status "ALL", "SUBSCRIBABLE", "UNSUBSCRIBABLE"; Default: "ALL"
|
14
|
+
# @option kwargs [String] :featured "ALL", "TRUE"; Default: "ALL"
|
15
|
+
# @option kwargs [Integer] :current Current query page. Default: 1, Min: 1
|
16
|
+
# @option kwargs [Integer] :size Default: 50, Max: 100
|
17
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
18
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#get-flexible-product-list-user_data
|
19
|
+
def savings_flexible_products(**kwargs)
|
20
|
+
@session.sign_request(:get, '/sapi/v1/lending/daily/product/list', params: kwargs)
|
21
|
+
end
|
22
|
+
|
23
|
+
# Get Left Daily Purchase Quota of Flexible Product (USER_DATA)
|
24
|
+
#
|
25
|
+
# GET /sapi/v1/lending/daily/userLeftQuota
|
26
|
+
#
|
27
|
+
# @param productId [String]
|
28
|
+
# @param kwargs [Hash]
|
29
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
30
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#get-left-daily-purchase-quota-of-flexible-product-user_data
|
31
|
+
def savings_flexible_user_left_quota(productId:, **kwargs)
|
32
|
+
Binance::Utils::Validation.require_param('productId', productId)
|
33
|
+
|
34
|
+
@session.sign_request(:get, '/sapi/v1/lending/daily/userLeftQuota', params: kwargs.merge(
|
35
|
+
productId: productId
|
36
|
+
))
|
37
|
+
end
|
38
|
+
|
39
|
+
# Purchase Flexible Product (USER_DATA)
|
40
|
+
#
|
41
|
+
# POST /sapi/v1/lending/daily/purchase
|
42
|
+
#
|
43
|
+
# @param productId [String]
|
44
|
+
# @param amount [Float]
|
45
|
+
# @param kwargs [Hash]
|
46
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
47
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#purchase-flexible-product-user_data
|
48
|
+
def savings_purchase_flexible_product(productId:, amount:, **kwargs)
|
49
|
+
Binance::Utils::Validation.require_param('productId', productId)
|
50
|
+
Binance::Utils::Validation.require_param('amount', amount)
|
51
|
+
|
52
|
+
@session.sign_request(:post, '/sapi/v1/lending/daily/purchase', params: kwargs.merge(
|
53
|
+
productId: productId,
|
54
|
+
amount: amount
|
55
|
+
))
|
56
|
+
end
|
57
|
+
|
58
|
+
# Get Left Daily Redemption Quota of Flexible Product (USER_DATA)
|
59
|
+
#
|
60
|
+
# GET /sapi/v1/lending/daily/userRedemptionQuota
|
61
|
+
#
|
62
|
+
# @param productId [String]
|
63
|
+
# @param type [String] "FAST", "NORMAL"
|
64
|
+
# @param kwargs [Hash]
|
65
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
66
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#get-left-daily-redemption-quota-of-flexible-product-user_data
|
67
|
+
def savings_flexible_user_redemption_quota(productId:, type:, **kwargs)
|
68
|
+
Binance::Utils::Validation.require_param('productId', productId)
|
69
|
+
Binance::Utils::Validation.require_param('type', type)
|
70
|
+
|
71
|
+
@session.sign_request(:get, '/sapi/v1/lending/daily/userRedemptionQuota', params: kwargs.merge(
|
72
|
+
productId: productId,
|
73
|
+
type: type
|
74
|
+
))
|
75
|
+
end
|
76
|
+
|
77
|
+
# Redeem Flexible Product (USER_DATA)
|
78
|
+
#
|
79
|
+
# POST /sapi/v1/lending/daily/redeem
|
80
|
+
#
|
81
|
+
# @param productId [String]
|
82
|
+
# @param amount [Float]]
|
83
|
+
# @param type [String]
|
84
|
+
# @param kwargs [Hash]
|
85
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
86
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#redeem-flexible-product-user_data
|
87
|
+
def savings_flexible_redeem(productId:, amount:, type:, **kwargs)
|
88
|
+
Binance::Utils::Validation.require_param('productId', productId)
|
89
|
+
Binance::Utils::Validation.require_param('amount', amount)
|
90
|
+
Binance::Utils::Validation.require_param('type', type)
|
91
|
+
|
92
|
+
@session.sign_request(:post, '/sapi/v1/lending/daily/redeem', params: kwargs.merge(
|
93
|
+
productId: productId,
|
94
|
+
amount: amount,
|
95
|
+
type: type
|
96
|
+
))
|
97
|
+
end
|
98
|
+
|
99
|
+
# Get Flexible Product Position (USER_DATA)
|
100
|
+
#
|
101
|
+
# GET /sapi/v1/lending/daily/token/position
|
102
|
+
#
|
103
|
+
# @param asset [String]
|
104
|
+
# @param kwargs [Hash]
|
105
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
106
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#get-flexible-product-position-user_data
|
107
|
+
def savings_flexible_product_position(asset:, **kwargs)
|
108
|
+
Binance::Utils::Validation.require_param('asset', asset)
|
109
|
+
|
110
|
+
@session.sign_request(:get, '/sapi/v1/lending/daily/token/position', params: kwargs.merge(
|
111
|
+
asset: asset
|
112
|
+
))
|
113
|
+
end
|
114
|
+
|
115
|
+
# Get Fixed and Activity Project List(USER_DATA)
|
116
|
+
#
|
117
|
+
# GET /sapi/v1/lending/project/list
|
118
|
+
#
|
119
|
+
# @param type [String] "REGULAR", "CUSTOMIZED_FIXED"
|
120
|
+
# @param kwargs [Hash]
|
121
|
+
# @option kwargs [String] :asset
|
122
|
+
# @option kwargs [String] :status "ALL", "SUBSCRIBABLE", "UNSUBSCRIBABLE"; default "ALL"
|
123
|
+
# @option kwargs [Boolean] :isSortAsc default "true"
|
124
|
+
# @option kwargs [String] :sortBy "START_TIME", "LOT_SIZE", "INTEREST_RATE", "DURATION"; default "START_TIME"
|
125
|
+
# @option kwargs [Integer] :current Currently querying page. Start from 1. Default:1
|
126
|
+
# @option kwargs [Integer] :size Default:10, Max:100
|
127
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
128
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#get-fixed-and-activity-project-list-user_data
|
129
|
+
def savings_product_list(type:, **kwargs)
|
130
|
+
Binance::Utils::Validation.require_param('type', type)
|
131
|
+
|
132
|
+
@session.sign_request(:get, '/sapi/v1/lending/project/list', params: kwargs.merge(
|
133
|
+
type: type
|
134
|
+
))
|
135
|
+
end
|
136
|
+
|
137
|
+
# Purchase Fixed/Activity Project (USER_DATA)
|
138
|
+
#
|
139
|
+
# POST /sapi/v1/lending/customizedFixed/purchase
|
140
|
+
#
|
141
|
+
# @param projectId [String]
|
142
|
+
# @param lot [String]
|
143
|
+
# @param kwargs [Hash]
|
144
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
145
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#purchase-fixed-activity-project-user_data
|
146
|
+
def savings_purchase_customized_project(projectId:, lot:, **kwargs)
|
147
|
+
Binance::Utils::Validation.require_param('projectId', projectId)
|
148
|
+
Binance::Utils::Validation.require_param('lot', lot)
|
149
|
+
|
150
|
+
@session.sign_request(:post, '/sapi/v1/lending/customizedFixed/purchase', params: kwargs.merge(
|
151
|
+
projectId: projectId,
|
152
|
+
lot: lot
|
153
|
+
))
|
154
|
+
end
|
155
|
+
|
156
|
+
# Get Fixed/Activity Project Position (USER_DATA)
|
157
|
+
#
|
158
|
+
# GET /sapi/v1/lending/project/position/list
|
159
|
+
#
|
160
|
+
# @param asset [String]
|
161
|
+
# @param kwargs [Hash]
|
162
|
+
# @option kwargs [String] :projectId
|
163
|
+
# @option kwargs [String] :status "HOLDING", "REDEEMED"
|
164
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
165
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#get-fixed-activity-project-position-user_data
|
166
|
+
def savings_customized_position(asset:, **kwargs)
|
167
|
+
Binance::Utils::Validation.require_param('asset', asset)
|
168
|
+
|
169
|
+
@session.sign_request(:get, '/sapi/v1/lending/project/position/list', params: kwargs.merge(
|
170
|
+
asset: asset
|
171
|
+
))
|
172
|
+
end
|
173
|
+
|
174
|
+
# Lending Account (USER_DATA)
|
175
|
+
#
|
176
|
+
# GET /sapi/v1/lending/union/account
|
177
|
+
#
|
178
|
+
# @param kwargs [Hash]
|
179
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
180
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#lending-account-user_data
|
181
|
+
def savings_account(**kwargs)
|
182
|
+
@session.sign_request(:get, '/sapi/v1/lending/union/account', params: kwargs)
|
183
|
+
end
|
184
|
+
|
185
|
+
# Get Purchase Record (USER_DATA)
|
186
|
+
#
|
187
|
+
# GET /sapi/v1/lending/union/purchaseRecord
|
188
|
+
#
|
189
|
+
# @param lendingType [String]
|
190
|
+
# @param kwargs [Hash]
|
191
|
+
# @option kwargs [String] :asset
|
192
|
+
# @option kwargs [Integer] :startTime
|
193
|
+
# @option kwargs [Integer] :endTime
|
194
|
+
# @option kwargs [Integer] :current
|
195
|
+
# @option kwargs [Integer] :size
|
196
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
197
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#get-purchase-record-user_data
|
198
|
+
def savings_purchase_record(lendingType:, **kwargs)
|
199
|
+
Binance::Utils::Validation.require_param('lendingType', lendingType)
|
200
|
+
|
201
|
+
@session.sign_request(:get, '/sapi/v1/lending/union/purchaseRecord', params: kwargs.merge(
|
202
|
+
lendingType: lendingType
|
203
|
+
))
|
204
|
+
end
|
205
|
+
|
206
|
+
# Get Redemption Record (USER_DATA)
|
207
|
+
#
|
208
|
+
# GET /sapi/v1/lending/union/redemptionRecord
|
209
|
+
#
|
210
|
+
# @param lendingType [String]
|
211
|
+
# @param kwargs [Hash]
|
212
|
+
# @option kwargs [String] :asset
|
213
|
+
# @option kwargs [Integer] :startTime
|
214
|
+
# @option kwargs [Integer] :endTime
|
215
|
+
# @option kwargs [Integer] :current
|
216
|
+
# @option kwargs [Integer] :size
|
217
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
218
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#get-redemption-record-user_data
|
219
|
+
def savings_redemption_record(lendingType:, **kwargs)
|
220
|
+
Binance::Utils::Validation.require_param('lendingType', lendingType)
|
221
|
+
|
222
|
+
@session.sign_request(:get, '/sapi/v1/lending/union/redemptionRecord', params: kwargs.merge(
|
223
|
+
lendingType: lendingType
|
224
|
+
))
|
225
|
+
end
|
226
|
+
|
227
|
+
# Get Interest History (USER_DATA)
|
228
|
+
#
|
229
|
+
# GET /sapi/v1/lending/union/interestHistory
|
230
|
+
#
|
231
|
+
# @param lendingType [String]
|
232
|
+
# @param kwargs [Hash]
|
233
|
+
# @option kwargs [String] :asset
|
234
|
+
# @option kwargs [Integer] :startTime
|
235
|
+
# @option kwargs [Integer] :endTime
|
236
|
+
# @option kwargs [Integer] :current
|
237
|
+
# @option kwargs [Integer] :size
|
238
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
239
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#get-interest-history-user_data-2
|
240
|
+
def savings_interest_history(lendingType:, **kwargs)
|
241
|
+
Binance::Utils::Validation.require_param('lendingType', lendingType)
|
242
|
+
|
243
|
+
@session.sign_request(:get, '/sapi/v1/lending/union/interestHistory', params: kwargs.merge(
|
244
|
+
lendingType: lendingType
|
245
|
+
))
|
246
|
+
end
|
247
|
+
|
248
|
+
# Change Fixed/Activity Position to Daily Position(USER_DATA)
|
249
|
+
#
|
250
|
+
# POST /sapi/v1/lending/positionChanged
|
251
|
+
#
|
252
|
+
# @param projectId [String]
|
253
|
+
# @param lot [Integer]
|
254
|
+
# @param kwargs [Hash]
|
255
|
+
# @option kwargs [Integer] :positionId
|
256
|
+
# @option kwargs [Integer] :recvWindow The value cannot be greater than 60000
|
257
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#change-fixed-activity-position-to-daily-position-user_data
|
258
|
+
def savings_position_changed(projectId:, lot:, **kwargs)
|
259
|
+
Binance::Utils::Validation.require_param('projectId', projectId)
|
260
|
+
Binance::Utils::Validation.require_param('lot', lot)
|
261
|
+
|
262
|
+
@session.sign_request(:post, '/sapi/v1/lending/positionChanged', params: kwargs.merge(
|
263
|
+
projectId: projectId,
|
264
|
+
lot: lot
|
265
|
+
))
|
266
|
+
end
|
267
|
+
end
|
268
|
+
end
|
269
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Binance
|
4
|
+
class Spot
|
5
|
+
# User data stream endpoints
|
6
|
+
# @see https://binance-docs.github.io/apidocs/spot/en/#user-data-streams
|
7
|
+
module Stream
|
8
|
+
# Create a ListenKey (USER_STREAM)
|
9
|
+
#
|
10
|
+
# POST /api/v3/userDataStream
|
11
|
+
def new_listen_key
|
12
|
+
@session.limit_request(method: :post, path: '/api/v3/userDataStream')
|
13
|
+
end
|
14
|
+
|
15
|
+
# Ping/Keep-alive a ListenKey (USER_STREAM)
|
16
|
+
#
|
17
|
+
# PUT /api/v3/userDataStream
|
18
|
+
#
|
19
|
+
# @param listenKey [String]
|
20
|
+
def renew_listen_key(listenKey)
|
21
|
+
@session.limit_request(method: :put, path: '/api/v3/userDataStream', params: { listenKey: listenKey })
|
22
|
+
end
|
23
|
+
|
24
|
+
# Close a ListenKey (USER_STREAM)
|
25
|
+
#
|
26
|
+
# DELETE /api/v3/userDataStream
|
27
|
+
#
|
28
|
+
# @param listenKey [String]
|
29
|
+
def delete_listen_key(listenKey)
|
30
|
+
@session.limit_request(method: :delete, path: '/api/v3/userDataStream', params: { listenKey: listenKey })
|
31
|
+
end
|
32
|
+
|
33
|
+
# Margin
|
34
|
+
|
35
|
+
# Create a ListenKey (USER_STREAM)
|
36
|
+
#
|
37
|
+
# POST /sapi/v1/userDataStream
|
38
|
+
def new_margin_listen_key
|
39
|
+
@session.limit_request(method: :post, path: '/sapi/v1/userDataStream')
|
40
|
+
end
|
41
|
+
|
42
|
+
# Ping/Keep-alive a ListenKey (USER_STREAM)
|
43
|
+
#
|
44
|
+
# PUT /sapi/v1/userDataStream
|
45
|
+
#
|
46
|
+
# @param listenKey [String]
|
47
|
+
def renew_margin_listen_key(listenKey)
|
48
|
+
@session.limit_request(method: :put, path: '/sapi/v1/userDataStream', params: { listenKey: listenKey })
|
49
|
+
end
|
50
|
+
|
51
|
+
# Close a ListenKey (USER_STREAM)
|
52
|
+
#
|
53
|
+
# DELETE /sapi/v1/userDataStream
|
54
|
+
#
|
55
|
+
# @param listenKey [String]
|
56
|
+
def delete_margin_listen_key(listenKey)
|
57
|
+
@session.limit_request(method: :delete, path: '/sapi/v1/userDataStream', params: { listenKey: listenKey })
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|