class Idcf::FaradayMiddleware::Signature

ILB, DNS, Your(Billing)用のシグネチャ生成を実施します。

Public Class Methods

new(app, keys = {}) click to toggle source
Calls superclass method
# File lib/idcf/faraday_middleware/signature.rb, line 10
def initialize(app, keys = {})
  super(app)
  @api_key    = keys[:api_key]
  @secret_key = keys[:secret_key]
end

Public Instance Methods

call(env) click to toggle source
# File lib/idcf/faraday_middleware/signature.rb, line 16
def call(env)
  raise InvalidKeys, errors.messages.to_s if invalid?

  env[:request_headers][HEADER_API_KEY]   = api_key
  env[:request_headers][HEADER_EXPIRES]   = expires
  env[:request_headers][HEADER_SIGNATURE] = signature env

  @app.call env
end

Private Instance Methods

expires() click to toggle source
# File lib/idcf/faraday_middleware/signature.rb, line 48
def expires
  (Time.now.to_i + SIGNATURE_TTL).to_s
end
signature(env) click to toggle source
# File lib/idcf/faraday_middleware/signature.rb, line 28
def signature(env)
  Base64.strict_encode64(
    OpenSSL::HMAC.digest(
      OpenSSL::Digest::SHA256.new,
      secret_key,
      signature_seed(env)
    )
  )
end
signature_seed(env) click to toggle source
# File lib/idcf/faraday_middleware/signature.rb, line 38
def signature_seed(env)
  [
    env.method.to_s.upcase,
    env.url.path,
    api_key,
    env[:request_headers][HEADER_EXPIRES],
    env.url.query.to_s.gsub('+', '%20')
  ].join("\n")
end