class Amazon::Coral::AwsQuery
Public Class Methods
Creates an Orchestrator
capable of processing AWS/QUERY requests. Possible arguments include:
- :endpoint
-
The HTTP URL at which the service is located.
- :signature_algorithm
-
The
AWS
signature version to be used to sign outgoing requests. Current choices are::V0 :V1 :V2
By default, the version 2 signing algorithm is used. All signing may be disabled by passing the value ‘nil’ as the signature algorithm.
- :aws_access_key
-
An
AWS
access key to associate with every outgoing request. This parameter is optional and may be specified on a per-request basis as well. - :aws_secret_key
-
An
AWS
secret key to associate with every outgoing request. This parameter is optional and may be specified on a per-request basis as well. - :http_client_x509_cert
-
A base64-encoded X509 certificate to sign outgoing requests. Requires that the x509 key also be specified.
- :http_client_x509_key
-
A base64-encoded private key for an X509 certificate to sign outgoing requests. Requires that the x509 certificate also be specified.
- :http_authorization
-
The content of an http-authorization header to send with the request. Used for services which require HTTP basic authentication.
- :ca_file
-
A Certificate Authority file to pass to the
HttpHandler
. - :timeout
-
The socket read timeout to use during service calls (see
HttpHandler
for details) - :connect_timeout
-
A timeout to use for establishing a connection to the service (see
HttpHandler
for details) - :verbose
-
A verbosity flag to pass to the
HttpHandler
.
Example usage:
orchestrator = AwsQuery.new_orchestrator(:endpoint => "http://localhost:8000", :signature_algorithm => :V2) client = ExampleClient.new(orchestrator)
# File lib/amazon/coral/awsquery.rb, line 60 def AwsQuery.new_orchestrator(args) check_args(args) return Orchestrator.new(new_chain(args)) end
Private Class Methods
# File lib/amazon/coral/awsquery.rb, line 117 def AwsQuery.check_args(args) log = LogFactory.getLog('Amazon::Coral::AwsQuery') args.each_key do |key| log.info("Unknown argument: #{key}") unless @@recognized_arg_keys.include?(key) end end
# File lib/amazon/coral/awsquery.rb, line 66 def AwsQuery.new_chain(args) # remap args, add defaults where necessary: # support deprecated :uri mechanism of specifying service endpoint args[:endpoint] = args[:uri] if args[:endpoint].nil? # default to V2 if no algorithm is specified args[:signature_algorithm] = :V2 if args[:signature_algorithm].nil? # support the deprecated mechanism for specifying AWS account information args[:aws_access_key] = args[:access_key] if !args.has_key?(:aws_access_key) && args.has_key?(:access_key) args[:aws_secret_key] = args[:secret_key] if !args.has_key?(:aws_secret_key) && args.has_key?(:secret_key) # build up the chain: chain = [] # allow user to preload identity attributes to be used on all requests identity_args = {} @@identity_arg_keys.each {|k| identity_args[k] = args[k] if args.has_key?(k) } chain << IdentityHandler.new(identity_args) unless identity_args.empty? # set the remote endpoint chain << HttpDestinationHandler.new(args[:endpoint]) # use the AwsQuery protocol chain << AwsQueryHandler.new({:api_version => args[:api_version], :content_type => args[:content_type]}) # select a signing algorithm case args[:signature_algorithm].to_sym when :V0 chain << V0SignatureHandler.new when :V1 chain << V1SignatureHandler.new when :V2 chain << V2SignatureHandler.new end # collect the query string and update the destination URL chain << AwsQueryUriHandler.new # make connection over HTTP chain << HttpHandler.new( {:ca_file => args[:ca_file], :verbose => args[:verbose], :timeout => args[:timeout], :connect_timeout => args[:connect_timeout]} ) return chain end