class Mixlib::Authentication::HTTPAuthenticationRequest

Constants

MANDATORY_HEADERS

Attributes

request[R]

Public Class Methods

new(request) click to toggle source
# File lib/mixlib/authentication/http_authentication_request.rb, line 29
def initialize(request)
  @request = request
  @request_signature = nil
  validate_headers!
end

Public Instance Methods

content_hash() click to toggle source
# File lib/mixlib/authentication/http_authentication_request.rb, line 63
def content_hash
  headers[:x_ops_content_hash].chomp
end
headers() click to toggle source
# File lib/mixlib/authentication/http_authentication_request.rb, line 35
def headers
  @headers ||= @request.env.inject({}) { |memo, kv| memo[$2.tr("-", "_").downcase.to_sym] = kv[1] if kv[0] =~ /^(HTTP_)(.*)/; memo }
end
host() click to toggle source
# File lib/mixlib/authentication/http_authentication_request.rb, line 59
def host
  headers[:host].chomp
end
http_method() click to toggle source
# File lib/mixlib/authentication/http_authentication_request.rb, line 39
def http_method
  @request.method.to_s
end
path() click to toggle source
# File lib/mixlib/authentication/http_authentication_request.rb, line 43
def path
  @request.path.to_s
end
request_signature() click to toggle source
# File lib/mixlib/authentication/http_authentication_request.rb, line 71
def request_signature
  unless @request_signature
    @request_signature = headers.find_all { |h| h[0].to_s =~ /^x_ops_authorization_/ }
      .sort { |x, y| x.to_s[/\d+/].to_i <=> y.to_s[/\d+/].to_i }.map { |i| i[1] }.join("\n")
    Mixlib::Authentication::Log.trace "Reconstituted (user-supplied) request signature: #{@request_signature}"
  end
  @request_signature
end
server_api_version() click to toggle source
# File lib/mixlib/authentication/http_authentication_request.rb, line 67
def server_api_version
  (headers[:x_ops_server_api_version] || DEFAULT_SERVER_API_VERSION).chomp
end
signing_description() click to toggle source
# File lib/mixlib/authentication/http_authentication_request.rb, line 47
def signing_description
  headers[:x_ops_sign].chomp
end
timestamp() click to toggle source
# File lib/mixlib/authentication/http_authentication_request.rb, line 55
def timestamp
  headers[:x_ops_timestamp].chomp
end
user_id() click to toggle source
# File lib/mixlib/authentication/http_authentication_request.rb, line 51
def user_id
  headers[:x_ops_userid].chomp
end
validate_headers!() click to toggle source
# File lib/mixlib/authentication/http_authentication_request.rb, line 80
def validate_headers!
  missing_headers = MANDATORY_HEADERS - headers.keys
  unless missing_headers.empty?
    missing_headers.map! { |h| h.to_s.upcase }
    raise MissingAuthenticationHeader, "missing required authentication header(s) '#{missing_headers.join("', '")}'"
  end
end