Class: RightScale::CloudApi::MWS::RequestSigner

Inherits:
Routine
  • Object
show all
Defined in:
lib/cloud/mws/base/routines/request_signer.rb

Overview

Request signer for MWS services.

Defined Under Namespace

Classes: Error

Instance Method Summary collapse

Instance Method Details

#processObject

Authenticates an AWS request



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/cloud/mws/base/routines/request_signer.rb', line 37

def process
  # Make sure all the required params are set
  @data[:request][:params]['AWSAccessKeyId'] = @data[:credentials][:aws_access_key_id]
  @data[:request][:params]['Version']      ||= @data[:options][:api_version]
  # Figure out what service is being invoked
  service_path = ''
  if @data[:options][:cloud][:service_path]
    service_path = '%s/%s' % [@data[:options][:cloud][:service_path], @data[:request][:params]['Version']]
  end
  # Compile a final request path
  path = Utils::join_urn(@data[:connection][:uri].path, @data[:request][:relative_path], service_path)
  # Sign the request
  signed_path = Utils::AWS::sign_v2_signature(
    data[:credentials][:aws_secret_access_key],
    data[:request][:params] || {},
    data[:request][:verb],
    data[:connection][:uri].host,
    path
  )
  @data[:request][:path] = '%s?%s' % [path, signed_path]
end