class Kempelen::API::Operations::Base

Attributes

client[RW]
parameters[RW]
query_string[RW]
raw_response[RW]
response_object[RW]
timestamp[RW]

Public Class Methods

new(client) click to toggle source
# File lib/kempelen/API/operations/base.rb, line 17
def initialize(client)
  @client = client
  @parameters = {}
end

Public Instance Methods

create_parameters() click to toggle source
# File lib/kempelen/API/operations/base.rb, line 22
def create_parameters
  @parameters[:service] = client.service_name
  @parameters[:access_key] = client.access_key
  @parameters[:timestamp] = DateTime.now

  string_to_sign = [@parameters[:service], @parameters[:operation], @parameters[:timestamp]].join
  @parameters[:signature] = (Base64.encode64 HMAC::SHA1.digest(client.secret_key, string_to_sign)).strip
end
create_request_string() click to toggle source

TODO: Reduce the complexity of this method.

# File lib/kempelen/API/operations/base.rb, line 32
def create_request_string
  create_parameters

  request_str = ""

  @parameters.each do |name, value|
    aws_name = Kempelen::API::Operations::PARAMETERS[name]
    if !aws_name.nil?
      unless value.nil?
        request_str += "&" unless request_str.empty?
        request_str += "#{aws_name}=#{CGI.escape(value.to_s)}"
      end
    else
      aws_name = Kempelen::API::Operations::ARRAY_PARAMETERS[name]
      unless aws_name.nil?
        value.each_index do |idx|
          hash_value = value[idx]

          if hash_value.respond_to?(:each)
            hash_value.each do |k, v|
              request_str += "&" unless request_str.empty?
              request_str += "#{aws_name}.#{idx + 1}.#{k}=#{CGI.escape(v.to_s)}"
            end
          else
            request_str += "&" unless request_str.empty?
            request_str += "#{aws_name}.#{idx + 1}=#{CGI.escape(hash_value.to_s)}"
          end
        end
      end
    end
  end

  @query_string = "#{client.service_url}?#{request_str}"
end
perform_operation() click to toggle source
# File lib/kempelen/API/operations/base.rb, line 67
def perform_operation
  @raw_response = @client.perform_request(@query_string, @response_object)
end