class StackerBee::HTTPMiddleware::SignedQuery

Public Class Methods

new(app, key) click to toggle source
Calls superclass method
# File lib/stacker_bee/http_middleware/signed_query.rb, line 7
def initialize(app, key)
  @key = key
  fail 'Key cannot be nil' unless @key
  super app
end

Public Instance Methods

call(env) click to toggle source
# File lib/stacker_bee/http_middleware/signed_query.rb, line 13
def call(env)
  sign_uri env[:url]
  @app.call(env)
end
sign_uri(uri) click to toggle source
# File lib/stacker_bee/http_middleware/signed_query.rb, line 18
def sign_uri(uri)
  downcased  = uri.query.downcase
  nonplussed = downcased.gsub('+', '%20')
  signed     = OpenSSL::HMAC.digest('sha1', @key, nonplussed)
  encoded    = Base64.encode64(signed).chomp
  escaped    = CGI.escape(encoded)

  uri.query << "&signature=#{escaped}"
end