Sha256: 7917f2d7d0596c8fb1dd74a8d1f7fb5f263a47f2f9833e2ad66ea10f0e1162c5
Contents?: true
Size: 988 Bytes
Versions: 2
Compression:
Stored size: 988 Bytes
Contents
require "faraday" require "openssl" module BitflyerApi module HTTP class Middleware < Faraday::Middleware attr_accessor :key, :secret def initialize(app, key, secret) super(app) @key = key @secret = secret end 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 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 def timestamp Time.now.to_i.to_s end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
bitflyer_api-0.1.1 | lib/bitflyer_api/http/middleware.rb |
bitflyer_api-0.1.0 | lib/bitflyer_api/http/middleware.rb |