# File lib/AWS.rb, line 231
231:       def make_request(action, params, data='')
232: 
233:         @http.start do
234: 
235:           # remove any keys that have nil or empty values
236:           params.reject! { |key, value| value.nil? or value.empty?}
237: 
238:           params.merge!( {"Action" => action,
239:                           "SignatureVersion" => "2",
240:                           "SignatureMethod" => 'HmacSHA1',
241:                           "AWSAccessKeyId" => @access_key_id,
242:                           "Version" => api_version,
243:                           "Timestamp"=>Time.now.getutc.iso8601} )
244: 
245:           sig = get_aws_auth_param(params, @secret_access_key, @server)
246: 
247:           query = params.sort.collect do |param|
248:             CGI::escape(param[0]) + "=" + CGI::escape(param[1])
249:           end.join("&") + "&Signature=" + sig
250: 
251:           req = Net::HTTP::Post.new("/")
252:           req.content_type = 'application/x-www-form-urlencoded'
253:           req['User-Agent'] = "github-amazon-ec2-ruby-gem"
254: 
255:           response = @http.request(req, query)
256: 
257:           # Make a call to see if we need to throw an error based on the response given by EC2
258:           # All error classes are defined in EC2/exceptions.rb
259:           aws_error?(response)
260:           return response
261: 
262:         end
263: 
264:       end