def request(method, path, query = {}, body = nil, headers = {})
      AwsRequest.new(aws_http_connection).tap do |aws_request|
        aws_request.credentials = credentials
        aws_request.path = path
        aws_request.region = region
        aws_request.service = service
        aws_request.method = method
        aws_request.query = query
        aws_request.body = body
        aws_request.headers = headers
        aws_request.make_request
      end
    end
def request(method, path, query = {}, body = nil, headers = {})
      AwsRequest.new(aws_http_connection).tap do |aws_request|
        aws_request.credentials = credentials
        aws_request.path = path
        aws_request.region = region
        aws_request.service = service
        aws_request.method = method
        aws_request.query = query
        aws_request.body = body
        aws_request.headers = headers
        aws_request.make_request
      end
    end
Give the region, service and optionally the AwsCredentials.

 @param [String] region the AWS region (ex. us-east-1)
 @param [String] service the AWS service (ex. sqs)
 @param [AwsCredentials] credentials

 @example
   class Sqs
     include AwsConnection

     def initialize(region)
       super(region, 'sqs')
     end
   end

 Perform an HTTP query to the given path using the given method (GET,
 POST, PUT, DELETE). A hash of query params can be specified. A POST or
 PUT body cna be specified as either a string or a hash of form params. A
 hash of HTTP headers can be specified.

 @param [String] method HTTP method, should be GET, POST, PUT or DELETE
 @param [String] path
 @param [Hash] query HTTP query params to send. Specify these as a hash, do not append them to the path.
 @param [Hash,#to_s] body HTTP request body. This can be form data as a hash or a String. Only applies to POST and PUT HTTP methods.
 @param [Hash] headers additional HTTP headers to send.
 @return [AwsRequest]