binance 0.4.1 → 0.4.2

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
  SHA1:
3
- metadata.gz: 3e860ec11ba1d0b5997779e051d950ed1f107aef
4
- data.tar.gz: beb925d31c5779175a6ae792f3548a6c9a900ac8
3
+ metadata.gz: 4b8366cc935a0035bd2e70601ee916f1cfdbc22d
4
+ data.tar.gz: 01a47ff596c0ebbc7c466a75ea6d0e831c584bc9
5
5
  SHA512:
6
- metadata.gz: 1afd91d95a45e4dbe2f5c9f1fccde5db0f404efeecdb3e03ab8a66ca3e3a259314f8134f388ebf96196a91d13fbd7b819cab2c5d4fabf4b1a5b66bae77300fcf
7
- data.tar.gz: c2855fa5f67d34672723a843a9c06613432d5594fbb27671fb5433eb3dcf82bfd2e4f440e959e7ae4ca81e3192a159e0a224dcf4507b3e24fb11f061db1ab0fb
6
+ metadata.gz: 272b026095a34ec596cb50b1b9a37fa8e08324e8acf2285fd8829aa48498ad192a8452df21e4dd72827b53c19f96bda8ce9f9acc209ad63ac2a39b62afdc75d9
7
+ data.tar.gz: 0abed3c7a6528027df5228a010c674d2bca0712838dfb2c688212ef80813266d8ed098f81dbf079ae326825f48b3106e1d6da2d70fd6dec21ea2f0449ad11aeb
@@ -1,10 +1,15 @@
1
1
 
2
2
  require 'faraday'
3
- require_relative 'rest/api_endpoints'
3
+ require 'faraday_middleware'
4
+
5
+ require_relative 'rest/sign_request_middleware'
6
+ require_relative 'rest/timestamp_request_middleware'
7
+
4
8
  require_relative 'rest/public_api'
5
9
  require_relative 'rest/account_api'
6
10
  require_relative 'rest/withdraw_api'
7
- require_relative 'rest/user_data_api'
11
+
12
+ require_relative 'rest/api_endpoints'
8
13
 
9
14
  module Binance
10
15
  module Client
@@ -13,14 +18,9 @@ module Binance
13
18
  # Public: String base url for REST client to use
14
19
  BASE_URL = 'https://www.binance.com'.freeze
15
20
 
16
- # Gets populated by the different APIs that get extended by the instances
17
- @api = {}
18
-
19
- class << self
20
- attr_accessor :api
21
- end
22
-
23
- attr_reader :api_key, :secret_key, :adapter
21
+ include PublicAPI
22
+ include AccountAPI
23
+ include WithdrawAPI
24
24
 
25
25
  # Public: Initialize a REST Client
26
26
  #
@@ -32,18 +32,58 @@ module Binance
32
32
  # (Default = Faraday.default_adapter).
33
33
  def initialize(api_key: '', secret_key: '',
34
34
  adapter: Faraday.default_adapter)
35
- @api_key = api_key
36
- @secret_key = secret_key
37
- @adapter = adapter
38
-
39
- extend Public_API
40
- extend Account_API
41
- extend Withdraw_API
42
- extend UserData_API
35
+ @library = {}
36
+ # Endpoint doesn't require an api_key or secret_key
37
+ @library[:public] = public_client adapter
38
+ # Endpoint requires an api_key
39
+ @library[:verified] = verified_client api_key, adapter
40
+ # Endpoint requires an api_key and secret_key
41
+ @library[:signed] = signed_client api_key, secret_key, adapter
42
+ # Endpoint requires an api_key and secret_key - for the Withdraw API
43
+ @library[:withdraw] = withdraw_client api_key, secret_key, adapter
44
+
43
45
  end
44
46
 
45
47
  private
46
48
 
49
+ def public_client(adapter)
50
+ Faraday.new(url: "#{BASE_URL}/api") do |conn|
51
+ conn.request :json
52
+ conn.response :json, content_type: /\bjson$/
53
+ conn.adapter adapter
54
+ end
55
+ end
56
+
57
+ def signed_client(api_key, secret_key, adapter)
58
+ Faraday.new(url: "#{BASE_URL}/api") do |conn|
59
+ conn.request :json
60
+ conn.response :json, content_type: /\bjson$/
61
+ conn.headers['X-MBX-APIKEY'] = api_key
62
+ conn.use TimestampRequestMiddleware
63
+ conn.use SignRequestMiddleware, secret_key
64
+ conn.adapter adapter
65
+ end
66
+ end
67
+
68
+ def withdraw_client(api_key, secret_key, adapter)
69
+ Faraday.new(url: "#{BASE_URL}/wapi") do |conn|
70
+ conn.request :url_encoded
71
+ conn.response :json, content_type: /\bjson$/
72
+ conn.headers['X-MBX-APIKEY'] = api_key
73
+ conn.use TimestampRequestMiddleware
74
+ conn.use SignRequestMiddleware, secret_key
75
+ conn.adapter adapter
76
+ end
77
+ end
78
+
79
+ def verified_client(api_key, adapter)
80
+ Faraday.new(url: "#{BASE_URL}/api") do |conn|
81
+ conn.response :json, content_type: /\bjson$/
82
+ conn.headers['X-MBX-APIKEY'] = api_key
83
+ conn.adapter adapter
84
+ end
85
+ end
86
+
47
87
  # Internal: Create a request that hits one of the REST APIs
48
88
  #
49
89
  # api - The Symbol that represents which API to use.
@@ -57,8 +97,7 @@ module Binance
57
97
  # Each endpoint will have their own required and optional
58
98
  # params.
59
99
  def request(api, method, endpoint, options = {})
60
- conn = REST.api[api].call
61
- response = conn.send(method) do |req|
100
+ response = @library[api].send(method) do |req|
62
101
  req.url API_ENDPOINTS[endpoint]
63
102
  req.params.merge! options
64
103
  end
@@ -1,32 +1,9 @@
1
1
 
2
- require 'faraday'
3
- require 'faraday_middleware'
4
- require_relative 'sign_request_middleware'
5
- require_relative 'timestamp_request_middleware'
6
-
7
2
  module Binance
8
3
  module Client
9
4
  class REST
10
5
  # Public: A module containing all of the Account API endpoints
11
- module Account_API
12
- # Internal: Create Lambda that returns a new Faraday client instance
13
- # and add it to the REST class instance variable @api. This is called
14
- # while a new instance of the REST class is created.
15
- #
16
- # base - The base class that is being extended into
17
- def self.extended(base)
18
- REST.api[:account] = lambda do
19
- Faraday.new(url: "#{BASE_URL}/api") do |conn|
20
- conn.request :json
21
- conn.response :json, content_type: /\bjson$/
22
- conn.headers['X-MBX-APIKEY'] = base.api_key
23
- conn.use TimestampRequestMiddleware
24
- conn.use SignRequestMiddleware, base.secret_key
25
- conn.adapter base.adapter
26
- end
27
- end
28
- end
29
-
6
+ module AccountAPI
30
7
  # Public: Create a new order on the specified symbol for the
31
8
  # authenticated account
32
9
  #
@@ -55,7 +32,7 @@ module Binance
55
32
  #
56
33
  # Returns a Hash of the request response
57
34
  def create_order(options)
58
- request :account, :post, 'order', options
35
+ request :signed, :post, :order, options
59
36
  end
60
37
 
61
38
  # Public: Create a test order on the specified symbol for the
@@ -86,7 +63,7 @@ module Binance
86
63
  #
87
64
  # Returns a Hash of the request response
88
65
  def create_test_order(options)
89
- request :account, :post, 'order/test', options
66
+ request :signed, :post, :order_test, options
90
67
  end
91
68
 
92
69
  # Public: Query an orders status on the specified symbol for the
@@ -105,7 +82,7 @@ module Binance
105
82
  #
106
83
  # Returns a Hash of the request response
107
84
  def query_order(options)
108
- request :account, :get, 'order', options
85
+ request :signed, :get, :order, options
109
86
  end
110
87
 
111
88
  # Public: Cancel the order specified for the authenticated account.
@@ -125,7 +102,7 @@ module Binance
125
102
  #
126
103
  # Returns a Hash with the request response
127
104
  def cancel_order(options)
128
- request :account, :delete, 'order', options
105
+ request :signed, :delete, :order, options
129
106
  end
130
107
 
131
108
  # Public: Retrieve open orders for the authenticated account
@@ -138,7 +115,7 @@ module Binance
138
115
  #
139
116
  # Returns a Hash with the request response
140
117
  def open_orders(options)
141
- request :account, :get, 'openOrders', options
118
+ request :signed, :get, :openOrders, options
142
119
  end
143
120
 
144
121
  # Public: Retrieve all orders of the specified symbol for the
@@ -154,7 +131,7 @@ module Binance
154
131
  #
155
132
  # Returns a Hash with the request response
156
133
  def all_orders(options)
157
- request :account, :get, 'allOrders', options
134
+ request :signed, :get, :allOrders, options
158
135
  end
159
136
 
160
137
  # Public: Retrieve account information for the authenticated account
@@ -165,7 +142,7 @@ module Binance
165
142
  #
166
143
  # Returns a Hash with the request response
167
144
  def account_info(options = {})
168
- request :account, :get, 'account', options
145
+ request :signed, :get, :account, options
169
146
  end
170
147
 
171
148
  # Public: Retrieve trade data of the specified symbol for the
@@ -180,7 +157,34 @@ module Binance
180
157
  #
181
158
  # Returns a Hash with the request response
182
159
  def account_trade_list(options)
183
- request :account, :get, 'myTrades', options
160
+ request :signed, :get, :myTrades, options
161
+ end
162
+
163
+ # Public: Retrieve the listen key for the given api key
164
+ #
165
+ # Returns a Hash with the request response
166
+ def listen_key
167
+ request :verified, :post, :userDataStream
168
+ end
169
+
170
+ # Public: Ping the server to keep User Data stream alive
171
+ #
172
+ # options - The Hash which hosts various REST query params.
173
+ # :listen_key - The String of which stream to keep alive
174
+ #
175
+ # Returns a Hash with the request response
176
+ def keep_stream_alive(options)
177
+ request :verified, :put, :userDataStream, options
178
+ end
179
+
180
+ # Public: Close the User Data stream associated with the listen key
181
+ #
182
+ # options - The Hash which hosts various REST query params.
183
+ # :listen_key - The String of which stream to close
184
+ #
185
+ # Returns a Hash with the request response
186
+ def close_stream(options)
187
+ request :verified, :delete, :userDataStream, options
184
188
  end
185
189
  end
186
190
  end
@@ -4,36 +4,34 @@ module Binance
4
4
  class REST
5
5
  API_ENDPOINTS = {
6
6
  # Public API Endpoints
7
- 'ping' => 'v1/ping',
8
- 'time' => 'v1/time',
9
- 'exchangeInfo' => 'v1/exchangeInfo',
10
- 'products' => '/exchange/public/products',
11
- 'depth' => 'v1/depth',
12
- 'trades' => 'v1/trades',
13
- 'historicalTrades' => 'v1/historicalTrades',
14
- 'aggTrades' => 'v1/aggTrades',
15
- 'klines' => 'v1/klines',
16
- '24hr' => 'v1/ticker/24hr',
17
- 'price' => 'v3/ticker/price',
18
- 'bookTicker' => 'v3/ticker/bookTicker',
7
+ ping: 'v1/ping',
8
+ time: 'v1/time',
9
+ exchangeInfo: 'v1/exchangeInfo',
10
+ products: '/exchange/public/products',
11
+ depth: 'v1/depth',
12
+ trades: 'v1/trades',
13
+ historicalTrades: 'v1/historicalTrades',
14
+ aggTrades: 'v1/aggTrades',
15
+ klines: 'v1/klines',
16
+ twenty_four_hour: 'v1/ticker/24hr',
17
+ price: 'v3/ticker/price',
18
+ bookTicker: 'v3/ticker/bookTicker',
19
19
 
20
20
  # Account API Endpoints
21
- 'order' => 'v3/order',
22
- 'order/test' => 'v3/order/test',
23
- 'openOrders' => 'v3/openOrders',
24
- 'allOrders' => 'v3/allOrders',
25
- 'account' => 'v3/account',
26
- 'myTrades' => 'v3/myTrades',
21
+ order: 'v3/order',
22
+ order_test: 'v3/order/test',
23
+ openOrders: 'v3/openOrders',
24
+ allOrders: 'v3/allOrders',
25
+ account: 'v3/account',
26
+ myTrades: 'v3/myTrades',
27
+ userDataStream: 'v1/userDataStream',
27
28
 
28
29
  # Withdraw API Endpoints
29
- 'withdraw' => 'v3/withdraw.html',
30
- 'depositHistory' => 'v3/depositHistory.html',
31
- 'withdrawHistory' => 'v3/withdrawHistory.html',
32
- 'depositAddress' => 'v3/depositAddress.html',
33
- 'accountStatus' => 'v3/accountStatus.html',
34
-
35
- # User Data Stream API Endpoints
36
- 'userDataStream' => 'v1/userDataStream'
30
+ withdraw: 'v3/withdraw.html',
31
+ depositHistory: 'v3/depositHistory.html',
32
+ withdrawHistory: 'v3/withdrawHistory.html',
33
+ depositAddress: 'v3/depositAddress.html',
34
+ accountStatus: 'v3/accountStatus.html'
37
35
  }.freeze
38
36
  end
39
37
  end
@@ -1,46 +1,28 @@
1
1
 
2
- require 'faraday'
3
- require 'faraday_middleware'
4
-
5
2
  module Binance
6
3
  module Client
7
4
  class REST
8
5
  # Public: A Module containing all of the Public API endpoints
9
- module Public_API
10
- # Internal: Create Lambda that returns a new Faraday client instance
11
- # and add it to the REST class instance variable @api. This is called
12
- # while a new instance of the REST class is created.
13
- #
14
- # base - The base class that is being extended into.
15
- def self.extended(base)
16
- REST.api[:public] = lambda do
17
- Faraday.new(url: "#{BASE_URL}/api") do |conn|
18
- conn.request :json
19
- conn.response :json, content_type: /\bjson$/
20
- conn.adapter base.adapter
21
- end
22
- end
23
- end
24
-
6
+ module PublicAPI
25
7
  # Public: Ping the server to test connectivity
26
8
  #
27
9
  # Returns a Hash with the request response
28
10
  def ping
29
- request :public, :get, 'ping'
11
+ request :public, :get, :ping
30
12
  end
31
13
 
32
14
  # Public: Retrieve the server time in milliseconds
33
15
  #
34
16
  # Returns a Hash with the request response
35
17
  def time
36
- request :public, :get, 'time'
18
+ request :public, :get, :time
37
19
  end
38
20
 
39
21
  # Public: Retrieve current exchange trading rules and symbol information
40
22
  #
41
23
  # Returns a Hash with the request response
42
24
  def exchange_info
43
- request :public, :get, 'exchangeInfo'
25
+ request :public, :get, :exchangeInfo
44
26
  end
45
27
 
46
28
  # Public: Retrieve current exchange asset information. This is an
@@ -48,7 +30,7 @@ module Binance
48
30
  #
49
31
  # Returns a Hash with the request response
50
32
  def products
51
- request :public, :get, 'products'
33
+ request :public, :get, :products
52
34
  end
53
35
 
54
36
  # Public: Retrieve depth information for the specified symbol
@@ -59,7 +41,7 @@ module Binance
59
41
  #
60
42
  # Returns a Hash with the request response
61
43
  def depth(options)
62
- request :public, :get, 'depth', options
44
+ request :public, :get, :depth, options
63
45
  end
64
46
 
65
47
  # Public: Retrieve recent trades for the specified symbol
@@ -70,7 +52,7 @@ module Binance
70
52
  #
71
53
  # Returns a Hash with the request response
72
54
  def trades(options)
73
- request :public, :get, 'trades', options
55
+ request :public, :get, :trades, options
74
56
  end
75
57
 
76
58
  # Public: Retrieve old trade data for the specified symbol
@@ -82,7 +64,7 @@ module Binance
82
64
  #
83
65
  # Returns a Hash with the request response
84
66
  def historical_trades(options)
85
- request :user_data, :get, 'historicalTrades', options
67
+ request :verified, :get, :historicalTrades, options
86
68
  end
87
69
 
88
70
  # Public: Retrieve aggregate trade data for the specified symbol
@@ -98,7 +80,7 @@ module Binance
98
80
  #
99
81
  # Returns a Hash with the request response
100
82
  def agg_trades(options)
101
- request :public, :get, 'aggTrades', options
83
+ request :public, :get, :aggTrades, options
102
84
  end
103
85
 
104
86
  # Public: Retrieve kline data for the specified symbol
@@ -115,7 +97,7 @@ module Binance
115
97
  #
116
98
  # Returns a Hash with the request response
117
99
  def klines(options)
118
- request :public, :get, 'klines', options
100
+ request :public, :get, :klines, options
119
101
  end
120
102
 
121
103
  # Public: Retrieve 24 hour ticker price data
@@ -125,7 +107,7 @@ module Binance
125
107
  #
126
108
  # Returns a Hash with the request response
127
109
  def twenty_four_hour(options)
128
- request :public, :get, '24hr', options
110
+ request :public, :get, :twenty_four_hour, options
129
111
  end
130
112
 
131
113
  # Public: Retrieve price ticker data for the specified symbol
@@ -135,14 +117,14 @@ module Binance
135
117
  #
136
118
  # Returns a Hash with the request response
137
119
  def price(options)
138
- request :public, :get, 'price', options
120
+ request :public, :get, :price, options
139
121
  end
140
122
 
141
123
  # Public: Retrieve all price ticker data
142
124
  #
143
125
  # Returns a Hash with the request response
144
126
  def all_prices
145
- request :public, :get, 'price'
127
+ request :public, :get, :price
146
128
  end
147
129
 
148
130
  # Public: Retrieve best price per quantity on the order book
@@ -152,14 +134,14 @@ module Binance
152
134
  #
153
135
  # Returns a Hash with the request response
154
136
  def book_ticker(options)
155
- request :public, :get, 'bookTicker', options
137
+ request :public, :get, :bookTicker, options
156
138
  end
157
139
 
158
140
  # Public: Retrieve all book ticker data for all symbols
159
141
  #
160
142
  # Returns a Hash with the request response
161
143
  def all_book_tickers
162
- request :public, :get, 'bookTicker'
144
+ request :public, :get, :bookTicker
163
145
  end
164
146
  end
165
147
  end
@@ -1,32 +1,9 @@
1
1
 
2
- require 'faraday'
3
- require 'faraday_middleware'
4
- require_relative 'sign_request_middleware'
5
- require_relative 'timestamp_request_middleware'
6
-
7
2
  module Binance
8
3
  module Client
9
4
  class REST
10
5
  # Public: A Module containing all of the Withdraw API endpoints
11
- module Withdraw_API
12
- # Internal: Create Lambda that returns a new Faraday client instance
13
- # and add it to the REST class instance variable @api. This is called
14
- # while a new instance of the REST class is created.
15
- #
16
- # base - The base class that is being extended into.
17
- def self.extended(base)
18
- REST.api[:withdraw] = lambda do
19
- Faraday.new(url: "#{BASE_URL}/wapi") do |conn|
20
- conn.request :url_encoded
21
- conn.response :json, content_type: /\bjson$/
22
- conn.headers['X-MBX-APIKEY'] = base.api_key
23
- conn.use TimestampRequestMiddleware
24
- conn.use SignRequestMiddleware, base.secret_key
25
- conn.adapter base.adapter
26
- end
27
- end
28
- end
29
-
6
+ module WithdrawAPI
30
7
  # Public: Withdraw the specified asset to the given address using
31
8
  # the authenticated account
32
9
  #
@@ -41,7 +18,7 @@ module Binance
41
18
  #
42
19
  # Returns a Hash with the request response
43
20
  def withdraw(options)
44
- request :withdraw, :post, 'withdraw', options
21
+ request :withdraw, :post, :withdraw, options
45
22
  end
46
23
 
47
24
  # Public: Retrieve the deposit history for the authenticated account
@@ -58,7 +35,7 @@ module Binance
58
35
  #
59
36
  # Returns a Hash with the request response
60
37
  def deposit_history(options = {})
61
- request :withdraw, :get, 'depositHistory', options
38
+ request :withdraw, :get, :depositHistory, options
62
39
  end
63
40
 
64
41
  # Public: Retrieve the withdraw history for the authenticated account
@@ -75,7 +52,7 @@ module Binance
75
52
  #
76
53
  # Returns a Hash with the request response
77
54
  def withdraw_history(options = {})
78
- request :withdraw, :get, 'withdrawHistory', options
55
+ request :withdraw, :get, :withdrawHistory, options
79
56
  end
80
57
 
81
58
  # Public: Retrieve the deposit address for a specific asset
@@ -87,7 +64,7 @@ module Binance
87
64
  #
88
65
  # Returns a Hash with the request response
89
66
  def deposit_address(options)
90
- request :withdraw, :get, 'depositAddress', options
67
+ request :withdraw, :get, :depositAddress, options
91
68
  end
92
69
 
93
70
  # Public: Retrieve current account status
@@ -98,7 +75,7 @@ module Binance
98
75
  #
99
76
  # Returns a Hash with the request response
100
77
  def account_status(options)
101
- request :withdraw, :get, 'accountStatus', options
78
+ request :withdraw, :get, :accountStatus, options
102
79
  end
103
80
  end
104
81
  end
@@ -1,4 +1,4 @@
1
1
 
2
2
  module Binance
3
- VERSION = '0.4.1'.freeze
3
+ VERSION = '0.4.2'.freeze
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: binance
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Charles Ray Shisler III
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-21 00:00:00.000000000 Z
11
+ date: 2018-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -58,42 +58,42 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.12.2
61
+ version: '0.12'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.12.2
68
+ version: '0.12'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: faraday_middleware
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.12.2
75
+ version: '0.12'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.12.2
82
+ version: '0.12'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: faye-websocket
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.10.7
89
+ version: '0.10'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 0.10.7
96
+ version: '0.10'
97
97
  description:
98
98
  email:
99
99
  - charles@cray.io
@@ -110,7 +110,6 @@ files:
110
110
  - lib/binance/client/rest/public_api.rb
111
111
  - lib/binance/client/rest/sign_request_middleware.rb
112
112
  - lib/binance/client/rest/timestamp_request_middleware.rb
113
- - lib/binance/client/rest/user_data_api.rb
114
113
  - lib/binance/client/rest/withdraw_api.rb
115
114
  - lib/binance/client/websocket.rb
116
115
  - lib/binance/version.rb
@@ -1,54 +0,0 @@
1
-
2
- require 'faraday'
3
- require 'faraday_middleware'
4
-
5
- module Binance
6
- module Client
7
- class REST
8
- # Public: A Module containing all of the User Data API endpoints
9
- module UserData_API
10
- # Internal: Create Lambda that returns a new Faraday client instance
11
- # and add it to the REST class instance variable @api. This is called
12
- # while a new instance of the REST class is created.
13
- #
14
- # base - The base class that is being extended into.
15
- def self.extended(base)
16
- REST.api[:user_data] = lambda do
17
- Faraday.new(url: "#{BASE_URL}/api") do |conn|
18
- conn.response :json, content_type: /\bjson$/
19
- conn.headers['X-MBX-APIKEY'] = base.api_key
20
- conn.adapter base.adapter
21
- end
22
- end
23
- end
24
-
25
- # Public: Retrieve the listen key for the given api key
26
- #
27
- # Returns a Hash with the request response
28
- def listen_key
29
- request :user_data, :post, 'userDataStream'
30
- end
31
-
32
- # Public: Ping the server to keep User Data stream alive
33
- #
34
- # options - The Hash which hosts various REST query params.
35
- # :listen_key - The String of which stream to keep alive
36
- #
37
- # Returns a Hash with the request response
38
- def keep_stream_alive(options)
39
- request :user_data, :put, 'userDataStream', options
40
- end
41
-
42
- # Public: Close the User Data stream associated with the listen key
43
- #
44
- # options - The Hash which hosts various REST query params.
45
- # :listen_key - The String of which stream to close
46
- #
47
- # Returns a Hash with the request response
48
- def close_stream(options)
49
- request :user_data, :delete, 'userDataStream', options
50
- end
51
- end
52
- end
53
- end
54
- end