binance 0.1.0 → 0.2.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/lib/binance/client/rest.rb +23 -3
- data/lib/binance/client/rest/account_api.rb +21 -43
- data/lib/binance/client/rest/api_endpoints.rb +36 -0
- data/lib/binance/client/rest/public_api.rb +35 -31
- data/lib/binance/client/rest/withdraw_api.rb +14 -28
- data/lib/binance/version.rb +4 -4
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4e8027ac747e3eb75ffc8a423995838465231899
|
4
|
+
data.tar.gz: 7ef223ce562fe69837f2ee6538f00af35a4358cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cf06724334d5d49f968c2f9658ea506689f390e89fc175fae7bf074271ada8b09c328d92c8588c0c5cba02e05000bf15d032efa2d94780675f076e2c7bdf27df
|
7
|
+
data.tar.gz: 6678caae06e9e9ebd40c162c003deacf313a99d52d493db2bf49f5d861f106795a1f56fff2a66fa28c2ce0e9ce3b32ff586fd9e4ac8460321b50989800172327
|
data/lib/binance/client/rest.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
|
2
2
|
require 'faraday'
|
3
|
+
require_relative 'rest/api_endpoints'
|
3
4
|
require_relative 'rest/public_api'
|
4
5
|
require_relative 'rest/account_api'
|
5
6
|
require_relative 'rest/withdraw_api'
|
@@ -10,13 +11,32 @@ module Binance
|
|
10
11
|
class REST
|
11
12
|
BASE_URL = 'https://www.binance.com'.freeze
|
12
13
|
|
13
|
-
|
14
|
-
|
15
|
-
|
14
|
+
# Gets populated by the different APIs that get extended by the instances
|
15
|
+
@api = {}
|
16
|
+
|
17
|
+
class << self
|
18
|
+
attr_accessor :api
|
19
|
+
end
|
20
|
+
|
21
|
+
attr_reader :api_key, :secret_key
|
16
22
|
|
17
23
|
def initialize(api_key: '', secret_key: '')
|
18
24
|
@api_key = api_key
|
19
25
|
@secret_key = secret_key
|
26
|
+
|
27
|
+
extend Public_API
|
28
|
+
extend Account_API
|
29
|
+
extend Withdraw_API
|
30
|
+
end
|
31
|
+
|
32
|
+
def request(api, method, endpoint, options = {})
|
33
|
+
conn = REST.api[api].call
|
34
|
+
response = conn.send(method) do |req|
|
35
|
+
req.url API_ENDPOINTS[endpoint]
|
36
|
+
req.params.merge! options
|
37
|
+
end
|
38
|
+
|
39
|
+
response.body
|
20
40
|
end
|
21
41
|
|
22
42
|
def self.add_query_param(query, key, value)
|
@@ -9,71 +9,49 @@ module Binance
|
|
9
9
|
class REST
|
10
10
|
# API endpoints that require a timestamp and signature
|
11
11
|
module Account_API
|
12
|
-
def
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
12
|
+
def self.extended(base)
|
13
|
+
REST.api[:account] = lambda do
|
14
|
+
Faraday.new(url: "#{BASE_URL}/api") do |conn|
|
15
|
+
conn.request :json
|
16
|
+
conn.response :json, content_type: /\bjson$/
|
17
|
+
conn.headers['X-MBX-APIKEY'] = base.api_key
|
18
|
+
conn.use TimestampRequestMiddleware
|
19
|
+
conn.use SignRequestMiddleware, base.secret_key
|
20
|
+
conn.adapter Faraday.default_adapter
|
21
|
+
end
|
20
22
|
end
|
21
23
|
end
|
22
24
|
|
23
25
|
def create_order(options)
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
26
|
+
request :account, :post, 'order', options
|
27
|
+
end
|
28
|
+
|
29
|
+
def create_test_order(options)
|
30
|
+
request :account, :post, 'order/test', options
|
29
31
|
end
|
30
32
|
|
31
33
|
def query_order(options)
|
32
|
-
|
33
|
-
req.url 'order'
|
34
|
-
req.params.merge! options
|
35
|
-
end
|
36
|
-
response.body
|
34
|
+
request :account, :get, 'order', options
|
37
35
|
end
|
38
36
|
|
39
37
|
def cancel_order(options)
|
40
|
-
|
41
|
-
req.url 'order'
|
42
|
-
req.params.merge! options
|
43
|
-
end
|
44
|
-
response.body
|
38
|
+
request :account, :delete, 'order', options
|
45
39
|
end
|
46
40
|
|
47
41
|
def open_orders(options)
|
48
|
-
|
49
|
-
req.url 'openOrders'
|
50
|
-
req.params.merge! options
|
51
|
-
end
|
52
|
-
response.body
|
42
|
+
request :account, :get, 'openOrders', options
|
53
43
|
end
|
54
44
|
|
55
45
|
def all_orders(options)
|
56
|
-
|
57
|
-
req.url 'allOrders'
|
58
|
-
req.params.merge! options
|
59
|
-
end
|
60
|
-
response.body
|
46
|
+
request :account, :get, 'allOrders', options
|
61
47
|
end
|
62
48
|
|
63
49
|
def account_info(options = {})
|
64
|
-
|
65
|
-
req.url 'account'
|
66
|
-
req.params.merge! options
|
67
|
-
end
|
68
|
-
response.body
|
50
|
+
request :account, :get, 'account', options
|
69
51
|
end
|
70
52
|
|
71
53
|
def account_trade_list(options)
|
72
|
-
|
73
|
-
req.url 'myTrades'
|
74
|
-
req.params.merge! options
|
75
|
-
end
|
76
|
-
response.body
|
54
|
+
request :account, :get, 'myTrades', options
|
77
55
|
end
|
78
56
|
end
|
79
57
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
|
2
|
+
module Binance
|
3
|
+
module Client
|
4
|
+
class REST
|
5
|
+
API_ENDPOINTS = {
|
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',
|
19
|
+
|
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',
|
27
|
+
|
28
|
+
# Withdraw API Endpoints
|
29
|
+
'withdraw' => 'v3/withdraw.html',
|
30
|
+
'depositHistory' => 'v3/depositHistory.html',
|
31
|
+
'withdrawHistory' => 'v3/withdrawHistory.html',
|
32
|
+
'depositAddress' => 'v3/depositAddress.html'
|
33
|
+
}.freeze
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -7,68 +7,72 @@ module Binance
|
|
7
7
|
class REST
|
8
8
|
# API endpoints that don't require any type of authentication
|
9
9
|
module Public_API
|
10
|
-
def
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
10
|
+
def self.extended(_base)
|
11
|
+
REST.api[:public] = lambda do
|
12
|
+
Faraday.new(url: "#{BASE_URL}/api") do |conn|
|
13
|
+
conn.request :json
|
14
|
+
conn.response :json, content_type: /\bjson$/
|
15
|
+
conn.adapter Faraday.default_adapter
|
16
|
+
end
|
15
17
|
end
|
16
18
|
end
|
17
19
|
|
18
20
|
def ping
|
19
|
-
|
21
|
+
request :public, :get, 'ping'
|
20
22
|
end
|
21
23
|
|
22
24
|
def time
|
23
|
-
|
25
|
+
request :public, :get, 'time'
|
24
26
|
end
|
25
27
|
|
26
28
|
def exchange_info
|
27
|
-
|
29
|
+
request :public, :get, 'exchangeInfo'
|
28
30
|
end
|
29
31
|
|
30
32
|
def products
|
31
|
-
|
33
|
+
request :public, :get, 'products'
|
32
34
|
end
|
33
35
|
|
34
36
|
def depth(options)
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
37
|
+
request :public, :get, 'depth', options
|
38
|
+
end
|
39
|
+
|
40
|
+
def trades(options)
|
41
|
+
request :public, :get, 'trades', options
|
42
|
+
end
|
43
|
+
|
44
|
+
def historical_trades(options)
|
45
|
+
request :public, :get, 'historicalTrades', options
|
40
46
|
end
|
41
47
|
|
42
48
|
def agg_trades(options)
|
43
|
-
|
44
|
-
req.url 'aggTrades'
|
45
|
-
req.params.merge! options
|
46
|
-
end
|
47
|
-
response.body
|
49
|
+
request :public, :get, 'aggTrades', options
|
48
50
|
end
|
49
51
|
|
50
52
|
def klines(options)
|
51
|
-
|
52
|
-
req.url 'klines'
|
53
|
-
req.params.merge! options
|
54
|
-
end
|
55
|
-
response.body
|
53
|
+
request :public, :get, 'klines', options
|
56
54
|
end
|
57
55
|
|
58
56
|
def twenty_four_hour(options)
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
57
|
+
request :public, :get, '24hr', options
|
58
|
+
end
|
59
|
+
|
60
|
+
def price(options)
|
61
|
+
request :public, :get, 'price', options
|
64
62
|
end
|
65
63
|
|
64
|
+
# Ensure backwards compatibility
|
66
65
|
def all_prices
|
67
|
-
|
66
|
+
request :public, :get, 'price'
|
67
|
+
end
|
68
|
+
|
69
|
+
def book_ticker(options)
|
70
|
+
request :public, :get, 'bookTicker', options
|
68
71
|
end
|
69
72
|
|
73
|
+
# Ensure backwards compatibility
|
70
74
|
def all_book_tickers
|
71
|
-
|
75
|
+
request :public, :get, 'bookTicker'
|
72
76
|
end
|
73
77
|
end
|
74
78
|
end
|
@@ -10,47 +10,33 @@ module Binance
|
|
10
10
|
# API endpoints with require a timestamp and signature,
|
11
11
|
# as well as requiring url_encoded parameters
|
12
12
|
module Withdraw_API
|
13
|
-
def
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
13
|
+
def self.extended(base)
|
14
|
+
REST.api[:withdraw] = lambda do
|
15
|
+
Faraday.new(url: "#{BASE_URL}/wapi") do |conn|
|
16
|
+
conn.request :url_encoded
|
17
|
+
conn.response :json, content_type: /\bjson$/
|
18
|
+
conn.headers['X-MBX-APIKEY'] = base.api_key
|
19
|
+
conn.use TimestampRequestMiddleware
|
20
|
+
conn.use SignRequestMiddleware, base.secret_key
|
21
|
+
conn.adapter Faraday.default_adapter
|
22
|
+
end
|
21
23
|
end
|
22
24
|
end
|
23
25
|
|
24
26
|
def withdraw(options)
|
25
|
-
|
26
|
-
req.url 'withdraw.html'
|
27
|
-
req.params.merge! options
|
28
|
-
end
|
29
|
-
response.body
|
27
|
+
request :withdraw, :post, 'withdraw', options
|
30
28
|
end
|
31
29
|
|
32
30
|
def deposit_history(options = {})
|
33
|
-
|
34
|
-
req.url 'depositHistory.html'
|
35
|
-
req.params.merge! options
|
36
|
-
end
|
37
|
-
response.body
|
31
|
+
request :withdraw, :get, 'depositHistory', options
|
38
32
|
end
|
39
33
|
|
40
34
|
def withdraw_history(options = {})
|
41
|
-
|
42
|
-
req.url 'withdrawHistory.html'
|
43
|
-
req.params.merge! options
|
44
|
-
end
|
45
|
-
response.body
|
35
|
+
request :withdraw, :get, 'withdrawHistory', options
|
46
36
|
end
|
47
37
|
|
48
38
|
def deposit_address(options)
|
49
|
-
|
50
|
-
req.url 'depositAddress.html'
|
51
|
-
req.params.merge! options
|
52
|
-
end
|
53
|
-
response.body
|
39
|
+
request :withdraw, :get, 'depositAddress', options
|
54
40
|
end
|
55
41
|
end
|
56
42
|
end
|
data/lib/binance/version.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
2
|
-
module Binance
|
3
|
-
VERSION = '0.
|
4
|
-
end
|
1
|
+
|
2
|
+
module Binance
|
3
|
+
VERSION = '0.2.0'.freeze
|
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
|
+
version: 0.2.0
|
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: 2017-
|
11
|
+
date: 2017-12-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -92,6 +92,7 @@ files:
|
|
92
92
|
- lib/binance.rb
|
93
93
|
- lib/binance/client/rest.rb
|
94
94
|
- lib/binance/client/rest/account_api.rb
|
95
|
+
- lib/binance/client/rest/api_endpoints.rb
|
95
96
|
- lib/binance/client/rest/public_api.rb
|
96
97
|
- lib/binance/client/rest/sign_request_middleware.rb
|
97
98
|
- lib/binance/client/rest/timestamp_request_middleware.rb
|