aws-sdk 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -16,7 +16,6 @@ require 'aws/inflection'
16
16
  require 'aws/naming'
17
17
  require 'aws/response'
18
18
  require 'aws/async_handle'
19
- require 'aws/configurable'
20
19
  require 'aws/http/handler'
21
20
  require 'aws/http/request'
22
21
  require 'aws/http/response'
@@ -32,7 +31,6 @@ module AWS
32
31
  # @private
33
32
  class BaseClient
34
33
 
35
- include Configurable
36
34
  include ClientLogging
37
35
 
38
36
  extend Naming
@@ -281,6 +279,7 @@ module AWS
281
279
  code = nil
282
280
  code = xml_error_grammar.parse(response.http_response.body).code if
283
281
  xml_error_response?(response)
282
+
284
283
 
285
284
  case
286
285
  when response.timeout?
@@ -306,7 +305,6 @@ module AWS
306
305
  response.http_response.status >= 300 and
307
306
  response.http_response.body and
308
307
  xml_error_grammar.parse(response.http_response.body).respond_to?(:code)
309
-
310
308
  end
311
309
 
312
310
  protected
@@ -433,15 +431,17 @@ module AWS
433
431
 
434
432
  end
435
433
 
436
- # defined using MetaUtils so it can be extended by
437
- # modules such as ConfiguredClientMethods
438
- MetaUtils.extend_method(self, :configure_client) do
434
+ protected
435
+ def self.configure_client
439
436
 
440
437
  module_eval('module Options; end')
441
438
  module_eval('module XML; end')
442
439
 
443
- make_configurable :"#{service_ruby_name}_client",
444
- :needs => [:signer, :http_handler]
440
+ name = :"#{service_ruby_name}_client"
441
+ needs = [:signer, :http_handler]
442
+ create_block = lambda {|config| new(:config => config) }
443
+
444
+ Configuration.add_option_with_needs(name, needs, &create_block)
445
445
 
446
446
  end
447
447
 
@@ -19,7 +19,7 @@ require 'aws/response_cache'
19
19
  module AWS
20
20
 
21
21
  # Current version of the AWS SDK for Ruby
22
- VERSION = "1.1.0"
22
+ VERSION = "1.1.1"
23
23
 
24
24
  class << self
25
25
 
@@ -51,72 +51,102 @@ module AWS
51
51
  #
52
52
  # @note Changing the global configuration does not affect objects
53
53
  # that have already been constructed.
54
+ #
54
55
  # @param [Hash] options
55
- # @option options [String] :access_key_id Your account access key
56
- # id credential.
57
- # @option options [String] :secret_access_key Your account secret
58
- # access key credential.
56
+ # @option options [String] :access_key_id (nil) AWS access key id
57
+ # credential.
58
+ # @option options [String] :ec2_endpoint ('ec2.amazonaws.com') The
59
+ # service endpoint for Amazon EC2.
60
+ # @option options [Object] :http_handler (AWS::HTTPartyHandler) The
61
+ # http handler that sends requests to AWS.
62
+ # @option options [String] :iam_endpoint ('iam.amazonaws.com') The
63
+ # service endpoint for AWS Idenity Access Management (IAM).
64
+ # @option options [Object,nil] :logger (nil) A logger instance that
65
+ # should receive log messages generated by service requets.
66
+ # A logger needs to respond to #log and must accept a
67
+ # severity (e.g. :info, :error, etc) and a string message.
59
68
  # @option options [Integer] :max_retries (3) The maximum number of times
60
69
  # service errors (500) should be retried. There is an exponential
61
70
  # backoff in between service request retries, so the more retries the
62
71
  # longer it can take to fail.
63
- # @option options [String] :ec2_endpoint ('ec2.amazonaws.com') The
64
- # service endpoint to use when communicating with Amazon EC2.
65
- # @option options :http_handler The request/response handler
66
- # for all service requests. The default handler uses HTTParty to
67
- # send requests.
68
- # @option options :logger (nil) A logger instance that should receive log
69
- # messages generated by service requets. A logger needs to respond to
70
- # #log and must accept a severity (e.g. :info, :error, etc) and
71
- # a string message.
72
72
  # @option options [String, URI, nil] :proxy_uri (nil) The URI of the proxy
73
73
  # to send service requests through. You can pass a URI object or a
74
74
  # URI string:
75
75
  #
76
76
  # AWS.config(:proxy_uri => 'https://user:password@my.proxy:443/path?query')
77
- #
78
- # @option options [String] :s3_endpoint ('s3.amazonaws.com') The
79
- # service endpoint to use when communicating with Amazon S3.
80
- # @option [Integer] :s3_multipart_threshold (16777216) When uploading
81
- # data to S3, if the number of bytes to send exceedes
77
+ #
78
+ # @option options [String] :s3_endpoint ('s3.amazonaws.com') The
79
+ # service endpoint for Amazon S3.
80
+ #
81
+ # @option options [Integer] :s3_multipart_max_parts (1000) The maximum
82
+ # number of parts to split a file into when uploading in parts to S3.
83
+ #
84
+ # @option options [Integer] :s3_multipart_threshold (16777216) When
85
+ # uploading data to S3, if the number of bytes to send exceedes
82
86
  # +:s3_multipart_threshold+ then a multi part session is automatically
83
87
  # started and the data is sent up in chunks. The size of each part
84
- # is specified by +:s3_multipart_min_part_size+.
85
- # @option [Integer] :s3_multipart_min_part_size (5242880)
86
- # @option [Integer] :s3_multipart_max_parts (1000)
87
- # @option options [Boolean] :simple_db_consistent_reads (false) When true
88
- # all read operations against SimpleDB will be consistent reads (slower).
88
+ # is specified by +:s3_multipart_min_part_size+. Defaults to
89
+ # 16777216 (16MB).
90
+ #
91
+ # @option options [Integer] :s3_multipart_min_part_size (5242880) The
92
+ # absolute minimum size (in bytes) each S3 multipart segment should be.
93
+ # Defaults to 5242880 (5MB).
94
+ #
95
+ # @option options [String] :secret_access_key (nil) AWS secret access
96
+ # key credential.
97
+ #
98
+ # @option options [String,nil] :session_token (nil) AWS secret token
99
+ # credential.
100
+ #
89
101
  # @option options [String] :simple_db_endpoint ('sdb.amazonaws.com') The
90
- # service endpoint to use when communicating with Amazon SimpleDB.
91
- # @option options [String] :simple_email_service_endpoint ('email.us-east-1.amazonaws.com')
92
- # The service endpoint to use when communicating with Amazon
93
- # SimpleEmailService.
94
- # @option options :signer The request signer. Defaults to a
95
- # {DefaultSigner}.
96
- # @option options [String] :sns_endpoint ('sns.us-east-1.amazonaws.com')
97
- # The service endpoint to use when communicating with Amazon SNS.
98
- # @option options [String] :sqs_endpoint ('sqs.us-east-1.amazonaws.com')
99
- # The service endpoint to use when communicating with Amazon SQS.
100
- # @option options :stub_requests (false) When true no requests will be
101
- # made against the live service. Responses returned will have empty
102
- # values. This is primarily used for writing tests.
103
- # @option options [Boolean] :use_ssl (true) When true, all requests are
104
- # sent over SSL.
105
- # @option options [Boolean] :ssl_verify_peer (true) True if the HTTPS
106
- # client should validate the server certificate. *Note:* This
107
- # option should only be used for diagnostic purposes; leaving
108
- # this option set to +false+ exposes your application to
102
+ # service endpoint for Amazon SimpleDB.
103
+ #
104
+ # @option options [Boolean] :simple_db_consistent_reads (false) Determines
105
+ # if all SimpleDB read requests should be done consistently.
106
+ # Consistent reads are slower, but reflect all changes to SDB.
107
+ #
108
+ # @option options [String] :simple_email_service_endpoint ('email.us-east-1.amazonaws.com')
109
+ # The service endpoint for Amazon Simple Email Service.
110
+ #
111
+ # @option options [Object] :signer (AWS::DefaultSigner) The request signer. Defaults to
112
+ # a default request signer implementation.
113
+ #
114
+ # @option options [String] :ssl_ca_file The path to a CA cert bundle in
115
+ # PEM format.
116
+ #
117
+ # If +:ssl_verify_peer+ is +true+ (the default) this bundle will be
118
+ # used to validate the server certificate in each HTTPS request.
119
+ # The AWS SDK for Ruby ships with a CA cert bundle, which is the
120
+ # default value for this option.
121
+ #
122
+ # @option options [Boolean] :ssl_verify_peer (true) When +true+
123
+ # the HTTP handler validate server certificates for HTTPS requests.
124
+ #
125
+ # This option should only be disabled for diagnostic purposes;
126
+ # leaving this option set to +false+ exposes your application to
109
127
  # man-in-the-middle attacks and can pose a serious security
110
128
  # risk.
111
- # @option options [String] :ssl_ca_file The path to a CA cert
112
- # bundle in PEM format. If +:ssl_verify_peer+ is true (the
113
- # default) this bundle will be used to validate the server
114
- # certificate in each HTTPS request. The AWS SDK for Ruby ships
115
- # with a CA cert bundle, which is the default value for this
116
- # option.
129
+ #
130
+ # @option options[Boolean] :stub_requests (false) When +true+ requests
131
+ # are not sent to AWS, instead empty reponses are generated and
132
+ # returned to each service request.
133
+ #
134
+ # @option options [String] :sns_endpoint ('sns.us-east-1.amazonaws.com') The
135
+ # service endpoint for Amazon SNS.
136
+ #
137
+ # @option options [String] :sqs_endpoint ('sqs.us-east-1.amazonaws.com') The
138
+ # service endpoint for Amazon SQS.
139
+ #
140
+ # @option options [String] :sts_endpoint ('sts.amazonaws.com') The
141
+ # service endpoint for AWS Security Token Service.
142
+ #
143
+ # @option options [Boolean] :use_ssl (true) When +true+, all requests
144
+ # to AWS are sent using HTTPS instead vanilla HTTP.
145
+ #
117
146
  # @option options [String] :user_agent_prefix (nil) A string prefix to
118
147
  # append to all requets against AWS services. This should be set
119
148
  # for clients and applications built ontop of the aws-sdk gem.
149
+ #
120
150
  # @return [Configuration] Returns the new configuration.
121
151
  def config options = {}
122
152
  @@config ||= Configuration.new
@@ -56,6 +56,114 @@ module AWS
56
56
  #
57
57
  # The global default configuration can be found at {AWS.config}
58
58
  #
59
+ # @attr_reader [String,nil] access_key_id AWS access key id credential.
60
+ # Defaults to +nil+.
61
+ #
62
+ # @attr_reader [String] ec2_endpoint The service endpoint for Amazon EC2.
63
+ # Defaults to 'ec2.amazonaws.com'.
64
+ #
65
+ # @attr_reader [Object] http_handler The http handler that sends requests
66
+ # to AWS. Defaults to an {AWS::HTTPartyHandler}.
67
+ #
68
+ # @attr_reader [String] iam_endpoint The service endpoint for AWS Idenity
69
+ # Access Management (IAM). Defaults to 'iam.amazonaws.com'.
70
+ #
71
+ # @attr_reader [Object,nil] logger A logger instance that
72
+ # should receive log messages generated by service requets.
73
+ # A logger needs to respond to #log and must accept a
74
+ # severity (e.g. :info, :error, etc) and a string message.
75
+ # Defaults to +nil+.
76
+ #
77
+ # @attr_reader [Integer] max_retries The maximum number of times
78
+ # service errors (500) should be retried. There is an exponential
79
+ # backoff in between service request retries, so the more retries the
80
+ # longer it can take to fail. Defautls to 3.
81
+ #
82
+ # @attr_reader [String, URI, nil] proxy_uri The URI of the proxy
83
+ # to send service requests through. You can pass a URI object or a
84
+ # URI string. Defautls to +nil+.
85
+ #
86
+ # AWS.config(:proxy_uri => 'https://user:password@my.proxy:443/path?query')
87
+ #
88
+ #
89
+ # @attr_reader [String] s3_endpoint The service endpoint for Amazon S3.
90
+ # Defaults to 's3.amazonaws.com'.
91
+ #
92
+ # @attr_reader [Integer] s3_multipart_max_parts The maximum number of
93
+ # parts to split a file into when uploading in parts to S3.
94
+ # Defaults to 1000.
95
+ #
96
+ # @attr_reader [Integer] s3_multipart_threshold (16777216) When uploading
97
+ # data to S3, if the number of bytes to send exceedes
98
+ # +:s3_multipart_threshold+ then a multi part session is automatically
99
+ # started and the data is sent up in chunks. The size of each part
100
+ # is specified by +:s3_multipart_min_part_size+. Defaults to
101
+ # 16777216 (16MB).
102
+ #
103
+ # @attr_reader [Integer] s3_multipart_min_part_size The absolute minimum
104
+ # size (in bytes) each S3 multipart segment should be.
105
+ # Defaults to 5242880 (5MB).
106
+ #
107
+ # @attr_reader [String,nil] secret_access_key AWS secret access key
108
+ # credential. Defaults to +nil+.
109
+ #
110
+ # @attr_reader [String,nil] session_token AWS secret token credential.
111
+ # Defaults to +nil+.
112
+ #
113
+ # @attr_reader [String] simple_db_endpoint The service endpoint for Amazon
114
+ # SimpleDB. Defaults to 'sdb.amazonaws.com'.
115
+ #
116
+ # @attr_reader [Boolean] simple_db_consistent_reads Determines
117
+ # if all SimpleDB read requests should be done consistently.
118
+ # Consistent reads are slower, but reflect all changes to SDB.
119
+ # Defaults to +false+.
120
+ #
121
+ # @attr_reader [String] simple_email_service_endpoint The service endpoint
122
+ # for Amazon Simple Email Service. Defaults to
123
+ # 'email.us-east-1.amazonaws.com'.
124
+ #
125
+ # @attr_reader [Object] signer The request signer. Defaults to
126
+ # a default request signer implementation.
127
+ #
128
+ # @attr_reader [String] ssl_ca_file The path to a CA cert bundle in
129
+ # PEM format.
130
+ #
131
+ # If +ssl_verify_peer+ is true (the default) this bundle will be
132
+ # used to validate the server certificate in each HTTPS request.
133
+ # The AWS SDK for Ruby ships with a CA cert bundle, which is the
134
+ # default value for this option.
135
+ #
136
+ # @attr_reader [Boolean] ssl_verify_peer When +true+
137
+ # the HTTP handler validate server certificates for HTTPS requests.
138
+ # Defaults to +true+.
139
+ #
140
+ # This option should only be disabled for diagnostic purposes;
141
+ # leaving this option set to +false+ exposes your application to
142
+ # man-in-the-middle attacks and can pose a serious security
143
+ # risk.
144
+ #
145
+ # @attr_reader [Boolean] stub_requests When +true+ requests are not
146
+ # sent to AWS, instead empty reponses are generated and returned to
147
+ # each service request.
148
+ #
149
+ # @attr_reader [String] sns_endpoint The service endpoint for Amazon SNS.
150
+ # Defaults to 'sns.us-east-1.amazonaws.com'.
151
+ #
152
+ # @attr_reader [String] sqs_endpoint The service endpoint for Amazon SQS.
153
+ # Defaults to 'sqs.us-east-1.amazonaws.com'.
154
+ #
155
+ # @attr_reader [String] sts_endpoint The service endpoint for AWS
156
+ # Security Token Service. Defaults to 'sts.amazonaws.com'.
157
+ #
158
+ # @attr_reader [Boolean] use_ssl When +true+, all requests
159
+ # to AWS are sent using HTTPS instead vanilla HTTP.
160
+ # Defaults to +true+.
161
+ #
162
+ # @attr_reader [String] user_agent_prefix A string prefix to
163
+ # append to all requets against AWS services. This should be set
164
+ # for clients and applications built ontop of the aws-sdk gem.
165
+ # Defaults to +nil+.
166
+ #
59
167
  class Configuration
60
168
 
61
169
  # Creates a new Configuration object.
@@ -63,75 +171,17 @@ module AWS
63
171
  # @option options (see AWS.config)
64
172
  def initialize options = {}
65
173
 
66
- @create_options = options.delete(:__create_options__) || {}
67
-
68
- @overridden = options.delete(:__overridden__) ||
69
- Set.new(options.keys.map { |k| k.to_sym })
70
-
71
- @options = {
72
- :ec2_endpoint => 'ec2.amazonaws.com',
73
- :http_handler => Http::HTTPartyHandler.new,
74
- :max_retries => 3,
75
- :iam_endpoint => 'iam.amazonaws.com',
76
- :s3_endpoint => 's3.amazonaws.com',
77
- :s3_multipart_threshold => 16 * 1024 * 1024,
78
- :s3_multipart_min_part_size => 5 * 1024 * 1024,
79
- :s3_multipart_max_parts => 10000,
80
- :simple_db_endpoint => 'sdb.amazonaws.com',
81
- :simple_db_consistent_reads => false,
82
- :simple_email_service_endpoint => 'email.us-east-1.amazonaws.com',
83
- :sns_endpoint => 'sns.us-east-1.amazonaws.com',
84
- :sqs_endpoint => 'sqs.us-east-1.amazonaws.com',
85
- :sts_endpoint => 'sts.amazonaws.com',
86
- :stub_requests => false,
87
- :proxy_uri => nil,
88
- :use_ssl => true,
89
- :user_agent_prefix => nil,
90
- :ssl_verify_peer => true,
91
- :ssl_ca_file => File.expand_path(File.dirname(__FILE__)+
92
- "/../../ca-bundle.crt")
93
- }
94
-
95
- {
96
- 'AWS_ACCESS_KEY_ID' => :access_key_id,
97
- 'AWS_SECRET_ACCESS_KEY' => :secret_access_key,
98
- 'AMAZON_ACCESS_KEY_ID' => :access_key_id,
99
- 'AMAZON_SECRET_ACCESS_KEY' => :secret_access_key,
100
- }.each_pair do |env_key, opt_key|
101
- if ENV[env_key]
102
- @options[opt_key] = ENV[env_key]
103
- end
104
- end
174
+ @created = options.delete(:__created__) || {}
105
175
 
106
- options.each do |(k,v)|
107
- @options[k.to_sym] = v
176
+ options.each_pair do |opt_name, value|
177
+ opt_name = opt_name.to_sym
178
+ if self.class.accepted_options.include?(opt_name)
179
+ supplied[opt_name] = value
180
+ end
108
181
  end
109
182
 
110
183
  end
111
184
 
112
- # @return [Boolean] Returns true if web service requets should be
113
- # made with HTTPS.
114
- def use_ssl?
115
- @options[:use_ssl]
116
- end
117
- alias_method :use_ssl, :use_ssl?
118
-
119
- # @return [String] Your AWS account access key id credential.
120
- def access_key_id
121
- @options[:access_key_id]
122
- end
123
-
124
- # @return [String] Your AWS secret access key credential.
125
- def secret_access_key
126
- @options[:secret_access_key]
127
- end
128
-
129
- # @return [String] Your AWS session token credential.
130
- # @see STS
131
- def session_token
132
- @options[:session_token]
133
- end
134
-
135
185
  # Used to create a new Configuration object with the given modifications.
136
186
  # The current configuration object is not modified.
137
187
  #
@@ -153,172 +203,155 @@ module AWS
153
203
  # @return [Configuration] Copies the current configuration and returns
154
204
  # a new one with modifications as provided in +:options+.
155
205
  def with options = {}
156
- overridden = @overridden + options.keys.map { |k| k.to_sym }
157
- self.class.new(@options.merge(options).
158
- merge(:__create_options__ => @create_options,
159
- :__overridden__ => overridden))
160
- end
161
206
 
162
- # @return [Integer] Maximum number of times to retry server errors.
163
- def max_retries
164
- @options[:max_retries]
165
- end
207
+ # symbolize option keys
208
+ options = options.inject({}) {|h,kv| h[kv.first.to_sym] = kv.last; h }
166
209
 
167
- # @return [String] The service endpoint for AWS Idenity Access
168
- # Management (IAM).
169
- def iam_endpoint
170
- @options[:iam_endpoint]
171
- end
210
+ values = supplied.merge(options)
172
211
 
173
- # @return [String] The service endpoint for Amazon S3.
174
- def s3_endpoint
175
- @options[:s3_endpoint]
176
- end
212
+ if supplied == values
213
+ self # nothing changed
214
+ else
215
+ self.class.new(values.merge(:__created__ => @created))
216
+ end
177
217
 
178
- # @return [String] The default service endpoint for Amazon EC2.
179
- def ec2_endpoint
180
- @options[:ec2_endpoint]
181
218
  end
182
219
 
183
- # @return [String] The service endpoint for Amazon SimpleDB.
184
- def simple_db_endpoint
185
- @options[:simple_db_endpoint]
220
+ # @return [Hash] Returns a hash of all configuration values.
221
+ def to_h
222
+ self.class.accepted_options.inject({}) do |h,k|
223
+ h[k] = send(k)
224
+ h
225
+ end
186
226
  end
187
227
 
188
- # @return [String] The service endpoint for Amazon SimpleEmailService.
189
- def simple_email_service_endpoint
190
- @options[:simple_email_service_endpoint]
228
+ # @return [Boolean] Returns true if the two configuration objects have
229
+ # the same values.
230
+ def == other
231
+ other.is_a?(self.class) and self.supplied == other.supplied
191
232
  end
192
233
 
193
- # @return [String] The service endpoint for Amazon SNS.
194
- def sns_endpoint
195
- @options[:sns_endpoint]
196
- end
234
+ alias_method :eql, :==
197
235
 
198
- # @return [String] The service endpoint for Amazon SQS.
199
- def sqs_endpoint
200
- @options[:sqs_endpoint]
236
+ # @private
237
+ def inspect
238
+ "<#{self.class.name}>"
201
239
  end
202
240
 
203
- # @return [String] The service endpoint for AWS Security Token Service.
204
- def sts_endpoint
205
- @options[:sts_endpoint]
241
+ protected
242
+ def supplied
243
+ @supplied ||= {}
206
244
  end
207
245
 
208
- # @return [Boolean] Returns true if all reads to SimpleDB default to
209
- # consistent reads.
210
- def simple_db_consistent_reads?
211
- @options[:simple_db_consistent_reads]
212
- end
246
+ class << self
213
247
 
214
- # @return [String,nil] Returns the prefix that is appended to the
215
- # user agent string that is sent with all requests to AWS.
216
- def user_agent_prefix
217
- @options[:user_agent_prefix]
218
- end
248
+ # @private
249
+ def accepted_options
250
+ @options ||= Set.new
251
+ end
219
252
 
220
- # @return [Object] Returns the current http handler.
221
- def http_handler
222
- @options[:http_handler]
223
- end
253
+ # @private
254
+ def add_option name, default_value = nil, options = {}, &transform
224
255
 
225
- # @return [Object] Returns the current request signer.
226
- def signer
227
- return @options[:signer] if @options[:signer]
228
- raise "Missing credentials" unless access_key_id and secret_access_key
229
- @options[:signer] ||=
230
- DefaultSigner.new(access_key_id, secret_access_key, session_token)
231
- end
256
+ accepted_options << name
232
257
 
233
- # @return [Object,nil] Returns the current logger.
234
- def logger
235
- @options[:logger]
236
- end
258
+ define_method(name) do
259
+ value = supplied.has_key?(name) ? supplied[name] : default_value
260
+ transform ? transform.call(value) : value
261
+ end
237
262
 
238
- # @return [Boolean] Returns true if this configuration causes
239
- # all AWS requests to return stubbed (empty) responses without making a
240
- # request to the actual service.
241
- def stub_requests?
242
- @options[:stub_requests]
243
- end
263
+ alias_method("#{name}?", name) if options[:boolean]
244
264
 
245
- # @return [Integer] Returns the number of bytes where files larger
246
- # are uploaded to S3 in multiple parts.
247
- def s3_multipart_threshold
248
- @options[:s3_multipart_threshold]
249
- end
265
+ end
250
266
 
251
- # @return [Integer] The absolute minimum size (in bytes) each S3 multipart
252
- # segment should be.
253
- def s3_multipart_min_part_size
254
- @options[:s3_multipart_min_part_size]
255
- end
267
+ # Configuration options that have dependencies are re-recreated
268
+ # anytime one of their dependendent configuration values are
269
+ # changed.
270
+ # @private
271
+ def add_option_with_needs name, needs, &create_block
272
+
273
+ accepted_options << name
256
274
 
257
- # @return [Integer] The maximum number of parts to split a file into
258
- # when uploading to S3.
259
- def s3_multipart_max_parts
260
- @options[:s3_multipart_max_parts]
261
- end
275
+ define_method(name) do
262
276
 
263
- # @return [Boolean] True if the HTTPS client should validate the
264
- # server certificate.
265
- #
266
- # @note This option should only be used for diagnostic purposes;
267
- # leaving this option set to +false+ exposes your application to
268
- # man-in-the-middle attacks and can pose a serious security
269
- # risk.
270
- def ssl_verify_peer?
271
- @options[:ssl_verify_peer]
272
- end
277
+ return supplied[name] if supplied.has_key?(name)
273
278
 
274
- # @return [String] The path to a CA cert bundle in PEM format.
275
- #
276
- # If {#ssl_verify_peer?} is true (the default) this bundle will be
277
- # used to validate the server certificate in each HTTPS request.
278
- # The AWS SDK for Ruby ships with a CA cert bundle, which is the
279
- # default value for this option.
280
- def ssl_ca_file
281
- @options[:ssl_ca_file]
282
- end
279
+ needed = needs.collect{|need| send(need) }
283
280
 
284
- # @return [URI::HTTP, URI::HTTPS, nil] Returns the URI for the configured
285
- # proxy if there is one. Defaults to nil.
286
- def proxy_uri
287
- @options[:proxy_uri] ? URI.parse(@options[:proxy_uri].to_s) : nil
288
- end
281
+ unless @created.key?(name) and @created[name][:needed] == needed
282
+ @created[name] ||= {}
283
+ @created[name][:object] = create_block.call(self)
284
+ @created[name][:needed] = needed
285
+ end
286
+
287
+ @created[name][:object]
288
+
289
+ end
290
+
291
+ end
289
292
 
290
- # @private
291
- def inspect
292
- "<#{self.class}>"
293
293
  end
294
294
 
295
- class << self
295
+ add_option :access_key_id,
296
+ ENV['AWS_ACCESS_KEY_ID'] || ENV['AMAZON_ACCESS_KEY_ID']
296
297
 
297
- # @private
298
- def add_parameter_type(klass, name, options = {})
299
- if options[:needs]
300
- define_method(name) do
301
- unless @overridden.include?(name)
302
- create_options = { :config => self }
303
- options[:needs].each do |need|
304
- create_options[need] = send(need)
305
- end
306
- end
307
-
308
- return @options[name] if @options[name] and
309
- (@overridden.include?(name) or
310
- @create_options[name] == create_options)
311
-
312
- @create_options[name] = create_options
313
- @options[name] = klass.new(create_options)
314
- end
315
- else
316
- define_method(name) do
317
- @options[name] ||= klass.new(:config => self)
318
- end
319
- end
320
- end
298
+ add_option :ec2_endpoint, 'ec2.amazonaws.com'
299
+
300
+ add_option :s3_endpoint, 's3.amazonaws.com'
301
+
302
+ add_option :http_handler, Http::HTTPartyHandler.new
303
+
304
+ add_option :iam_endpoint, 'iam.amazonaws.com'
305
+
306
+ add_option :logger
307
+
308
+ add_option :max_retries, 3
309
+
310
+ add_option :proxy_uri do |uri| uri ? URI.parse(uri.to_s) : nil end
311
+
312
+ add_option :s3_multipart_threshold, 16 * 1024 * 1024
313
+
314
+ add_option :s3_multipart_min_part_size, 5 * 1024 * 1024
315
+
316
+ add_option :s3_multipart_max_parts, 10000
317
+
318
+ add_option :secret_access_key,
319
+ ENV['AWS_SECRET_ACCESS_KEY'] || ENV['AMAZON_SECRET_ACCESS_KEY']
320
+
321
+ add_option :session_token
322
+
323
+ add_option_with_needs :signer,
324
+ [:access_key_id, :secret_access_key, :session_token] do |config|
325
+
326
+ DefaultSigner.new(
327
+ config.access_key_id,
328
+ config.secret_access_key,
329
+ config.session_token)
321
330
 
322
331
  end
332
+
333
+ add_option :simple_db_endpoint, 'sdb.amazonaws.com'
334
+
335
+ add_option :simple_db_consistent_reads, false, :boolean => true
336
+
337
+ add_option :simple_email_service_endpoint, 'email.us-east-1.amazonaws.com'
338
+
339
+ add_option :sns_endpoint, 'sns.us-east-1.amazonaws.com'
340
+
341
+ add_option :sqs_endpoint, 'sqs.us-east-1.amazonaws.com'
342
+
343
+ add_option :ssl_verify_peer, true, :boolean => true
344
+
345
+ add_option :ssl_ca_file,
346
+ File.expand_path(File.dirname(__FILE__) + "/../../ca-bundle.crt")
347
+
348
+ add_option :sts_endpoint, 'sts.amazonaws.com'
349
+
350
+ add_option :stub_requests, false, :boolean => true
351
+
352
+ add_option :use_ssl, true, :boolean => true
353
+
354
+ add_option :user_agent_prefix
355
+
323
356
  end
324
357
  end
@@ -37,12 +37,14 @@ module AWS
37
37
  # @param [String] session_token The Session Token used to sign
38
38
  # requests. You can get credentials that include a session
39
39
  # token using the {STS} class.
40
- def initialize(access_key_id,
41
- secret_access_key,
42
- session_token = nil)
40
+ def initialize(access_key_id, secret_access_key, session_token = nil)
41
+
43
42
  @access_key_id = access_key_id
44
43
  @secret_access_key = secret_access_key
45
44
  @session_token = session_token
45
+
46
+ raise "Missing credentials" unless access_key_id and secret_access_key
47
+
46
48
  end
47
49
 
48
50
  # Signs a string using the credentials stored in memory.
@@ -108,7 +108,7 @@ module AWS
108
108
  # See {AccessKeyCollection} and {AccessKey} for more information about
109
109
  # working with access keys.
110
110
  #
111
- # = Users & Gropus
111
+ # = Users & Groups
112
112
  #
113
113
  # Each AWS account can have multiple users. Users can be used to easily
114
114
  # manage permissions. Users can also be organized into groups.
@@ -357,7 +357,8 @@ module AWS
357
357
  :key => key,
358
358
  :metadata => metadata,
359
359
  :secure => secure?,
360
- :content_length => content_length
360
+ :content_length => content_length,
361
+ :expires => expires
361
362
  }.merge(@fields).
362
363
  merge(opts))
363
364
  end
@@ -33,7 +33,11 @@ module AWS
33
33
  # @private
34
34
  protected
35
35
  def escape_path value
36
- value.split("/").map { |part| escape(part) }.join("/")
36
+ escaped = ""
37
+ value.scan(%r{(/?)([^/]+)(/?)}) do |(leading, part, trailing)|
38
+ escaped << leading + escape(part) + trailing
39
+ end
40
+ escaped
37
41
  end
38
42
 
39
43
  end
metadata CHANGED
@@ -1,93 +1,67 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: aws-sdk
3
- version: !ruby/object:Gem::Version
4
- hash: 19
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.1
5
5
  prerelease:
6
- segments:
7
- - 1
8
- - 1
9
- - 0
10
- version: 1.1.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Amazon Web Services
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-08-16 00:00:00 -07:00
12
+ date: 2011-08-18 00:00:00.000000000 -07:00
19
13
  default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
22
16
  name: uuidtools
23
- prerelease: false
24
- version_requirements: &id001 !ruby/object:Gem::Requirement
17
+ requirement: &2163583560 !ruby/object:Gem::Requirement
25
18
  none: false
26
- requirements:
19
+ requirements:
27
20
  - - ~>
28
- - !ruby/object:Gem::Version
29
- hash: 1
30
- segments:
31
- - 2
32
- - 1
33
- version: "2.1"
21
+ - !ruby/object:Gem::Version
22
+ version: '2.1'
34
23
  type: :runtime
35
- requirement: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: httparty
38
24
  prerelease: false
39
- version_requirements: &id002 !ruby/object:Gem::Requirement
25
+ version_requirements: *2163583560
26
+ - !ruby/object:Gem::Dependency
27
+ name: httparty
28
+ requirement: &2163582960 !ruby/object:Gem::Requirement
40
29
  none: false
41
- requirements:
30
+ requirements:
42
31
  - - ~>
43
- - !ruby/object:Gem::Version
44
- hash: 5
45
- segments:
46
- - 0
47
- - 7
48
- version: "0.7"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.7'
49
34
  type: :runtime
50
- requirement: *id002
51
- - !ruby/object:Gem::Dependency
52
- name: nokogiri
53
35
  prerelease: false
54
- version_requirements: &id003 !ruby/object:Gem::Requirement
36
+ version_requirements: *2163582960
37
+ - !ruby/object:Gem::Dependency
38
+ name: nokogiri
39
+ requirement: &2163582380 !ruby/object:Gem::Requirement
55
40
  none: false
56
- requirements:
57
- - - ">="
58
- - !ruby/object:Gem::Version
59
- hash: 15
60
- segments:
61
- - 1
62
- - 4
63
- - 4
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
64
44
  version: 1.4.4
65
45
  type: :runtime
66
- requirement: *id003
67
- - !ruby/object:Gem::Dependency
68
- name: json
69
46
  prerelease: false
70
- version_requirements: &id004 !ruby/object:Gem::Requirement
47
+ version_requirements: *2163582380
48
+ - !ruby/object:Gem::Dependency
49
+ name: json
50
+ requirement: &2163581800 !ruby/object:Gem::Requirement
71
51
  none: false
72
- requirements:
52
+ requirements:
73
53
  - - ~>
74
- - !ruby/object:Gem::Version
75
- hash: 7
76
- segments:
77
- - 1
78
- - 4
79
- version: "1.4"
54
+ - !ruby/object:Gem::Version
55
+ version: '1.4'
80
56
  type: :runtime
81
- requirement: *id004
57
+ prerelease: false
58
+ version_requirements: *2163581800
82
59
  description: AWS SDK for Ruby
83
60
  email:
84
61
  executables: []
85
-
86
62
  extensions: []
87
-
88
63
  extra_rdoc_files: []
89
-
90
- files:
64
+ files:
91
65
  - ca-bundle.crt
92
66
  - rails/init.rb
93
67
  - lib/aws/api_config.rb
@@ -101,7 +75,6 @@ files:
101
75
  - lib/aws/client_logging.rb
102
76
  - lib/aws/collections.rb
103
77
  - lib/aws/common.rb
104
- - lib/aws/configurable.rb
105
78
  - lib/aws/configuration.rb
106
79
  - lib/aws/configured_client_methods.rb
107
80
  - lib/aws/configured_grammars.rb
@@ -339,37 +312,31 @@ files:
339
312
  - LICENSE.txt
340
313
  has_rdoc: true
341
314
  homepage: http://aws.amazon.com/sdkforruby
342
- licenses:
315
+ licenses:
343
316
  - Apache 2.0
344
317
  post_install_message:
345
318
  rdoc_options: []
346
-
347
- require_paths:
319
+ require_paths:
348
320
  - lib
349
- required_ruby_version: !ruby/object:Gem::Requirement
321
+ required_ruby_version: !ruby/object:Gem::Requirement
350
322
  none: false
351
- requirements:
352
- - - ">="
353
- - !ruby/object:Gem::Version
354
- hash: 3
355
- segments:
323
+ requirements:
324
+ - - ! '>='
325
+ - !ruby/object:Gem::Version
326
+ version: '0'
327
+ segments:
356
328
  - 0
357
- version: "0"
358
- required_rubygems_version: !ruby/object:Gem::Requirement
329
+ hash: -2676721713860142099
330
+ required_rubygems_version: !ruby/object:Gem::Requirement
359
331
  none: false
360
- requirements:
361
- - - ">="
362
- - !ruby/object:Gem::Version
363
- hash: 3
364
- segments:
365
- - 0
366
- version: "0"
332
+ requirements:
333
+ - - ! '>='
334
+ - !ruby/object:Gem::Version
335
+ version: '0'
367
336
  requirements: []
368
-
369
337
  rubyforge_project:
370
- rubygems_version: 1.4.1
338
+ rubygems_version: 1.6.1
371
339
  signing_key:
372
340
  specification_version: 3
373
341
  summary: AWS SDK for Ruby
374
342
  test_files: []
375
-
@@ -1,36 +0,0 @@
1
- # Copyright 2011 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License"). You
4
- # may not use this file except in compliance with the License. A copy of
5
- # the License is located at
6
- #
7
- # http://aws.amazon.com/apache2.0/
8
- #
9
- # or in the "license" file accompanying this file. This file is
10
- # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11
- # ANY KIND, either express or implied. See the License for the specific
12
- # language governing permissions and limitations under the License.
13
-
14
- require 'aws/configuration'
15
-
16
- module AWS
17
-
18
- # @private
19
- module Configurable
20
-
21
- module ClassMethods
22
-
23
- def make_configurable(name, opts = {})
24
- Configuration.add_parameter_type(self, name, opts)
25
- end
26
-
27
- end
28
-
29
- def self.included(m)
30
- m.extend ClassMethods
31
- super
32
- end
33
-
34
- end
35
-
36
- end