Class: SnapTrade::ApiClientCustom

Inherits:
Object
  • Object
show all
Defined in:
lib/snaptrade/api_client_custom.rb

Class Method Summary collapse

Class Method Details

.request_hook(request, configuration) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/snaptrade/api_client_custom.rb', line 17

def self.request_hook(request, configuration)
  request.params[:timestamp] = Time.now.to_i
  path = request.path[request.path.index('/api/v1/')..-1]
  query = Faraday::Utils.build_query(request.params)
  sig_object = {
    "content" => request.body.nil? || request.body.empty? ? nil : Hash[JSON.parse(request.body).sort],
    "path" => path,
    "query" => query
  }
  sig_content = JSON.generate(sig_object, sort_by: :to_s)
  sig_digest = OpenSSL::HMAC.digest(OpenSSL::Digest::SHA256.new, configuration.consumer_key, sig_content)
  signature = Base64.encode64(sig_digest).strip()
  request.headers[:Signature] = signature
end