class Kucoin::Api::Middleware::AuthRequest

Public Class Methods

new(app, api_key, api_secret, api_passphrase) click to toggle source
Calls superclass method
# File lib/kucoin/api/middleware/auth_request.rb, line 6
def initialize app, api_key, api_secret, api_passphrase
  super(app)
  @api_key = api_key.to_s
  @api_secret = api_secret.to_s
  @api_passphrase = api_passphrase.to_s
end

Public Instance Methods

call(env) click to toggle source
# File lib/kucoin/api/middleware/auth_request.rb, line 13
def call env
  raise Kucoin::Api::MissingApiKeyError.new('API KEY not provided') if @api_key.empty?
  raise Kucoin::Api::MissingApiSecretError.new('API SECRET not provided') if @api_secret.empty?
  raise Kucoin::Api::MissingApiPassphraseError.new('API PASSPHRASE not provided') if @api_passphrase.empty?
  env[:request_headers]['KC-API-KEY'] = @api_key
  env[:request_headers]['KC-API-SIGN'] = signature(env)
  env[:request_headers]['KC-API-PASSPHRASE'] = @api_passphrase
  @app.call env
end

Private Instance Methods

query_string(env) click to toggle source
# File lib/kucoin/api/middleware/auth_request.rb, line 33
def query_string env
  return if [:get, :delete].include?(env.method.to_sym)
  params = {}
  begin
    params.merge!(::JSON.parse(env.body.to_s))
  rescue JSON::ParserError => e
  end
  params.to_json
end
signature(env) click to toggle source
# File lib/kucoin/api/middleware/auth_request.rb, line 25
def signature env
  Base64.strict_encode64(OpenSSL::HMAC.digest(OpenSSL::Digest.new('sha256'), @api_secret, str_to_sign(env)))
end
str_to_sign(env) click to toggle source
# File lib/kucoin/api/middleware/auth_request.rb, line 29
def str_to_sign env
  "#{env[:request_headers]['KC-API-TIMESTAMP']}#{env.method.upcase}#{env.url.request_uri}#{query_string(env)}"
end