class BitflyerApi::HTTP::Middleware

Attributes

key[RW]
secret[RW]

Public Class Methods

new(app, key, secret) click to toggle source
Calls superclass method
# File lib/bitflyer_api/http/middleware.rb, line 9
def initialize(app, key, secret)
  super(app)
  @key = key
  @secret = secret
end

Public Instance Methods

call(env) click to toggle source
# File lib/bitflyer_api/http/middleware.rb, line 15
def call(env)
  return @app.call(env) if key.nil? || secret.nil?

  env[:request_headers]["ACCESS-KEY"] = key if key
  env[:request_headers]["ACCESS-TIMESTAMP"] = timestamp
  env[:request_headers]["ACCESS-SIGN"] = signature(env, secret)
  @app.call env
end

Private Instance Methods

signature(env, secret) click to toggle source
# File lib/bitflyer_api/http/middleware.rb, line 26
def signature(env, secret)
  method = env[:method].to_s.upcase
  query = env[:url].query.present? ? "?" + env[:url].query : ""
  path = env[:url].path + query
  body = env[:body] || ""

  OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new("sha256"), secret, "#{timestamp}#{method}#{path}#{body}")
end
timestamp() click to toggle source
# File lib/bitflyer_api/http/middleware.rb, line 35
def timestamp
  Time.now.to_i.to_s
end