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