lib/api_auth/headers.rb in api-auth-2.2.1 vs lib/api_auth/headers.rb in api-auth-2.3.0
- old
+ new
@@ -24,10 +24,12 @@
if defined?(ActionDispatch)
ActionDispatchRequest.new(request)
else
ActionControllerRequest.new(request)
end
+ when /Grape::Request/
+ GrapeRequest.new(request)
when /ActionDispatch::Request/
ActionDispatchRequest.new(request)
when /ActionController::CgiRequest/
ActionControllerRequest.new(request)
when /HTTPI::Request/
@@ -38,28 +40,37 @@
HttpRequest.new(request)
end
return new_request if new_request
return RackRequest.new(request) if request.is_a?(Rack::Request)
+
raise UnknownHTTPRequest, "#{request.class} is not yet supported."
end
private :initialize_request_driver
# Returns the request timestamp
def timestamp
@request.timestamp
end
- def canonical_string(override_method = nil)
+ def canonical_string(override_method = nil, headers_to_sign = [])
request_method = override_method || @request.http_method
raise ArgumentError, 'unable to determine the http method from the request, please supply an override' if request_method.nil?
- [request_method.upcase,
- @request.content_type,
- @request.content_md5,
- parse_uri(@request.original_uri || @request.request_uri),
- @request.timestamp].join(',')
+ headers = @request.fetch_headers
+
+ canonical_array = [request_method.upcase,
+ @request.content_type,
+ @request.content_md5,
+ parse_uri(@request.original_uri || @request.request_uri),
+ @request.timestamp]
+
+ if headers_to_sign.is_a?(Array) && headers_to_sign.any?
+ headers_to_sign.each { |h| canonical_array << headers[h] if headers[h].present? }
+ end
+
+ canonical_array.join(',')
end
# Returns the authorization header from the request's headers
def authorization_header
@request.authorization_header