bingx 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b318376a28249f40b8cd5c36b18f018272b4382d59abed51c6164f8758fb9e88
4
- data.tar.gz: fa7a6093ecf7c9315a1fc6ebe85569b993ef67fb56d203fb08d24bd3508ff315
3
+ metadata.gz: 378b4b73c5b70f16d39d8976ac1d4705d610e1d0ffb6eaa57dc118cedf781b2e
4
+ data.tar.gz: 83083f8b07415306daafbacb1b8c808332b0f6b367908cfd42a391a1974915bd
5
5
  SHA512:
6
- metadata.gz: 70a6a3aa3c3c5c7849dd592506704785a69b75fdf409d770c98c3f1bcc36c89a2bd6c1677a492b20f655aa120679641600a60df178786dec89d8a48c426190d4
7
- data.tar.gz: e0bc5a2c379c408faaebbc56f6a7e5d889a4d3be3ef9e557e15bd085409c293358b7a2fc193bdd751ec77c40feac0260619e03b28cf3879df2840c32e67d4ade
6
+ metadata.gz: 3be52016430bb2b913f5b5875af3cc1d32b8b92846e1da8d9a6e6067a30c798421cdd9e94fabff22c3b170aee2cf783d2c9fe1aab6653754754806f16be03934
7
+ data.tar.gz: cfa2f02647825ae9cebb3b3da396c96a84484cf0e6c4ffb4aee9b8083c92c18acaf9f3d559b682cadd5963aec6b6cbcf44a03a9071d233fdb5f4c22a86c3337d
data/README.md CHANGED
@@ -17,6 +17,14 @@ client = Bingx::Client.new(
17
17
  )
18
18
 
19
19
  client.get_user_balance
20
+
21
+ client.trade_order_test(
22
+ symbol: 'ETH-USDT',
23
+ side: 'BUY',
24
+ positionSide: 'LONG',
25
+ type: 'MARKET',
26
+ quantity: 5
27
+ )
20
28
  ```
21
29
 
22
30
  ## Development
data/lib/bingx/client.rb CHANGED
@@ -4,38 +4,61 @@ module Bingx
4
4
  class Client
5
5
  include HTTParty
6
6
  include Requests::Account
7
+ include Requests::Trade
7
8
 
8
- attr_accessor :api_key, :secret_key, :recv_window
9
+ attr_accessor :api_key, :secret_key, :base_url
9
10
 
10
11
  base_uri 'https://open-api.bingx.com'
11
12
  debug_output $stdout
12
13
 
13
- def initialize(api_key:, secret_key:, recv_window: '5000')
14
+ def initialize(api_key:, secret_key:)
14
15
  @api_key = api_key
15
16
  @secret_key = secret_key
16
- @recv_window = recv_window
17
+ @base_url = 'https://open-api.bingx.com'
17
18
  end
18
19
 
19
20
  def request(method, endpoint, payload = {})
21
+ public_send(method, endpoint, payload)
22
+ end
23
+
24
+ def get(endpoint, payload = {})
20
25
  headers = { 'X-BX-APIKEY': api_key }
21
- params = build_params(payload)
22
- response = self.class.send(method, endpoint, query: params, headers: headers)
26
+
27
+ payload.merge!(timestamp: DateTime.now.strftime('%Q'))
28
+ payload = HTTParty::HashConversions.to_params(payload)
29
+ payload += "&signature=#{signature(payload)}"
30
+
31
+ response = self.class.get(endpoint, query: payload, headers: headers)
23
32
  response.body
24
33
  end
25
34
 
26
- private
35
+ # rubocop:disable Metrics/AbcSize
36
+ def post(endpoint, payload = {})
37
+ payload.merge!(timestamp: DateTime.now.strftime('%Q'))
38
+ params = parse_params(payload)
39
+ full_url = URI("#{base_url}#{endpoint}?#{params}&signature=#{signature(params)}")
27
40
 
28
- def build_params(payload)
29
- payload.merge!(
30
- recv_window: recv_window,
31
- timestamp: DateTime.now.strftime('%Q')
32
- )
33
- payload = HTTParty::HashConversions.to_params(payload)
34
- payload + "&signature=#{signature(payload)}"
41
+ https = Net::HTTP.new(full_url.host, full_url.port)
42
+ https.set_debug_output($stdout)
43
+ https.use_ssl = true
44
+
45
+ request = Net::HTTP::Post.new(full_url)
46
+ request['X-BX-APIKEY'] = api_key
47
+ request['Content-Type'] = 'application/json'
48
+
49
+ response = https.request(request)
50
+ puts response.read_body
35
51
  end
52
+ # rubocop:enable Metrics/AbcSize
53
+
54
+ private
36
55
 
37
56
  def signature(payload)
38
57
  OpenSSL::HMAC.hexdigest('sha256', secret_key, payload)
39
58
  end
59
+
60
+ def parse_params(params)
61
+ params.keys.sort.map { |x| "#{x}=#{params[x]}" }.join('&')
62
+ end
40
63
  end
41
64
  end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bingx
4
+ module Requests
5
+ module Trade
6
+ def trade_order_test(payload)
7
+ request(:post, '/openApi/swap/v2/trade/order/test', payload)
8
+ end
9
+ end
10
+ end
11
+ end
data/lib/bingx/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bingx
4
- VERSION = '0.1.1'
4
+ VERSION = '0.1.2'
5
5
  end
data/lib/bingx.rb CHANGED
@@ -4,4 +4,5 @@ require 'httparty'
4
4
 
5
5
  require_relative 'bingx/version'
6
6
  require_relative 'bingx/requests/account'
7
+ require_relative 'bingx/requests/trade'
7
8
  require_relative 'bingx/client'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bingx
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Georgy Yuriev
@@ -39,6 +39,7 @@ files:
39
39
  - lib/bingx.rb
40
40
  - lib/bingx/client.rb
41
41
  - lib/bingx/requests/account.rb
42
+ - lib/bingx/requests/trade.rb
42
43
  - lib/bingx/version.rb
43
44
  - sig/bingx.rbs
44
45
  homepage: https://rubygems.org/gems/bingx