Class: RightScale::CloudApi::AWS::Route53::RequestSigner

Inherits:
CloudApi::Routine
  • Object
show all
Defined in:
lib/cloud/aws/route53/routines/request_signer.rb

Overview

Route 53 request signer

Defined Under Namespace

Classes: Error

Instance Method Summary collapse

Instance Method Details

#processvoid

This method returns an undefined value.

Authenticates a Route53 request

Examples:

# no example


43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/cloud/aws/route53/routines/request_signer.rb', line 43

def process
  # Fix body
  unless @data[:request][:body]._blank?
    # Make sure 'content-type' is set if we have a body
    @data[:request][:headers].set_if_blank('content-type', 'application/xml' )
    # Fix body if it is a Hash instance
    if @data[:request][:body].is_a?(Hash)
      @data[:request][:body] = Utils::contentify_body(@data[:request][:body], @data[:request][:headers]['content-type'])
    end
    # Calculate 'content-md5' when possible (some API calls wanna have it set)
    if @data[:request][:body].is_a?(String)
      @data[:request][:headers]['content-md5'] = Base64::encode64(Digest::MD5::digest(@data[:request][:body])).strip
    end
  end
  # Set date
  @data[:request][:headers].set_if_blank('x-amz-date', Time::now.utc.httpdate)
  # Set path
  @data[:request][:path] = Utils::join_urn(@data[:connection][:uri].path, @data[:options][:api_version], @data[:request][:relative_path], @data[:request][:params])
  # Sign a request
  Utils::AWS::sign_v4_signature(
    @data[:credentials][:aws_access_key_id],
    @data[:credentials][:aws_secret_access_key],
    @data[:connection][:uri].host,
    @data[:request]
  )
end