aws-sdk 1.5.8 → 1.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/aws.rb +2 -0
- data/lib/aws/api_config/Route53-2012-02-29.yml +348 -0
- data/lib/aws/auto_scaling/client.rb +362 -588
- data/lib/aws/cloud_formation/client.rb +155 -224
- data/lib/aws/cloud_watch/client.rb +156 -229
- data/lib/aws/core.rb +67 -52
- data/lib/aws/core/client.rb +81 -82
- data/lib/aws/core/collection/with_limit_and_next_token.rb +2 -2
- data/lib/aws/core/configuration.rb +75 -72
- data/lib/aws/core/http/net_http_handler.rb +3 -3
- data/lib/aws/core/http/request.rb +107 -138
- data/lib/aws/core/inflection.rb +3 -3
- data/lib/aws/core/json_client.rb +106 -0
- data/lib/aws/core/option_grammar.rb +10 -1
- data/lib/aws/core/options/validator.rb +140 -0
- data/lib/aws/core/options/xml_serializer.rb +98 -0
- data/lib/aws/core/query_client.rb +131 -0
- data/lib/aws/core/rest_client.rb +90 -0
- data/lib/aws/core/rest_client/input_handler.rb +145 -0
- data/lib/aws/core/rest_client/output_handler.rb +43 -0
- data/lib/aws/core/signature/version_2.rb +7 -7
- data/lib/aws/core/signature/version_3.rb +5 -1
- data/lib/aws/core/signature/version_3_https.rb +51 -0
- data/lib/aws/core/signature/version_4.rb +5 -22
- data/lib/aws/core/signer.rb +1 -1
- data/lib/aws/core/uri_escape.rb +2 -0
- data/lib/aws/core/xml/frame.rb +8 -8
- data/lib/aws/core/xml/grammar.rb +8 -3
- data/lib/aws/dynamo_db/client.rb +600 -662
- data/lib/aws/ec2/client.rb +2688 -3492
- data/lib/aws/ec2/request.rb +0 -1
- data/lib/aws/elb/client.rb +280 -407
- data/lib/aws/emr/client.rb +7 -7
- data/lib/aws/iam/client.rb +822 -1268
- data/lib/aws/route_53.rb +71 -0
- data/lib/aws/route_53/client.rb +272 -0
- data/lib/aws/route_53/config.rb +18 -0
- data/lib/aws/route_53/errors.rb +22 -0
- data/lib/aws/route_53/request.rb +23 -0
- data/lib/aws/s3/object_version_collection.rb +6 -6
- data/lib/aws/s3/paginated_collection.rb +1 -1
- data/lib/aws/s3/request.rb +10 -5
- data/lib/aws/simple_db/client.rb +184 -234
- data/lib/aws/simple_email_service/client.rb +147 -238
- data/lib/aws/simple_workflow/client.rb +997 -1191
- data/lib/aws/sns/client.rb +176 -264
- data/lib/aws/sqs/client.rb +162 -253
- data/lib/aws/sqs/queue.rb +1 -1
- data/lib/aws/sqs/request.rb +4 -0
- data/lib/aws/sts/client.rb +57 -66
- metadata +95 -71
- data/lib/aws/core/client/query_json.rb +0 -112
- data/lib/aws/core/client/query_xml.rb +0 -122
@@ -14,11 +14,11 @@
|
|
14
14
|
module AWS
|
15
15
|
module Core
|
16
16
|
module Collection
|
17
|
-
|
17
|
+
|
18
18
|
# = Collection::WithLimitAndNextToken
|
19
19
|
#
|
20
20
|
# This module is used by collections where the service may truncate
|
21
|
-
# responses but that also accept a upper limit of results to
|
21
|
+
# responses but that also accept a upper limit of results to
|
22
22
|
# return in a single request.
|
23
23
|
#
|
24
24
|
# See {AWS::Core::Collection} for documentation on the available
|
@@ -55,7 +55,7 @@ module AWS
|
|
55
55
|
#
|
56
56
|
# The global default configuration can be found at {AWS.config}
|
57
57
|
#
|
58
|
-
# @attr_reader [String,nil] access_key_id (nil)
|
58
|
+
# @attr_reader [String,nil] access_key_id (nil)
|
59
59
|
# AWS access key id credential.
|
60
60
|
#
|
61
61
|
# @attr_reader [String,nil] secret_access_key (nil)
|
@@ -70,7 +70,7 @@ module AWS
|
|
70
70
|
# The service endpoint for AWS CloudFormation.
|
71
71
|
#
|
72
72
|
# @attr_reader [String] dynamo_db_endpoint ('dynamodb.us-east-1.amazonaws.com')
|
73
|
-
# The service endpoint for Amazon DynamoDB.
|
73
|
+
# The service endpoint for Amazon DynamoDB.
|
74
74
|
#
|
75
75
|
# @attr_reader [String] dynamo_db_retry_throughput_errors (true) When
|
76
76
|
# true, AWS::DynamoDB::Errors::ProvisionedThroughputExceededException
|
@@ -80,7 +80,7 @@ module AWS
|
|
80
80
|
# The service endpoint for Amazon EC2.
|
81
81
|
#
|
82
82
|
# @attr_reader [String] elb_endpoint ('elasticloadbalancing.us-east-1.amazonaws.com')
|
83
|
-
# The service endpoint for Elastic Load Balancing.
|
83
|
+
# The service endpoint for Elastic Load Balancing.
|
84
84
|
#
|
85
85
|
# @attr_reader [Object] http_handler The http handler that sends requests
|
86
86
|
# to AWS. Defaults to an HTTP handler built on net/http.
|
@@ -90,11 +90,11 @@ module AWS
|
|
90
90
|
# longer be used.
|
91
91
|
#
|
92
92
|
# @attr_reader [Integer] http_open_timeout The number of seconds before
|
93
|
-
# the +http_handler+ should timeout while trying to open a new HTTP
|
93
|
+
# the +http_handler+ should timeout while trying to open a new HTTP
|
94
94
|
# sesssion.
|
95
95
|
#
|
96
96
|
# @attr_reader [Integer] http_read_timeout The number of seconds before
|
97
|
-
# the +http_handler+ should timeout while waiting for a HTTP
|
97
|
+
# the +http_handler+ should timeout while waiting for a HTTP
|
98
98
|
# response.
|
99
99
|
#
|
100
100
|
# @attr_reader [Boolean] http_wire_trace When +true+, the http handler
|
@@ -111,13 +111,16 @@ module AWS
|
|
111
111
|
# @attr_reader [LogFormatter] log_formatter The log message formatter.
|
112
112
|
#
|
113
113
|
# @attr_reader [Integer] max_retries (3) The maximum number of times
|
114
|
-
# service errors (500) should be retried. There is an exponential
|
114
|
+
# service errors (500) should be retried. There is an exponential
|
115
115
|
# backoff in between service request retries, so the more retries the
|
116
116
|
# longer it can take to fail.
|
117
117
|
#
|
118
|
-
# @attr_reader [URI,nil] proxy_uri (nil) The URI of the proxy
|
118
|
+
# @attr_reader [URI,nil] proxy_uri (nil) The URI of the proxy
|
119
119
|
# to send service requests through.
|
120
120
|
#
|
121
|
+
# @attr_reader [URI,nil] route_53_endpoint ('route53.amazonaws.com')
|
122
|
+
# The service endpoint for Amazon Route 53.
|
123
|
+
#
|
121
124
|
# @attr_reader [String] s3_endpoint ('s3.amazonaws.com')
|
122
125
|
# The service endpoint for Amazon S3.
|
123
126
|
#
|
@@ -125,19 +128,19 @@ module AWS
|
|
125
128
|
# +true+, requests will always use path style. This can be useful
|
126
129
|
# for testing environments.
|
127
130
|
#
|
128
|
-
# @attr_reader [Integer] s3_multipart_max_parts (1000)
|
129
|
-
# The maximum number of parts to split a file into when uploading
|
131
|
+
# @attr_reader [Integer] s3_multipart_max_parts (1000)
|
132
|
+
# The maximum number of parts to split a file into when uploading
|
130
133
|
# in parts to S3.
|
131
134
|
#
|
132
135
|
# @attr_reader [Integer] s3_multipart_threshold (16777216) When uploading
|
133
|
-
# data to S3, if the number of bytes to send exceedes
|
136
|
+
# data to S3, if the number of bytes to send exceedes
|
134
137
|
# +:s3_multipart_threshold+ then a multi part session is automatically
|
135
138
|
# started and the data is sent up in chunks. The size of each part
|
136
|
-
# is specified by +:s3_multipart_min_part_size+. Defaults to
|
139
|
+
# is specified by +:s3_multipart_min_part_size+. Defaults to
|
137
140
|
# 16777216 (16MB).
|
138
141
|
#
|
139
|
-
# @attr_reader [Integer] s3_multipart_min_part_size (5242880)
|
140
|
-
# The absolute minimum size (in bytes) each S3 multipart
|
142
|
+
# @attr_reader [Integer] s3_multipart_min_part_size (5242880)
|
143
|
+
# The absolute minimum size (in bytes) each S3 multipart
|
141
144
|
# segment should be defaults to 5242880 (5MB).
|
142
145
|
#
|
143
146
|
# @attr_reader [Symbol] s3_server_side_encryption The algorithm to
|
@@ -161,7 +164,7 @@ module AWS
|
|
161
164
|
# s3 = AWS::S3.new(:s3_server_side_encryption => :aes256)
|
162
165
|
#
|
163
166
|
# @attr_reader [String] simple_db_endpoint ('sdb.amazonaws.com')
|
164
|
-
# The service endpoint for Amazon SimpleDB.
|
167
|
+
# The service endpoint for Amazon SimpleDB.
|
165
168
|
#
|
166
169
|
# @attr_reader [Boolean] simple_db_consistent_reads (false) Determines
|
167
170
|
# if all SimpleDB read requests should be done consistently.
|
@@ -173,10 +176,10 @@ module AWS
|
|
173
176
|
# @attr_reader [String] simple_workflow_endpoint ('swf.us-east-1.amazonaws.com')
|
174
177
|
# The service endpoint for Amazon Simple Workflow Service.
|
175
178
|
#
|
176
|
-
# @attr_reader [CredentialProvider::Provider] credential_provider
|
179
|
+
# @attr_reader [CredentialProvider::Provider] credential_provider
|
177
180
|
# Returns the object that is responsible for loading credentials.
|
178
181
|
#
|
179
|
-
# @attr_reader [String] ssl_ca_file The path to a CA cert bundle in
|
182
|
+
# @attr_reader [String] ssl_ca_file The path to a CA cert bundle in
|
180
183
|
# PEM format.
|
181
184
|
#
|
182
185
|
# If +ssl_verify_peer+ is true (the default) this bundle will be
|
@@ -184,10 +187,10 @@ module AWS
|
|
184
187
|
# The AWS SDK for Ruby ships with a CA cert bundle, which is the
|
185
188
|
# default value for this option.
|
186
189
|
#
|
187
|
-
# @attr_reader [String] ssl_ca_path (nil)
|
190
|
+
# @attr_reader [String] ssl_ca_path (nil)
|
188
191
|
# The path the a CA cert directory.
|
189
192
|
#
|
190
|
-
# @attr_reader [Boolean] ssl_verify_peer (true) When +true+
|
193
|
+
# @attr_reader [Boolean] ssl_verify_peer (true) When +true+
|
191
194
|
# the HTTP handler validate server certificates for HTTPS requests.
|
192
195
|
#
|
193
196
|
# This option should only be disabled for diagnostic purposes;
|
@@ -206,22 +209,22 @@ module AWS
|
|
206
209
|
# The service endpoint for Amazon SQS.
|
207
210
|
#
|
208
211
|
# @attr_reader [String] sts_endpoint ('sts.amazonaws.com')
|
209
|
-
# The service endpoint for AWS Security Token Service.
|
212
|
+
# The service endpoint for AWS Security Token Service.
|
210
213
|
#
|
211
214
|
# @attr_reader [Boolean] use_ssl (true) When +true+, all requests
|
212
215
|
# to AWS are sent using HTTPS instead vanilla HTTP.
|
213
216
|
#
|
214
|
-
# @attr_reader [String] user_agent_prefix (nil) A string prefix to
|
217
|
+
# @attr_reader [String] user_agent_prefix (nil) A string prefix to
|
215
218
|
# append to all requets against AWS services. This should be set
|
216
219
|
# for clients and applications built ontop of the aws-sdk gem.
|
217
220
|
#
|
218
221
|
class Configuration
|
219
|
-
|
222
|
+
|
220
223
|
# Creates a new Configuration object.
|
221
224
|
# @param options (see AWS.config)
|
222
225
|
# @option options (see AWS.config)
|
223
226
|
def initialize options = {}
|
224
|
-
|
227
|
+
|
225
228
|
@created = options.delete(:__created__) || {}
|
226
229
|
|
227
230
|
# :signer is now a deprecated option, this ensures it will still
|
@@ -237,7 +240,7 @@ module AWS
|
|
237
240
|
supplied[opt_name] = value
|
238
241
|
end
|
239
242
|
end
|
240
|
-
|
243
|
+
|
241
244
|
end
|
242
245
|
|
243
246
|
# @return [Hash] Returns a hash with your configured credentials.
|
@@ -250,7 +253,7 @@ module AWS
|
|
250
253
|
end
|
251
254
|
credentials
|
252
255
|
end
|
253
|
-
|
256
|
+
|
254
257
|
# Used to create a new Configuration object with the given modifications.
|
255
258
|
# The current configuration object is not modified.
|
256
259
|
#
|
@@ -272,20 +275,20 @@ module AWS
|
|
272
275
|
# @return [Configuration] Copies the current configuration and returns
|
273
276
|
# a new one with modifications as provided in +:options+.
|
274
277
|
def with options = {}
|
275
|
-
|
278
|
+
|
276
279
|
# symbolize option keys
|
277
280
|
options = options.inject({}) {|h,kv| h[kv.first.to_sym] = kv.last; h }
|
278
|
-
|
281
|
+
|
279
282
|
values = supplied.merge(options)
|
280
|
-
|
283
|
+
|
281
284
|
if supplied == values
|
282
285
|
self # nothing changed
|
283
286
|
else
|
284
287
|
self.class.new(values.merge(:__created__ => @created.dup))
|
285
288
|
end
|
286
|
-
|
289
|
+
|
287
290
|
end
|
288
|
-
|
291
|
+
|
289
292
|
# @return [Hash] Returns a hash of all configuration values.
|
290
293
|
def to_h
|
291
294
|
self.class.accepted_options.inject({}) do |h,k|
|
@@ -293,40 +296,40 @@ module AWS
|
|
293
296
|
end
|
294
297
|
end
|
295
298
|
alias_method :to_hash, :to_h
|
296
|
-
|
299
|
+
|
297
300
|
# @return [Boolean] Returns true if the two configuration objects have
|
298
301
|
# the same values.
|
299
302
|
def eql? other
|
300
303
|
other.is_a?(self.class) and self.supplied == other.supplied
|
301
304
|
end
|
302
305
|
alias_method :==, :eql?
|
303
|
-
|
306
|
+
|
304
307
|
# @private
|
305
308
|
def inspect
|
306
309
|
"<#{self.class.name}>"
|
307
310
|
end
|
308
|
-
|
311
|
+
|
309
312
|
protected
|
310
313
|
|
311
314
|
def supplied
|
312
315
|
@supplied ||= {}
|
313
316
|
end
|
314
|
-
|
317
|
+
|
315
318
|
class << self
|
316
|
-
|
319
|
+
|
317
320
|
# @private
|
318
321
|
def accepted_options
|
319
322
|
@options ||= Set.new
|
320
323
|
end
|
321
|
-
|
324
|
+
|
322
325
|
# @private
|
323
326
|
def add_option name, default_value = nil, options = {}, &transform
|
324
|
-
|
327
|
+
|
325
328
|
accepted_options << name
|
326
|
-
|
329
|
+
|
327
330
|
define_method(name) do |&default_override|
|
328
331
|
|
329
|
-
value =
|
332
|
+
value =
|
330
333
|
if supplied.has_key?(name)
|
331
334
|
supplied[name]
|
332
335
|
elsif default_override
|
@@ -338,35 +341,35 @@ module AWS
|
|
338
341
|
transform ? transform.call(self, value) : value
|
339
342
|
|
340
343
|
end
|
341
|
-
|
344
|
+
|
342
345
|
alias_method("#{name}?", name) if options[:boolean]
|
343
|
-
|
346
|
+
|
344
347
|
end
|
345
|
-
|
348
|
+
|
346
349
|
# Configuration options that have dependencies are re-recreated
|
347
350
|
# anytime one of their dependendent configuration values are
|
348
351
|
# changed.
|
349
352
|
# @private
|
350
353
|
def add_option_with_needs name, needs, &create_block
|
351
|
-
|
354
|
+
|
352
355
|
accepted_options << name
|
353
|
-
|
356
|
+
|
354
357
|
define_method(name) do
|
355
|
-
|
358
|
+
|
356
359
|
return supplied[name] if supplied.has_key?(name)
|
357
|
-
|
360
|
+
|
358
361
|
needed = needs.inject({}) {|h,need| h.merge(need => send(need)) }
|
359
|
-
|
362
|
+
|
360
363
|
unless @created.key?(name) and @created[name][:needed] == needed
|
361
364
|
@created[name] = {}
|
362
365
|
@created[name][:object] = create_block.call(self,needed)
|
363
366
|
@created[name][:needed] = needed
|
364
367
|
end
|
365
|
-
|
368
|
+
|
366
369
|
@created[name][:object]
|
367
|
-
|
370
|
+
|
368
371
|
end
|
369
|
-
|
372
|
+
|
370
373
|
end
|
371
374
|
|
372
375
|
def add_service name, ruby_name, default_endpoint
|
@@ -389,7 +392,7 @@ module AWS
|
|
389
392
|
'us-gov-west-1' # e.g. iam.us-gov.amazonaws.com
|
390
393
|
end
|
391
394
|
elsif matches = endpoint.match(/^.+\.(.+)\.amazonaws.com$/)
|
392
|
-
matches[1]
|
395
|
+
matches[1]
|
393
396
|
else
|
394
397
|
'us-east-1'
|
395
398
|
end
|
@@ -400,8 +403,8 @@ module AWS
|
|
400
403
|
:"#{ruby_name}_endpoint",
|
401
404
|
:"#{ruby_name}_port",
|
402
405
|
:"#{ruby_name}_region",
|
403
|
-
:credential_provider,
|
404
|
-
:http_handler,
|
406
|
+
:credential_provider,
|
407
|
+
:http_handler,
|
405
408
|
:http_read_timeout,
|
406
409
|
:log_formatter,
|
407
410
|
:log_level,
|
@@ -416,27 +419,27 @@ module AWS
|
|
416
419
|
:user_agent_prefix,
|
417
420
|
]
|
418
421
|
|
419
|
-
create_block = lambda do |config,client_options|
|
422
|
+
create_block = lambda do |config,client_options|
|
420
423
|
AWS.const_get(name)::Client.new(:config => config)
|
421
424
|
end
|
422
425
|
|
423
426
|
add_option_with_needs :"#{ruby_name}_client", needs, &create_block
|
424
427
|
|
425
428
|
end
|
426
|
-
|
429
|
+
|
427
430
|
end
|
428
431
|
|
429
432
|
add_option :access_key_id
|
430
|
-
|
433
|
+
|
431
434
|
add_option :secret_access_key
|
432
|
-
|
435
|
+
|
433
436
|
add_option :session_token
|
434
|
-
|
437
|
+
|
435
438
|
add_option_with_needs :credential_provider,
|
436
439
|
[:access_key_id, :secret_access_key, :session_token] do |cfg,static_creds|
|
437
440
|
|
438
441
|
CredentialProviders::DefaultProvider.new(static_creds)
|
439
|
-
|
442
|
+
|
440
443
|
end
|
441
444
|
|
442
445
|
add_option :http_open_timeout, 15
|
@@ -447,41 +450,41 @@ module AWS
|
|
447
450
|
|
448
451
|
add_option :http_wire_trace, false, :boolean => true
|
449
452
|
|
450
|
-
add_option_with_needs :http_handler,
|
453
|
+
add_option_with_needs :http_handler,
|
451
454
|
[
|
452
|
-
:http_open_timeout,
|
455
|
+
:http_open_timeout,
|
453
456
|
:http_idle_timeout,
|
454
|
-
:http_wire_trace,
|
455
|
-
:logger,
|
457
|
+
:http_wire_trace,
|
458
|
+
:logger,
|
456
459
|
] do |config,handler_options|
|
457
460
|
|
458
461
|
Http::NetHttpHandler.new(handler_options)
|
459
462
|
|
460
463
|
end
|
461
|
-
|
464
|
+
|
462
465
|
add_option :logger
|
463
466
|
|
464
467
|
add_option :log_level, :info
|
465
468
|
|
466
469
|
add_option :log_formatter, LogFormatter.default
|
467
|
-
|
470
|
+
|
468
471
|
add_option :max_retries, 3
|
469
|
-
|
472
|
+
|
470
473
|
add_option :proxy_uri do |config,uri| uri ? URI.parse(uri.to_s) : nil end
|
471
|
-
|
474
|
+
|
472
475
|
add_option :ssl_verify_peer, true, :boolean => true
|
473
|
-
|
474
|
-
add_option :ssl_ca_file,
|
476
|
+
|
477
|
+
add_option :ssl_ca_file,
|
475
478
|
File.expand_path(File.dirname(__FILE__) + "/../../../ca-bundle.crt")
|
476
479
|
|
477
480
|
add_option :ssl_ca_path
|
478
|
-
|
481
|
+
|
479
482
|
add_option :stub_requests, false, :boolean => true
|
480
|
-
|
483
|
+
|
481
484
|
add_option :use_ssl, true, :boolean => true
|
482
|
-
|
485
|
+
|
483
486
|
add_option :user_agent_prefix
|
484
|
-
|
487
|
+
|
485
488
|
end
|
486
489
|
end
|
487
490
|
end
|
@@ -16,7 +16,7 @@ require 'net/http/connection_pool'
|
|
16
16
|
module AWS
|
17
17
|
module Core
|
18
18
|
module Http
|
19
|
-
|
19
|
+
|
20
20
|
# = NetHttpHandler
|
21
21
|
#
|
22
22
|
# This is the default HTTP handler for the aws-sdk gem. It uses
|
@@ -32,9 +32,9 @@ module AWS
|
|
32
32
|
|
33
33
|
# @return [Net::HTTP::ConnectionPool]
|
34
34
|
attr_reader :pool
|
35
|
-
|
35
|
+
|
36
36
|
# Given a populated request object and an empty response object,
|
37
|
-
# this method will make the request and them populate the
|
37
|
+
# this method will make the request and them populate the
|
38
38
|
# response.
|
39
39
|
# @param [Request] request
|
40
40
|
# @param [Response] response
|
@@ -14,53 +14,44 @@
|
|
14
14
|
module AWS
|
15
15
|
module Core
|
16
16
|
module Http
|
17
|
-
|
17
|
+
|
18
18
|
# Base class for all service reqeusts. This class describes
|
19
19
|
# a basic HTTP request, but will not make one. It is consumed
|
20
20
|
# by a HTTP handler class that sends the actual request
|
21
21
|
# and parses the actual response.
|
22
22
|
class Request
|
23
|
-
|
23
|
+
|
24
24
|
# Returns a new empty http request object.
|
25
25
|
def initialize
|
26
|
-
@
|
26
|
+
@default_read_timeout = 60
|
27
27
|
@http_method = 'POST'
|
28
|
-
@
|
28
|
+
@use_ssl = true
|
29
29
|
@headers = CaseInsensitiveHash.new
|
30
|
+
@uri = '/'
|
30
31
|
@params = []
|
31
|
-
@use_ssl = true
|
32
|
-
@port = nil
|
33
|
-
@default_read_timeout = 60
|
34
32
|
end
|
35
33
|
|
36
34
|
# @return [Integer] The number of seconds the service has to respond
|
37
|
-
# before a timeout error is raised on the request. Defaults to
|
35
|
+
# before a timeout error is raised on the request. Defaults to
|
38
36
|
# 60 seconds.
|
39
37
|
attr_accessor :default_read_timeout
|
40
38
|
|
41
|
-
# @return [String]
|
42
|
-
# (e.g. 's3', 'iam', 'dynamo_db', etc).
|
43
|
-
attr_accessor :service_ruby_name
|
44
|
-
|
45
|
-
# @return [String] hostname of the request
|
39
|
+
# @return [String] Returns hostname of the request.
|
46
40
|
attr_accessor :host
|
47
|
-
|
48
|
-
# @return [
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
#
|
53
|
-
|
54
|
-
|
55
|
-
# @return [String] GET, PUT POST, HEAD or DELETE, defaults to POST
|
41
|
+
|
42
|
+
# @return [Integer] Returns the port number this request will be
|
43
|
+
# made via (usually 443 or 80).
|
44
|
+
attr_accessor :port
|
45
|
+
|
46
|
+
# @return [String] Returns the HTTP request method (e.g. 'GET', 'PUT',
|
47
|
+
# 'POST', 'HEAD' or 'DELETE'). Defaults to 'POST'.
|
56
48
|
attr_accessor :http_method
|
57
|
-
|
58
|
-
# @return [
|
59
|
-
attr_accessor :
|
60
|
-
|
61
|
-
# @return [
|
62
|
-
|
63
|
-
attr_accessor :proxy_uri
|
49
|
+
|
50
|
+
# @return [Hash] Returns a hash of header values.
|
51
|
+
attr_accessor :headers
|
52
|
+
|
53
|
+
# @return [String] Returns the request URI (path + querystring).
|
54
|
+
attr_accessor :uri
|
64
55
|
|
65
56
|
# @return [String] The region name this request is for. Only needs
|
66
57
|
# to be populated for requests against signature v4 endpoints.
|
@@ -70,77 +61,85 @@ module AWS
|
|
70
61
|
# @private
|
71
62
|
attr_accessor :access_key_id
|
72
63
|
|
73
|
-
# Some subclasses override this method to obseve requirements
|
74
|
-
# set by the services (e.q. SimpleWorlfow and SQS have special
|
75
|
-
# long-pulling requirements and require special read timeouts).
|
76
64
|
# @private
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
def use_ssl= state
|
83
|
-
@use_ssl = state
|
84
|
-
end
|
85
|
-
|
86
|
-
# @return [Boolean] If this request should be sent over ssl or not.
|
87
|
-
def use_ssl?
|
88
|
-
@use_ssl
|
89
|
-
end
|
65
|
+
# @return [Array<Param>] Returns an array of request params. Requests
|
66
|
+
# that use signature version 2 add params to the request and then
|
67
|
+
# sign those before building the {#body}. Normally the {#body}
|
68
|
+
# should be set directly with the HTTP payload.
|
69
|
+
attr_accessor :params
|
90
70
|
|
91
|
-
#
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
71
|
+
# @return [String] Returns the HTTP request payload (body).
|
72
|
+
attr_accessor :body
|
73
|
+
|
74
|
+
# @return [String] Returns the AWS access key ID used to authorize the
|
75
|
+
# request.
|
76
|
+
attr_accessor :access_key_id
|
77
|
+
|
78
|
+
# @return [String] The name of the service for Signature v4 signing.
|
79
|
+
# This does not always match the ruby name (e.g.
|
80
|
+
# simple_email_service and ses do not match).
|
81
|
+
attr_accessor :service_ruby_name
|
82
|
+
|
83
|
+
# @return [nil, URI] The URI to the proxy server requests are
|
84
|
+
# sent through if configured. Returns nil if there is no proxy.
|
85
|
+
attr_accessor :proxy_uri
|
86
|
+
|
87
|
+
# @return [Integer] The number of seconds the service has to respond
|
88
|
+
# before a timeout error is raised on the request. Defaults to
|
89
|
+
# 60 seconds.
|
90
|
+
attr_accessor :read_timeout
|
91
|
+
|
92
|
+
# @return [Boolean] Returns +true+ if this request should be made
|
93
|
+
# with SSL enabled.
|
94
|
+
attr_accessor :use_ssl
|
95
|
+
|
96
|
+
alias_method :use_ssl?, :use_ssl
|
97
|
+
|
98
|
+
# @return [Boolean] Returns +true+ if the client should verify
|
99
|
+
# the peer certificate.
|
100
|
+
attr_accessor :ssl_verify_peer
|
101
|
+
|
102
|
+
alias_method :ssl_verify_peer?, :ssl_verify_peer
|
103
|
+
|
104
|
+
# @return [String] Returns the path to a bundle of CA certs in PEM
|
105
|
+
# format; the HTTP handler should use this to verify all HTTPS
|
106
|
+
# requests if {#ssl_verify_peer?} is true.
|
107
|
+
attr_accessor :ssl_ca_file
|
108
|
+
|
109
|
+
# @return [String] Returns the path to a directory of CA certs.
|
110
|
+
# The HTTP handler should use these to verify all HTTPS
|
111
|
+
# requests if {#ssl_verify_peer?} is true.
|
112
|
+
attr_accessor :ssl_ca_path
|
97
113
|
|
98
114
|
# @return [Integer] Returns the port the request will be made over.
|
99
115
|
# Defaults to 443 for SSL requests and 80 for non-SSL requests.
|
100
116
|
def port
|
101
117
|
@port || (use_ssl? ? 443 : 80)
|
102
118
|
end
|
103
|
-
|
104
|
-
#
|
105
|
-
#
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
# @return [Boolean] If the client should verify the peer
|
111
|
-
# certificate or not.
|
112
|
-
def ssl_verify_peer?
|
113
|
-
@ssl_verify_peer
|
114
|
-
end
|
115
|
-
|
116
|
-
# @param [String] ca_file Path to a bundle of CA certs in PEM
|
117
|
-
# format; the HTTP handler should use this to verify all HTTPS
|
118
|
-
# requests if {#ssl_verify_peer?} is true.
|
119
|
-
def ssl_ca_file=(ca_file)
|
120
|
-
@ssl_ca_file = ca_file
|
119
|
+
|
120
|
+
# Some subclasses override this method to obseve requirements
|
121
|
+
# set by the services (e.q. SimpleWorlfow and SQS have special
|
122
|
+
# long-pulling requirements and require special read timeouts).
|
123
|
+
# @private
|
124
|
+
def read_timeout
|
125
|
+
default_read_timeout
|
121
126
|
end
|
122
|
-
|
123
|
-
# @return [String]
|
124
|
-
|
125
|
-
|
126
|
-
def ssl_ca_file
|
127
|
-
@ssl_ca_file
|
127
|
+
|
128
|
+
# @return [String,nil] Returns the request body (payload).
|
129
|
+
def body
|
130
|
+
@body || url_encoded_params
|
128
131
|
end
|
129
|
-
|
130
|
-
# @
|
131
|
-
|
132
|
-
|
133
|
-
def ssl_ca_path=(ca_path)
|
134
|
-
@ssl_ca_path = ca_path
|
132
|
+
|
133
|
+
# @return [String] Returns the HTTP request path.
|
134
|
+
def path
|
135
|
+
uri.split(/\?/)[0]
|
135
136
|
end
|
136
|
-
|
137
|
-
# @return [String]
|
138
|
-
|
139
|
-
|
140
|
-
def ssl_ca_path
|
141
|
-
@ssl_ca_path
|
137
|
+
|
138
|
+
# @return [String] Returns the HTTP request querystring.
|
139
|
+
def querystring
|
140
|
+
uri.split(/\?/)[1]
|
142
141
|
end
|
143
|
-
|
142
|
+
|
144
143
|
# Adds a request param.
|
145
144
|
#
|
146
145
|
# @overload add_param(param_name, param_value = nil)
|
@@ -152,6 +151,7 @@ module AWS
|
|
152
151
|
# Add a param (object)
|
153
152
|
# @param [Param] param_obj
|
154
153
|
#
|
154
|
+
# @private
|
155
155
|
def add_param name_or_param, value = nil
|
156
156
|
if name_or_param.kind_of?(Param)
|
157
157
|
@params << name_or_param
|
@@ -159,99 +159,68 @@ module AWS
|
|
159
159
|
@params << Param.new(name_or_param, value)
|
160
160
|
end
|
161
161
|
end
|
162
|
-
|
163
|
-
|
164
|
-
# @private
|
165
|
-
def get_param param_name
|
166
|
-
@params.detect{|p| p.name == param_name } ||
|
167
|
-
raise("undefined param #{param_name}")
|
168
|
-
end
|
169
|
-
|
162
|
+
|
170
163
|
# @private
|
171
|
-
|
172
|
-
|
173
|
-
param ? param.value : nil
|
174
|
-
end
|
175
|
-
|
176
|
-
# @return [String] the request uri
|
177
|
-
def uri
|
178
|
-
querystring ? "#{path}?#{querystring}" : path
|
179
|
-
end
|
180
|
-
|
181
|
-
# @return [String] Returns the request params url encoded, or nil if
|
182
|
-
# this request has no params.
|
164
|
+
# @return [String,nil] Returns the url encoded request params. If there
|
165
|
+
# are no params, then nil is returned.
|
183
166
|
def url_encoded_params
|
184
|
-
|
185
|
-
nil
|
186
|
-
else
|
187
|
-
@params.sort.collect{|p| p.encoded }.join('&')
|
188
|
-
end
|
167
|
+
params.empty? ? nil : params.sort.collect(&:encoded).join('&')
|
189
168
|
end
|
190
|
-
|
191
|
-
# @return [String, nil] Returns the requesty querystring.
|
192
|
-
def querystring
|
193
|
-
nil
|
194
|
-
end
|
195
|
-
|
196
|
-
# @return [String, nil] Returns the request body.
|
197
|
-
def body
|
198
|
-
url_encoded_params
|
199
|
-
end
|
200
|
-
|
169
|
+
|
201
170
|
# @private
|
202
171
|
class CaseInsensitiveHash < Hash
|
203
|
-
|
172
|
+
|
204
173
|
def []= key, value
|
205
174
|
super(key.to_s.downcase, value)
|
206
175
|
end
|
207
|
-
|
176
|
+
|
208
177
|
def [] key
|
209
178
|
super(key.to_s.downcase)
|
210
179
|
end
|
211
|
-
|
180
|
+
|
212
181
|
def has_key?(key)
|
213
182
|
super(key.to_s.downcase)
|
214
183
|
end
|
215
184
|
alias_method :key?, :has_key?
|
216
185
|
alias_method :include?, :has_key?
|
217
186
|
alias_method :member?, :has_key?
|
218
|
-
|
187
|
+
|
219
188
|
end
|
220
|
-
|
189
|
+
|
221
190
|
# Represents a single request paramater. Some services accept this
|
222
191
|
# in a form encoded body string, others as query parameters.
|
223
192
|
# It is up to each service's Request class to determine how to
|
224
193
|
# consume these params.
|
225
194
|
# @private
|
226
195
|
class Param
|
227
|
-
|
196
|
+
|
228
197
|
include UriEscape
|
229
|
-
|
198
|
+
|
230
199
|
attr_accessor :name, :value
|
231
|
-
|
200
|
+
|
232
201
|
def initialize name, value = nil
|
233
202
|
@name = name
|
234
203
|
@value = value
|
235
204
|
end
|
236
|
-
|
205
|
+
|
237
206
|
def <=> other
|
238
207
|
name <=> other.name
|
239
208
|
end
|
240
|
-
|
209
|
+
|
241
210
|
def to_s
|
242
211
|
value ? "#{name}=#{value}" : name
|
243
212
|
end
|
244
|
-
|
213
|
+
|
245
214
|
def ==(other)
|
246
215
|
other.kind_of?(Param) and to_s == other.to_s
|
247
216
|
end
|
248
|
-
|
217
|
+
|
249
218
|
def encoded
|
250
219
|
value ? "#{escape(name)}=#{escape(value)}" : escape(name)
|
251
220
|
end
|
252
|
-
|
221
|
+
|
253
222
|
end
|
254
|
-
|
223
|
+
|
255
224
|
end
|
256
225
|
end
|
257
226
|
end
|