class Faraday::Middleware::Escher::RequestSigner
Public Class Methods
new(app, options={}, &active_key)
click to toggle source
Calls superclass method
Faraday::Middleware::Escher::Base::new
# File lib/faraday/middleware/escher/request_signer.rb, line 4 def initialize(app, options={}, &active_key) super(app, options) active_key_cons = active_key || options[:active_key] || options[:key] raise('Escher active key constructor must be a lambda/block') unless active_key_cons.is_a?(Proc) @escher_active_key_constructor = active_key_cons end
Public Instance Methods
call(env)
click to toggle source
# File lib/faraday/middleware/escher/request_signer.rb, line 14 def call(env) escher = ::Escher::Auth.new(@escher_credential_scope, @escher_options) uri_path = env[:url].path endpoint = uri_path.empty? ? '/' : uri_path endpoint_with_query = [endpoint, env[:url].query].join('?') request_headers = Hash[env[:request_headers].map { |k, v| [k.to_s.downcase, v] }] request_headers['host'] ||= @host || env[:url].host request_data = { uri: endpoint_with_query, method: env[:method].to_s.upcase, headers: request_headers.to_a } request_data[:body]= env[:body] unless env[:body].nil? escher.sign!( request_data, @escher_active_key_constructor.call, request_data[:headers].map { |ary| ary[0] } ) env[:request_headers].merge!(request_data[:headers]) return @app.call(env) end