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