class Moguera::Authentication::Request

Attributes

access_key[R]
content_type[R]
http_date[R]
request_method[R]
request_path[R]
secret_access_key[R]
token_prefix[RW]

Public Class Methods

new(access_key:, secret_access_key:, request_path:, request_method:, http_date:, content_type:) click to toggle source
# File lib/moguera/authentication/request.rb, line 6
def initialize(access_key:, secret_access_key:, request_path:, request_method:, http_date:, content_type:)
  require 'time'
  require 'openssl'
  require 'base64'

  @access_key = access_key
  @secret_access_key = secret_access_key
  @request_path = request_path
  @request_method = request_method
  @http_date = http_date
  @content_type = content_type

  @token_prefix = token_prefix || 'MOGUERA'

  validate_parameter!
end

Public Instance Methods

token() click to toggle source
# File lib/moguera/authentication/request.rb, line 26
def token
  raise ParameterInvalid, 'Token prefix required.' if @token_prefix.nil?

  @token_prefix + ' ' + @access_key + ':' + signature
end

Private Instance Methods

signature() click to toggle source
# File lib/moguera/authentication/request.rb, line 34
def signature
  sha1 = OpenSSL::Digest::SHA1.new
  digest = OpenSSL::HMAC.hexdigest(sha1, @secret_access_key, string_to_sign)
  Base64.encode64(digest).strip
end
string_to_sign() click to toggle source
# File lib/moguera/authentication/request.rb, line 40
def string_to_sign
  @access_key + @request_path + @request_method + @http_date + @content_type
end
validate_parameter!() click to toggle source
# File lib/moguera/authentication/request.rb, line 44
def validate_parameter!
  errors = []
  errors << 'Access Key' unless @access_key
  errors << 'Secret Access Key' unless @secret_access_key
  errors << 'Request Path' unless @request_path
  errors << 'Date Header' unless @http_date
  errors << 'Content-Type Header' unless @content_type

  raise ParameterInvalid, 'Missing: ' + errors * ', ' unless errors.empty?
end