Class: ApiAuth::Headers
- Inherits:
-
Object
- Object
- ApiAuth::Headers
- Includes:
- RequestDrivers
- Defined in:
- lib/api_auth/headers.rb
Overview
Builds the canonical string given a request object.
Instance Method Summary collapse
-
#authorization_header ⇒ Object
Returns the authorization header from the request’s headers.
- #calculate_md5 ⇒ Object
-
#canonical_string ⇒ Object
Returns the canonical string computed from the request’s headers.
-
#initialize(request) ⇒ Headers
constructor
A new instance of Headers.
- #md5_mismatch? ⇒ Boolean
- #set_date ⇒ Object
-
#sign_header(header) ⇒ Object
Sets the request’s authorization header with the passed in value.
-
#timestamp ⇒ Object
Returns the request timestamp.
Constructor Details
#initialize(request) ⇒ Headers
Returns a new instance of Headers.
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/api_auth/headers.rb', line 8 def initialize(request) @original_request = request case request.class.to_s when /Net::HTTP/ @request = NetHttpRequest.new(request) when /RestClient/ @request = RestClientRequest.new(request) when /Curl::Easy/ @request = CurbRequest.new(request) when /ActionController::Request/ @request = ActionControllerRequest.new(request) when /ActionController::TestRequest/ if defined?(ActionDispatch) @request = ActionDispatchRequest.new(request) else @request = ActionControllerRequest.new(request) end when /ActionDispatch::Request/ @request = ActionDispatchRequest.new(request) when /Rack::Request/ @request = RackRequest.new(request) when /ActionController::CgiRequest/ @request = ActionControllerRequest.new(request) when /HTTPI::Request/ @request = HttpiRequest.new(request) when /Sinatra::Request/ @request = RackRequest.new(request) else raise UnknownHTTPRequest, "#{request.class.to_s} is not yet supported." end true end |
Instance Method Details
#authorization_header ⇒ Object
Returns the authorization header from the request’s headers
57 58 59 |
# File 'lib/api_auth/headers.rb', line 57 def @request. end |
#calculate_md5 ⇒ Object
65 66 67 |
# File 'lib/api_auth/headers.rb', line 65 def calculate_md5 @request.populate_content_md5 if @request.content_md5.empty? end |
#canonical_string ⇒ Object
Returns the canonical string computed from the request’s headers
48 49 50 51 52 53 54 |
# File 'lib/api_auth/headers.rb', line 48 def canonical_string [ @request.content_type, @request.content_md5, @request.request_uri.gsub(/https?:\/\/[^(,|\?|\/)]*/,''), # remove host @request. ].join(",") end |
#md5_mismatch? ⇒ Boolean
69 70 71 72 73 74 75 |
# File 'lib/api_auth/headers.rb', line 69 def md5_mismatch? if @request.content_md5.empty? false else @request.md5_mismatch? end end |
#set_date ⇒ Object
61 62 63 |
# File 'lib/api_auth/headers.rb', line 61 def set_date @request.set_date if @request..empty? end |
#sign_header(header) ⇒ Object
Sets the request’s authorization header with the passed in value. The header should be the ApiAuth HMAC signature.
This will return the original request object with the signed Authorization header already in place.
82 83 84 |
# File 'lib/api_auth/headers.rb', line 82 def sign_header(header) @request.set_auth_header header end |
#timestamp ⇒ Object
Returns the request timestamp
43 44 45 |
# File 'lib/api_auth/headers.rb', line 43 def @request. end |