bitbns 0.0.1.pre.alpha → 0.0.1.pre.beta

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: bfd9c0df9654dcb1d8e8ad8c7e4feda73c6b32dfd4c3772ca3fcba9a3728b2cc
4
- data.tar.gz: 3566656be7781a6d8e1d657dca4cf1c54569dd640f46004addb2d882f87d5d34
3
+ metadata.gz: 4a7945bb13b36f729af8e5b62409e7c5fb80d3efe0ef90920b9d700d38851ca0
4
+ data.tar.gz: 4fef680b272409df37f137a73862bf2f35a9c4a514ef0a63912f7576a8ced7a5
5
5
  SHA512:
6
- metadata.gz: 4a5a06dcde010daa618a25bdeca0ee2be7562bbd87007fe56205cfdf0f5c24c789bcb872b3a55de013c2f875fac7b1842c917149b9095de01881dc1b7656d8fd
7
- data.tar.gz: fdedbdf90d0f2c4fd367bcfbc291d5c59ac1cec75406113814f00986fefe3429d3d4065c37e8792f3ba9bb359a994c3198b5b9412e30cda07c07f1dd156f47a0
6
+ metadata.gz: fa61ba93de2e53b4662cbbf6492096d2c7196b315ce55c42cc5871c228e407da44848ca6c73321daf0d2ffd311bf9ae202447456e840bdf9ba515506f6453c55
7
+ data.tar.gz: df953480c3cccf35287d9e703ab7fb1b71611f8a958f7edf27784d78dfa6376a84d0513a54b08a164d50ba1ee1a8ec1f60be0692e2184f59774d6dc1af3a34ae
data/lib/bitbns/client.rb CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  require_relative "./requests/base.rb"
4
4
  require_relative "./responses/base.rb"
5
+ require_relative "./utils/signature.rb"
6
+ require_relative "./utils/payload.rb"
5
7
 
6
8
  module BitBns
7
9
  class Client
@@ -20,16 +22,28 @@ module BitBns
20
22
  request_spec.verb,
21
23
  request_spec.url,
22
24
  request_spec.params,
23
- request_spec.headers
24
25
  ]
25
26
 
26
27
  response = Faraday.new.send(*request_txn_modifiers) do |req|
27
- req.body = request_spec.body
28
+ req.headers = generate_headers(request_spec) if request_spec.attach_headers?
29
+ req.body = request_spec.body
28
30
  end
29
31
 
30
32
  request_spec.response_parser.new(response)
31
33
  end
32
34
 
35
+ private
36
+
37
+ def generate_headers(request)
38
+ payload = BitBns::Utils::Payload.new(request).generate!
39
+ signature = BitBns::Utils::Signature.new(payload, @api_secret_key).generate!
40
+ {
41
+ "X-BITBNS-APIKEY" => @api_key,
42
+ "X-BITBNS-PAYLOAD" => payload,
43
+ "X-BITBNS-SIGNATURE" => signature
44
+ }
45
+ end
46
+
33
47
  def parse_request_name(name)
34
48
  "#{REQ_NAMESPACE}::#{name.split("_").map(&:capitalize).join}"
35
49
  end
@@ -2,5 +2,7 @@ module BitBns
2
2
  module Requests
3
3
  require_relative "./request.rb"
4
4
  require_relative "./fetch_markets.rb"
5
+ require_relative "./fetch_tickers.rb"
6
+ require_relative "./fetch_orderbook.rb"
5
7
  end
6
8
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module BitBns
3
4
  module Requests
4
5
  class FetchMarkets < BitBns::Requests::Request
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BitBns
4
+ module Requests
5
+ class FetchMarkets < BitBns::Requests::Request
6
+ def initialize(opts)
7
+ @url = "#{PUB_BASE_URL}/order/fetchOrderbook/"
8
+ @params = { symbol: opts.fetch(:symbol, "BTCUSDT") }
9
+ @headers = {}
10
+ @verb = :get
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BitBns
4
+ module Requests
5
+ class FetchTickers < BitBns::Requests::Request
6
+ def initialize(opts)
7
+ @url = "#{PUB_BASE_URL}/order/fetchTickers/"
8
+ @params = {}
9
+ @headers = {}
10
+ @verb = :get
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BitBns
4
+ module Requests
5
+ class ListOpenLimitOrders < BitBns::Requests::Request
6
+ def initialize(opts)
7
+ @url = "#{API_BASE_URL}/getordersnew"
8
+ @params = {}
9
+ @body = { symbol: opts.fetch(:symbol, "BTC_USDT"), side: request_side(opts), page: opts.fetch(:page, 0) }
10
+ @attach_headers = true
11
+ @verb = :post
12
+ end
13
+
14
+ private
15
+
16
+ def request_side(opts)
17
+ opts[:usdt] ? "usdtListOpenBracketOrders" : "listOpenBracketOrders"
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,10 +1,14 @@
1
1
  module BitBns
2
2
  module Requests
3
3
  class Request
4
- attr_accessor :headers, :verb, :params, :body, :url
5
- API_BASE_URL = "https://api.bitbns.com/api/trade/v%version"
4
+ attr_accessor :verb, :params, :body, :url
5
+ API_BASE_URL = "https://api.bitbns.com/api/trade/v2"
6
6
  PUB_BASE_URL = "https://bitbns.com"
7
7
 
8
+ def attach_headers?
9
+ @attach_headers
10
+ end
11
+
8
12
  def response_parser
9
13
  Kernel.const_get("BitBns::Responses::#{self.class.to_s.split("::").last}")
10
14
  end
@@ -1,6 +1,10 @@
1
+ require 'json'
2
+
1
3
  module BitBns
2
4
  module Responses
3
5
  require_relative "./response.rb"
4
6
  require_relative "./fetch_markets.rb"
7
+ require_relative "./fetch_tickers.rb"
8
+ require_relative "./fetch_orderbook.rb"
5
9
  end
6
10
  end
@@ -0,0 +1,14 @@
1
+
2
+ module BitBns
3
+ module Responses
4
+ class FetchMarkets < BitBns::Responses::Response
5
+ attr_reader :body, :headers, :raw
6
+
7
+ def initialize(response)
8
+ @raw = response
9
+ @body = JSON.parse(response.body)
10
+ @headers = response.headers
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,13 @@
1
+ module BitBns
2
+ module Responses
3
+ class FetchTickers < BitBns::Responses::Response
4
+ attr_reader :body, :headers, :raw
5
+
6
+ def initialize(response)
7
+ @raw = response
8
+ @body = JSON.parse(response.body)
9
+ @headers = response.headers
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,19 @@
1
+ require 'base64'
2
+
3
+ module BitBns::Utils
4
+ class Payload
5
+ def initialize(request)
6
+ @request = request
7
+ end
8
+
9
+ def generate!
10
+ Base64.encode64({timeStamp_nonce: generate_timestamp, body: @request.body.to_json}.to_json)
11
+ end
12
+
13
+ private
14
+
15
+ def generate_timestamp
16
+ String(Integer(Time.now.to_f.round(3) * 1000))
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,13 @@
1
+ require 'openssl'
2
+
3
+ module BitBns::Utils
4
+ class Signature
5
+ def initialize(payload, secret)
6
+ @generated_signature = OpenSSL::HMAC.digest(OpenSSL::Digest.new('sha512'), secret, payload)
7
+ end
8
+
9
+ def generate!
10
+ @generated_signature
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,5 @@
1
+ module BitBns::Utils
2
+ SYMBOLS = [
3
+ "BTC_USDT"
4
+ ]
5
+ end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bitbns
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.pre.alpha
4
+ version: 0.0.1.pre.beta
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sreedev Kodichath
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-04 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2022-01-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: faraday
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 1.8.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 1.8.0
13
27
  description: A Ruby Wrapper around BitBns Crypto Trading APIs
14
28
  email: sreedevpadmakumar@gmail.com
15
29
  executables: []
@@ -20,10 +34,18 @@ files:
20
34
  - lib/bitbns/client.rb
21
35
  - lib/bitbns/requests/base.rb
22
36
  - lib/bitbns/requests/fetch_markets.rb
37
+ - lib/bitbns/requests/fetch_orderbook.rb
38
+ - lib/bitbns/requests/fetch_tickers.rb
39
+ - lib/bitbns/requests/list_open_limit_orders.rb
23
40
  - lib/bitbns/requests/request.rb
24
41
  - lib/bitbns/responses/base.rb
25
42
  - lib/bitbns/responses/fetch_markets.rb
43
+ - lib/bitbns/responses/fetch_orderbook.rb
44
+ - lib/bitbns/responses/fetch_tickers.rb
26
45
  - lib/bitbns/responses/response.rb
46
+ - lib/bitbns/utils/payload.rb
47
+ - lib/bitbns/utils/signature.rb
48
+ - lib/bitbns/utils/symbols.rb
27
49
  homepage: https:/bitbns.com
28
50
  licenses:
29
51
  - MIT