binance-ruby 1.4.1 → 1.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5117a0c7dae571de49bd3a511bffe4f6043846daab557b5d526d6f74e2c94194
4
- data.tar.gz: ccd6524c8cff162b7a404d33b3b0a56ed8ef69ffdb431a2e227434fd11d27f7c
3
+ metadata.gz: 0b7da99e475f0f3f60fa01d00d831e90fe8ce2ba2abf34ae05c7ba0d6c682e2a
4
+ data.tar.gz: d3f695a63e1d2fb300a59c8cad8e5179ab672ee1e2fc6c8743a2258c1dccb5fe
5
5
  SHA512:
6
- metadata.gz: 72812c2efb32fd74f1ae6e7853ae72ce3bcb8b72d6e86ab4444122e924a2750ae5b64e8ffb92fd9c7b306640438afd890ce27af2c891e2e1aec5d72cde160b5b
7
- data.tar.gz: 6c30d301349b6469bc73c082ca5faeb0a6da86103eba5c41076a71dfe2a7cfc5f0fff3d30fb918c5b0db37648661288cd71359f309df63ba6db5d7a350178705
6
+ metadata.gz: 18b1e8698ccf252bd07ce9e553057b6eb34ed1f2c95c7e3cac14a86e6f9434bb9d5532ca8c37f465e32e8da3710ace0324c7d981126f295cc25951179b4ff506
7
+ data.tar.gz: 41c42ed5c5bbfd0cca8ed3a904b9b2bb0842a20e2492b1f40285fd0c7cb1cc850a36c0a30c411c29d32e5b166a6b0c5e40a6637cd8fffe42ab3199c183ab02c1
@@ -1,5 +1,5 @@
1
1
  module Binance
2
2
  module Api
3
- VERSION = "1.4.1"
3
+ VERSION = "1.5.0"
4
4
  end
5
5
  end
@@ -3,7 +3,7 @@ module Binance
3
3
  class Error < StandardError; end
4
4
 
5
5
  def initialize(on_open: nil, on_close: nil)
6
- wss_uri = ENV['BINANCE_TEST_NET_ENABLE'] ? "wss://testnet.binance.vision/stream" : "wss://stream.binance.com:9443/stream"
6
+ wss_uri = ENV['BINANCE_TEST_NET_ENABLE'] ? 'wss://testnet.binance.vision/stream' : 'wss://stream.binance.com:9443/stream'
7
7
 
8
8
  super wss_uri, nil, ping: 180
9
9
 
@@ -80,6 +80,101 @@ module Binance
80
80
  subscribe(symbols_fmt.map { |s| "#{s.downcase}@trade" })
81
81
  end
82
82
 
83
+ # stream name: <symbol>@depth OR <symbol>@depth@500ms OR <symbol>@depth@100ms
84
+ # {
85
+ # "e": "depthUpdate", // Event type
86
+ # "E": 1571889248277, // Event time
87
+ # "T": 1571889248276, // Transaction time
88
+ # "s": "BTCUSDT",
89
+ # "U": 390497796, // First update ID in event
90
+ # "u": 390497878, // Final update ID in event
91
+ # "pu": 390497794, // Final update Id in last stream(ie `u` in last stream)
92
+ # "b": [ // Bids to be updated
93
+ # [
94
+ # "7403.89", // Price Level to be updated
95
+ # "0.002" // Quantity
96
+ # ],
97
+ # [
98
+ # "7403.90",
99
+ # "3.906"
100
+ # ],
101
+ # [
102
+ # "7404.00",
103
+ # "1.428"
104
+ # ],
105
+ # [
106
+ # "7404.85",
107
+ # "5.239"
108
+ # ],
109
+ # [
110
+ # "7405.43",
111
+ # "2.562"
112
+ # ],
113
+ # ],
114
+ # "a": [ // Asks to be updated
115
+ # [
116
+ # "7405.96", // Price level to be
117
+ # "3.340" // Quantity
118
+ # ],
119
+ # [
120
+ # "7406.63",
121
+ # "4.525"
122
+ # ],
123
+ # [
124
+ # "7407.08",
125
+ # "2.475"
126
+ # ],
127
+ # [
128
+ # "7407.15",
129
+ # "4.800"
130
+ # ],
131
+ # [
132
+ # "7407.20",
133
+ # "0.175"
134
+ # ],
135
+ # ],
136
+ # ]
137
+
138
+ def partial_book_depth!(symbols, level, update_speed = nil, &on_receive)
139
+ symbols_fmt = symbols.is_a?(String) ? [symbols] : symbols
140
+ @book_depth_handler = on_receive
141
+ subscribe(symbols_fmt.map { |s| "#{s.downcase}@depth#{level}#{update_speed ? "@#{update_speed}ms" : ''}" })
142
+ end
143
+
144
+ # stream name: <symbol>@depth OR <symbol>@depth@500ms OR <symbol>@depth@100ms
145
+ # {
146
+ # "e": "depthUpdate", // Event type
147
+ # "E": 123456789, // Event time
148
+ # "T": 123456788, // Transaction time
149
+ # "s": "BTCUSDT", // Symbol
150
+ # "U": 157, // First update ID in event
151
+ # "u": 160, // Final update ID in event
152
+ # "pu": 149, // Final update Id in last stream(ie `u` in last stream)
153
+ # "b": [ // Bids to be updated
154
+ # [
155
+ # "0.0024", // Price level to be updated
156
+ # "10" // Quantity
157
+ # ]
158
+ # ],
159
+ # "a": [ // Asks to be updated
160
+ # [
161
+ # "0.0026", // Price level to be updated
162
+ # "100" // Quantity
163
+ # ]
164
+ # ]
165
+ # }
166
+
167
+ def book_depth!(symbols, update_speed = nil, &on_receive)
168
+ symbols_fmt = symbols.is_a?(String) ? [symbols] : symbols
169
+ @book_depth_handler = on_receive
170
+ subscribe(symbols_fmt.map { |s| "#{s.downcase}@depth#{update_speed ? "@#{update_speed}ms" : ''}" })
171
+ end
172
+
173
+ def book_depth_unsubscribe!(symbols, update_speed = nil)
174
+ symbols_fmt = symbols.is_a?(String) ? [symbols] : symbols
175
+ unsubscribe(symbols_fmt.map { |s| "#{s.downcase}@depth#{update_speed ? "@#{update_speed}ms" : ''}" })
176
+ end
177
+
83
178
  private
84
179
 
85
180
  def process_data(data)
@@ -92,6 +187,8 @@ module Binance
92
187
  case json[:data][:e]&.to_sym
93
188
  when :kline
94
189
  @candlesticks_handler&.call(json[:stream], json[:data])
190
+ when :depthUpdate
191
+ @book_depth_handler&.call(json[:stream], json[:data])
95
192
  when :outboundAccountPosition
96
193
  when :balanceUpdate
97
194
  when :executionReport # order update
@@ -109,21 +206,21 @@ module Binance
109
206
 
110
207
  def subscribe(streams)
111
208
  send({
112
- method: "SUBSCRIBE",
209
+ method: 'SUBSCRIBE',
113
210
  params: streams,
114
- id: request_id,
211
+ id: request_id
115
212
  }.to_json)
116
213
  end
117
214
 
118
215
  # Terminating socket connection achieves the same result.
119
216
  # If you have a use-case for this, please create a GitHub issue.
120
217
  #
121
- # def unsubscribe(streams)
122
- # send({
123
- # method: "UNSUBSCRIBE",
124
- # params: streams,
125
- # id: request_id,
126
- # }.to_json)
127
- # end
218
+ def unsubscribe(streams)
219
+ send({
220
+ method: "UNSUBSCRIBE",
221
+ params: streams,
222
+ id: request_id,
223
+ }.to_json)
224
+ end
128
225
  end
129
226
  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: 1.4.1
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jake Peterson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-03-05 00:00:00.000000000 Z
11
+ date: 2025-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: codecov
@@ -237,5 +237,5 @@ requirements: []
237
237
  rubygems_version: 3.4.10
238
238
  signing_key:
239
239
  specification_version: 4
240
- summary: binance-ruby-1.4.1
240
+ summary: binance-ruby-1.5.0
241
241
  test_files: []