aws 2.1.11 → 2.1.12
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.
- data/lib/s3/right_s3.rb +160 -157
- data/lib/sdb/active_sdb.rb +9 -1
- data/lib/sdb/right_sdb_interface.rb +14 -1
- data/lib/sqs/right_sqs.rb +3 -2
- data/lib/sqs/right_sqs_interface.rb +3 -3
- metadata +2 -2
data/lib/s3/right_s3.rb
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
#
|
23
23
|
|
24
24
|
module Aws
|
25
|
-
|
25
|
+
|
26
26
|
# = Aws::S3 -- RightScale's Amazon S3 interface
|
27
27
|
# The Aws::S3 class provides a complete interface to Amazon's Simple
|
28
28
|
# Storage Service.
|
@@ -35,25 +35,25 @@ module Aws
|
|
35
35
|
# Error handling: all operations raise an Aws::AwsError in case
|
36
36
|
# of problems. Note that transient errors are automatically retried.
|
37
37
|
#
|
38
|
-
# It is a good way to use domain naming style getting a name for the buckets.
|
38
|
+
# It is a good way to use domain naming style getting a name for the buckets.
|
39
39
|
# See http://docs.amazonwebservices.com/AmazonS3/2006-03-01/UsingBucket.html
|
40
40
|
# about the naming convention for the buckets. This case they can be accessed using a virtual domains.
|
41
|
-
#
|
41
|
+
#
|
42
42
|
# Let assume you have 3 buckets: 'awesome-bucket', 'awesome_bucket' and 'AWEsomE-bucket'.
|
43
43
|
# The first ones objects can be accessed as: http:// awesome-bucket.s3.amazonaws.com/key/object
|
44
|
-
#
|
44
|
+
#
|
45
45
|
# But the rest have to be accessed as:
|
46
46
|
# http:// s3.amazonaws.com/awesome_bucket/key/object and http:// s3.amazonaws.com/AWEsomE-bucket/key/object
|
47
|
-
#
|
47
|
+
#
|
48
48
|
# See: http://docs.amazonwebservices.com/AmazonS3/2006-03-01/VirtualHosting.html for better explanation.
|
49
49
|
#
|
50
50
|
class S3
|
51
51
|
attr_reader :interface
|
52
|
-
|
52
|
+
|
53
53
|
# Create a new handle to an S3 account. All handles share the same per process or per thread
|
54
54
|
# HTTP connection to Amazon S3. Each handle is for a specific account.
|
55
55
|
# The +params+ are passed through as-is to Aws::S3Interface.new
|
56
|
-
#
|
56
|
+
#
|
57
57
|
# Params is a hash:
|
58
58
|
#
|
59
59
|
# {:server => 's3.amazonaws.com' # Amazon service host: 's3.amazonaws.com'(default)
|
@@ -64,7 +64,7 @@ module Aws
|
|
64
64
|
def initialize(aws_access_key_id=nil, aws_secret_access_key=nil, params={})
|
65
65
|
@interface = S3Interface.new(aws_access_key_id, aws_secret_access_key, params)
|
66
66
|
end
|
67
|
-
|
67
|
+
|
68
68
|
# Retrieve a list of buckets.
|
69
69
|
# Returns an array of Aws::S3::Bucket instances.
|
70
70
|
# # Create handle to S3 account
|
@@ -77,7 +77,7 @@ module Aws
|
|
77
77
|
Bucket.new(self, entry[:name], entry[:creation_date], owner)
|
78
78
|
end
|
79
79
|
end
|
80
|
-
|
80
|
+
|
81
81
|
# Retrieve an individual bucket.
|
82
82
|
# If the bucket does not exist and +create+ is set, a new bucket
|
83
83
|
# is created on S3. Launching this method with +create+=+true+ may
|
@@ -93,26 +93,29 @@ module Aws
|
|
93
93
|
# bucket2.keys #=> list of keys
|
94
94
|
# # create a bucket at the European location with public read access
|
95
95
|
# bucket3 = s3.bucket('my-awesome-bucket-3', true, 'public-read', :location => :eu)
|
96
|
-
#
|
96
|
+
#
|
97
97
|
# see http://docs.amazonwebservices.com/AmazonS3/2006-03-01/RESTAccessPolicy.html
|
98
98
|
# (section: Canned Access Policies)
|
99
99
|
#
|
100
100
|
def bucket(name, create=false, perms=nil, headers={})
|
101
101
|
headers['x-amz-acl'] = perms if perms
|
102
102
|
@interface.create_bucket(name, headers) if create
|
103
|
-
|
104
|
-
|
103
|
+
return Bucket.new(self, name)
|
104
|
+
# The old way below was too slow and unnecessary because it retreived all the buckets every time.
|
105
|
+
# owner = Owner.new(entry[:owner_id], entry[:owner_display_name])
|
106
|
+
# buckets.each { |bucket| return bucket if bucket.name == name }
|
107
|
+
# nil
|
105
108
|
end
|
106
|
-
|
109
|
+
|
107
110
|
|
108
111
|
class Bucket
|
109
112
|
attr_reader :s3, :name, :owner, :creation_date
|
110
|
-
|
113
|
+
|
111
114
|
# Create a Bucket instance.
|
112
115
|
# If the bucket does not exist and +create+ is set, a new bucket
|
113
116
|
# is created on S3. Launching this method with +create+=+true+ may
|
114
117
|
# affect on the bucket's ACL if the bucket already exists.
|
115
|
-
# Returns Bucket instance or +nil+ if the bucket does not exist
|
118
|
+
# Returns Bucket instance or +nil+ if the bucket does not exist
|
116
119
|
# and +create+ is not set.
|
117
120
|
#
|
118
121
|
# s3 = Aws::S3.new(aws_access_key_id, aws_secret_access_key)
|
@@ -124,11 +127,11 @@ module Aws
|
|
124
127
|
# bucket2.keys #=> list of keys
|
125
128
|
# # create a bucket at the European location with public read access
|
126
129
|
# bucket3 = Aws::S3::Bucket.create(s3,'my-awesome-bucket-3', true, 'public-read', :location => :eu)
|
127
|
-
#
|
130
|
+
#
|
128
131
|
# see http://docs.amazonwebservices.com/AmazonS3/2006-03-01/RESTAccessPolicy.html
|
129
132
|
# (section: Canned Access Policies)
|
130
133
|
#
|
131
|
-
def self.create(s3, name, create=false, perms=nil, headers={})
|
134
|
+
def self.create(s3, name, create=false, perms=nil, headers={})
|
132
135
|
s3.bucket(name, create, perms, headers)
|
133
136
|
end
|
134
137
|
|
@@ -145,7 +148,7 @@ module Aws
|
|
145
148
|
@creation_date = Time.parse(@creation_date)
|
146
149
|
end
|
147
150
|
end
|
148
|
-
|
151
|
+
|
149
152
|
# Return bucket name as a String.
|
150
153
|
#
|
151
154
|
# bucket = Aws::S3.bucket('my_awesome_bucket')
|
@@ -155,30 +158,30 @@ module Aws
|
|
155
158
|
@name.to_s
|
156
159
|
end
|
157
160
|
alias_method :full_name, :to_s
|
158
|
-
|
161
|
+
|
159
162
|
# Return a public link to bucket.
|
160
|
-
#
|
163
|
+
#
|
161
164
|
# bucket.public_link #=> 'https://s3.amazonaws.com:443/my_awesome_bucket'
|
162
165
|
#
|
163
166
|
def public_link
|
164
167
|
params = @s3.interface.params
|
165
168
|
"#{params[:protocol]}://#{params[:server]}:#{params[:port]}/#{full_name}"
|
166
169
|
end
|
167
|
-
|
170
|
+
|
168
171
|
# Returns the bucket location
|
169
172
|
def location
|
170
173
|
@location ||= @s3.interface.bucket_location(@name)
|
171
174
|
end
|
172
|
-
|
173
|
-
# Retrieves the logging configuration for a bucket.
|
175
|
+
|
176
|
+
# Retrieves the logging configuration for a bucket.
|
174
177
|
# Returns a hash of {:enabled, :targetbucket, :targetprefix}
|
175
|
-
#
|
178
|
+
#
|
176
179
|
# bucket.logging_info()
|
177
180
|
# => {:enabled=>true, :targetbucket=>"mylogbucket", :targetprefix=>"loggylogs/"}
|
178
181
|
def logging_info
|
179
182
|
@s3.interface.get_logging_parse(:bucket => @name)
|
180
183
|
end
|
181
|
-
|
184
|
+
|
182
185
|
# Enables S3 server access logging on a bucket. The target bucket must have been properly configured to receive server
|
183
186
|
# access logs.
|
184
187
|
# Params:
|
@@ -193,17 +196,17 @@ module Aws
|
|
193
196
|
xmldoc = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><BucketLoggingStatus xmlns=\"http://doc.s3.amazonaws.com/2006-03-01\"><LoggingEnabled><TargetBucket>#{params[:targetbucket]}</TargetBucket><TargetPrefix>#{params[:targetprefix]}</TargetPrefix></LoggingEnabled></BucketLoggingStatus>"
|
194
197
|
@s3.interface.put_logging(:bucket => @name, :xmldoc => xmldoc)
|
195
198
|
end
|
196
|
-
|
199
|
+
|
197
200
|
# Disables S3 server access logging on a bucket. Takes no arguments.
|
198
201
|
def disable_logging
|
199
202
|
xmldoc = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><BucketLoggingStatus xmlns=\"http://doc.s3.amazonaws.com/2006-03-01\"></BucketLoggingStatus>"
|
200
203
|
@s3.interface.put_logging(:bucket => @name, :xmldoc => xmldoc)
|
201
204
|
end
|
202
205
|
|
203
|
-
# Retrieve a group of keys from Amazon.
|
204
|
-
# +options+ is a hash: { 'prefix'=>'', 'marker'=>'', 'max-keys'=>5, 'delimiter'=>'' }).
|
205
|
-
# Retrieves meta-headers information if +head+ it +true+.
|
206
|
-
# Returns an array of Key instances.
|
206
|
+
# Retrieve a group of keys from Amazon.
|
207
|
+
# +options+ is a hash: { 'prefix'=>'', 'marker'=>'', 'max-keys'=>5, 'delimiter'=>'' }).
|
208
|
+
# Retrieves meta-headers information if +head+ it +true+.
|
209
|
+
# Returns an array of Key instances.
|
207
210
|
#
|
208
211
|
# bucket.keys #=> # returns all keys from bucket
|
209
212
|
# bucket.keys('prefix' => 'logs') #=> # returns all keys that starts with 'logs'
|
@@ -212,7 +215,7 @@ module Aws
|
|
212
215
|
keys_and_service(options, head)[0]
|
213
216
|
end
|
214
217
|
|
215
|
-
# Same as +keys+ method but return an array of [keys, service_data].
|
218
|
+
# Same as +keys+ method but return an array of [keys, service_data].
|
216
219
|
# where +service_data+ is a hash with additional output information.
|
217
220
|
#
|
218
221
|
# keys, service = bucket.keys_and_service({'max-keys'=> 2, 'prefix' => 'logs'})
|
@@ -238,10 +241,10 @@ module Aws
|
|
238
241
|
[list, service_data]
|
239
242
|
end
|
240
243
|
|
241
|
-
# Retrieve key information from Amazon.
|
242
|
-
# The +key_name+ is a +String+ or Key instance.
|
243
|
-
# Retrieves meta-header information if +head+ is +true+.
|
244
|
-
# Returns new Key instance.
|
244
|
+
# Retrieve key information from Amazon.
|
245
|
+
# The +key_name+ is a +String+ or Key instance.
|
246
|
+
# Retrieves meta-header information if +head+ is +true+.
|
247
|
+
# Returns new Key instance.
|
245
248
|
#
|
246
249
|
# key = bucket.key('logs/today/1.log', true) #=> #<Aws::S3::Key:0xb7b1e240 ... >
|
247
250
|
# # is the same as:
|
@@ -264,23 +267,23 @@ module Aws
|
|
264
267
|
end
|
265
268
|
key_instance
|
266
269
|
end
|
267
|
-
|
268
|
-
# Store object data.
|
269
|
-
# The +key+ is a +String+ or Key instance.
|
270
|
+
|
271
|
+
# Store object data.
|
272
|
+
# The +key+ is a +String+ or Key instance.
|
270
273
|
# Returns +true+.
|
271
274
|
#
|
272
275
|
# bucket.put('logs/today/1.log', 'Olala!') #=> true
|
273
276
|
#
|
274
277
|
def put(key, data=nil, meta_headers={}, perms=nil, headers={})
|
275
|
-
key = Key.create(self, key.to_s, data, meta_headers) unless key.is_a?(Key)
|
278
|
+
key = Key.create(self, key.to_s, data, meta_headers) unless key.is_a?(Key)
|
276
279
|
key.put(data, perms, headers)
|
277
280
|
end
|
278
281
|
|
279
|
-
# Retrieve object data from Amazon.
|
280
|
-
# The +key+ is a +String+ or Key.
|
281
|
-
# Returns Key instance.
|
282
|
+
# Retrieve object data from Amazon.
|
283
|
+
# The +key+ is a +String+ or Key.
|
284
|
+
# Returns Key instance.
|
282
285
|
#
|
283
|
-
# key = bucket.get('logs/today/1.log') #=>
|
286
|
+
# key = bucket.get('logs/today/1.log') #=>
|
284
287
|
# puts key.data #=> 'sasfasfasdf'
|
285
288
|
#
|
286
289
|
def get(key, headers={})
|
@@ -289,7 +292,7 @@ module Aws
|
|
289
292
|
end
|
290
293
|
|
291
294
|
# Rename object. Returns Aws::S3::Key instance.
|
292
|
-
#
|
295
|
+
#
|
293
296
|
# new_key = bucket.rename_key('logs/today/1.log','logs/today/2.log') #=> #<Aws::S3::Key:0xb7b1e240 ... >
|
294
297
|
# puts key.name #=> 'logs/today/2.log'
|
295
298
|
# key.exists? #=> true
|
@@ -301,7 +304,7 @@ module Aws
|
|
301
304
|
end
|
302
305
|
|
303
306
|
# Create an object copy. Returns a destination Aws::S3::Key instance.
|
304
|
-
#
|
307
|
+
#
|
305
308
|
# new_key = bucket.copy_key('logs/today/1.log','logs/today/2.log') #=> #<Aws::S3::Key:0xb7b1e240 ... >
|
306
309
|
# puts key.name #=> 'logs/today/2.log'
|
307
310
|
# key.exists? #=> true
|
@@ -310,9 +313,9 @@ module Aws
|
|
310
313
|
old_key_or_name = Key.create(self, old_key_or_name.to_s) unless old_key_or_name.is_a?(Key)
|
311
314
|
old_key_or_name.copy(new_key_or_name)
|
312
315
|
end
|
313
|
-
|
316
|
+
|
314
317
|
# Move an object to other location. Returns a destination Aws::S3::Key instance.
|
315
|
-
#
|
318
|
+
#
|
316
319
|
# new_key = bucket.copy_key('logs/today/1.log','logs/today/2.log') #=> #<Aws::S3::Key:0xb7b1e240 ... >
|
317
320
|
# puts key.name #=> 'logs/today/2.log'
|
318
321
|
# key.exists? #=> true
|
@@ -321,18 +324,18 @@ module Aws
|
|
321
324
|
old_key_or_name = Key.create(self, old_key_or_name.to_s) unless old_key_or_name.is_a?(Key)
|
322
325
|
old_key_or_name.move(new_key_or_name)
|
323
326
|
end
|
324
|
-
|
325
|
-
# Remove all keys from a bucket.
|
326
|
-
# Returns +true+.
|
327
|
+
|
328
|
+
# Remove all keys from a bucket.
|
329
|
+
# Returns +true+.
|
327
330
|
#
|
328
331
|
# bucket.clear #=> true
|
329
332
|
#
|
330
333
|
def clear
|
331
|
-
@s3.interface.clear_bucket(@name)
|
334
|
+
@s3.interface.clear_bucket(@name)
|
332
335
|
end
|
333
336
|
|
334
337
|
# Delete all keys where the 'folder_key' can be interpreted
|
335
|
-
# as a 'folder' name.
|
338
|
+
# as a 'folder' name.
|
336
339
|
# Returns an array of string keys that have been deleted.
|
337
340
|
#
|
338
341
|
# bucket.keys.map{|key| key.name}.join(', ') #=> 'test, test/2/34, test/3, test1, test1/logs'
|
@@ -341,10 +344,10 @@ module Aws
|
|
341
344
|
def delete_folder(folder, separator='/')
|
342
345
|
@s3.interface.delete_folder(@name, folder, separator)
|
343
346
|
end
|
344
|
-
|
347
|
+
|
345
348
|
# Delete a bucket. Bucket must be empty.
|
346
|
-
# If +force+ is set, clears and deletes the bucket.
|
347
|
-
# Returns +true+.
|
349
|
+
# If +force+ is set, clears and deletes the bucket.
|
350
|
+
# Returns +true+.
|
348
351
|
#
|
349
352
|
# bucket.delete(true) #=> true
|
350
353
|
#
|
@@ -352,7 +355,7 @@ module Aws
|
|
352
355
|
force ? @s3.interface.force_delete_bucket(@name) : @s3.interface.delete_bucket(@name)
|
353
356
|
end
|
354
357
|
|
355
|
-
# Return a list of grantees.
|
358
|
+
# Return a list of grantees.
|
356
359
|
#
|
357
360
|
def grantees
|
358
361
|
Grantee::grantees(self)
|
@@ -378,7 +381,7 @@ module Aws
|
|
378
381
|
end
|
379
382
|
[hash, meta]
|
380
383
|
end
|
381
|
-
|
384
|
+
|
382
385
|
def self.add_meta_prefix(meta_headers, prefix=S3Interface::AMAZON_METADATA_PREFIX)
|
383
386
|
meta = {}
|
384
387
|
meta_headers.each do |meta_header, value|
|
@@ -392,9 +395,9 @@ module Aws
|
|
392
395
|
end
|
393
396
|
|
394
397
|
|
395
|
-
# Create a new Key instance, but do not create the actual key.
|
398
|
+
# Create a new Key instance, but do not create the actual key.
|
396
399
|
# The +name+ is a +String+.
|
397
|
-
# Returns a new Key instance.
|
400
|
+
# Returns a new Key instance.
|
398
401
|
#
|
399
402
|
# key = Aws::S3::Key.create(bucket, 'logs/today/1.log') #=> #<Aws::S3::Key:0xb7b1e240 ... >
|
400
403
|
# key.exists? #=> true | false
|
@@ -404,12 +407,12 @@ module Aws
|
|
404
407
|
def self.create(bucket, name, data=nil, meta_headers={})
|
405
408
|
new(bucket, name, data, {}, meta_headers)
|
406
409
|
end
|
407
|
-
|
410
|
+
|
408
411
|
# Create a new Key instance, but do not create the actual key.
|
409
412
|
# In normal use this method should not be called directly.
|
410
413
|
# Use Aws::S3::Key.create or bucket.key() instead.
|
411
414
|
#
|
412
|
-
def initialize(bucket, name, data=nil, headers={}, meta_headers={},
|
415
|
+
def initialize(bucket, name, data=nil, headers={}, meta_headers={},
|
413
416
|
last_modified=nil, e_tag=nil, size=nil, storage_class=nil, owner=nil)
|
414
417
|
raise 'Bucket must be a Bucket instance.' unless bucket.is_a?(Bucket)
|
415
418
|
@bucket = bucket
|
@@ -420,13 +423,13 @@ module Aws
|
|
420
423
|
@storage_class = storage_class
|
421
424
|
@owner = owner
|
422
425
|
@last_modified = last_modified
|
423
|
-
if @last_modified && !@last_modified.is_a?(Time)
|
426
|
+
if @last_modified && !@last_modified.is_a?(Time)
|
424
427
|
@last_modified = Time.parse(@last_modified)
|
425
428
|
end
|
426
429
|
@headers, @meta_headers = self.class.split_meta(headers)
|
427
430
|
@meta_headers.merge!(meta_headers)
|
428
431
|
end
|
429
|
-
|
432
|
+
|
430
433
|
# Return key name as a String.
|
431
434
|
#
|
432
435
|
# key = Aws::S3::Key.create(bucket, 'logs/today/1.log') #=> #<Aws::S3::Key:0xb7b1e240 ... >
|
@@ -435,24 +438,24 @@ module Aws
|
|
435
438
|
def to_s
|
436
439
|
@name.to_s
|
437
440
|
end
|
438
|
-
|
441
|
+
|
439
442
|
# Return the full S3 path to this key (bucket/key).
|
440
|
-
#
|
443
|
+
#
|
441
444
|
# key.full_name #=> 'my_awesome_bucket/cool_key'
|
442
445
|
#
|
443
446
|
def full_name(separator='/')
|
444
447
|
"#{@bucket.to_s}#{separator}#{@name}"
|
445
448
|
end
|
446
|
-
|
449
|
+
|
447
450
|
# Return a public link to a key.
|
448
|
-
#
|
451
|
+
#
|
449
452
|
# key.public_link #=> 'https://s3.amazonaws.com:443/my_awesome_bucket/cool_key'
|
450
453
|
#
|
451
454
|
def public_link
|
452
455
|
params = @bucket.s3.interface.params
|
453
456
|
"#{params[:protocol]}://#{params[:server]}:#{params[:port]}/#{full_name('/')}"
|
454
457
|
end
|
455
|
-
|
458
|
+
|
456
459
|
# Return Key data. Retrieve this data from Amazon if it is the first time call.
|
457
460
|
# TODO TRB 6/19/07 What does the above mean? Clarify.
|
458
461
|
#
|
@@ -460,9 +463,9 @@ module Aws
|
|
460
463
|
get if !@data and exists?
|
461
464
|
@data
|
462
465
|
end
|
463
|
-
|
464
|
-
# Retrieve object data and attributes from Amazon.
|
465
|
-
# Returns a +String+.
|
466
|
+
|
467
|
+
# Retrieve object data and attributes from Amazon.
|
468
|
+
# Returns a +String+.
|
466
469
|
#
|
467
470
|
def get(headers={}, &block)
|
468
471
|
response = @bucket.s3.interface.get(@bucket.name, @name, headers, &block)
|
@@ -471,9 +474,9 @@ module Aws
|
|
471
474
|
refresh(false)
|
472
475
|
@data
|
473
476
|
end
|
474
|
-
|
475
|
-
# Store object data on S3.
|
476
|
-
# Parameter +data+ is a +String+ or S3Object instance.
|
477
|
+
|
478
|
+
# Store object data on S3.
|
479
|
+
# Parameter +data+ is a +String+ or S3Object instance.
|
477
480
|
# Returns +true+.
|
478
481
|
#
|
479
482
|
# key = Aws::S3::Key.create(bucket, 'logs/today/1.log')
|
@@ -488,9 +491,9 @@ module Aws
|
|
488
491
|
meta = self.class.add_meta_prefix(@meta_headers)
|
489
492
|
@bucket.s3.interface.put(@bucket.name, @name, @data, meta.merge(headers))
|
490
493
|
end
|
491
|
-
|
494
|
+
|
492
495
|
# Rename an object. Returns new object name.
|
493
|
-
#
|
496
|
+
#
|
494
497
|
# key = Aws::S3::Key.create(bucket, 'logs/today/1.log') #=> #<Aws::S3::Key:0xb7b1e240 ... >
|
495
498
|
# key.rename('logs/today/2.log') #=> 'logs/today/2.log'
|
496
499
|
# puts key.name #=> 'logs/today/2.log'
|
@@ -500,7 +503,7 @@ module Aws
|
|
500
503
|
@bucket.s3.interface.rename(@bucket.name, @name, new_name)
|
501
504
|
@name = new_name
|
502
505
|
end
|
503
|
-
|
506
|
+
|
504
507
|
# Create an object copy. Returns a destination Aws::S3::Key instance.
|
505
508
|
#
|
506
509
|
# # Key instance as destination
|
@@ -535,7 +538,7 @@ module Aws
|
|
535
538
|
# key1.exists? #=> false
|
536
539
|
# key2.exists? #=> true
|
537
540
|
# puts key2.data #=> 'Olala!'
|
538
|
-
#
|
541
|
+
#
|
539
542
|
# # String as destination
|
540
543
|
# key = Aws::S3::Key.create(bucket, 'logs/today/777.log') #=> #<Aws::S3::Key:0xb7b1e240 ... >
|
541
544
|
# key.put('Olala!') #=> true
|
@@ -548,10 +551,10 @@ module Aws
|
|
548
551
|
@bucket.s3.interface.move(@bucket.name, @name, new_key_or_name.bucket.name, new_key_or_name.name)
|
549
552
|
new_key_or_name
|
550
553
|
end
|
551
|
-
|
554
|
+
|
552
555
|
# Retrieve key info from bucket and update attributes.
|
553
|
-
# Refresh meta-headers (by calling +head+ method) if +head+ is set.
|
554
|
-
# Returns +true+ if the key exists in bucket and +false+ otherwise.
|
556
|
+
# Refresh meta-headers (by calling +head+ method) if +head+ is set.
|
557
|
+
# Returns +true+ if the key exists in bucket and +false+ otherwise.
|
555
558
|
#
|
556
559
|
# key = Aws::S3::Key.create(bucket, 'logs/today/1.log')
|
557
560
|
# key.e_tag #=> nil
|
@@ -577,7 +580,7 @@ module Aws
|
|
577
580
|
end
|
578
581
|
|
579
582
|
# Updates headers and meta-headers from S3.
|
580
|
-
# Returns +true+.
|
583
|
+
# Returns +true+.
|
581
584
|
#
|
582
585
|
# key.meta_headers #=> {"family"=>"qwerty"}
|
583
586
|
# key.head #=> true
|
@@ -587,7 +590,7 @@ module Aws
|
|
587
590
|
@headers, @meta_headers = self.class.split_meta(@bucket.s3.interface.head(@bucket, @name))
|
588
591
|
true
|
589
592
|
end
|
590
|
-
|
593
|
+
|
591
594
|
# Reload meta-headers only. Returns meta-headers hash.
|
592
595
|
#
|
593
596
|
# key.reload_meta #=> {"family"=>"qwerty", "name"=>"asdfg"}
|
@@ -595,7 +598,7 @@ module Aws
|
|
595
598
|
def reload_meta
|
596
599
|
@meta_headers = self.class.split_meta(@bucket.s3.interface.head(@bucket, @name)).last
|
597
600
|
end
|
598
|
-
|
601
|
+
|
599
602
|
# Replace meta-headers by new hash at S3. Returns new meta-headers hash.
|
600
603
|
#
|
601
604
|
# key.reload_meta #=> {"family"=>"qwerty", "name"=>"asdfg"}
|
@@ -607,9 +610,9 @@ module Aws
|
|
607
610
|
@bucket.s3.interface.copy(@bucket.name, @name, @bucket.name, @name, :replace, meta)
|
608
611
|
@meta_headers = self.class.split_meta(meta)[1]
|
609
612
|
end
|
610
|
-
|
611
|
-
# Check for existence of the key in the given bucket.
|
612
|
-
# Returns +true+ or +false+.
|
613
|
+
|
614
|
+
# Check for existence of the key in the given bucket.
|
615
|
+
# Returns +true+ or +false+.
|
613
616
|
#
|
614
617
|
# key = Aws::S3::Key.create(bucket,'logs/today/1.log')
|
615
618
|
# key.exists? #=> false
|
@@ -619,53 +622,53 @@ module Aws
|
|
619
622
|
def exists?
|
620
623
|
@bucket.key(self).last_modified ? true : false
|
621
624
|
end
|
622
|
-
|
623
|
-
# Remove key from bucket.
|
624
|
-
# Returns +true+.
|
625
|
+
|
626
|
+
# Remove key from bucket.
|
627
|
+
# Returns +true+.
|
625
628
|
#
|
626
629
|
# key.delete #=> true
|
627
630
|
#
|
628
631
|
def delete
|
629
632
|
raise 'Key name must be specified.' if @name.blank?
|
630
|
-
@bucket.s3.interface.delete(@bucket, @name)
|
633
|
+
@bucket.s3.interface.delete(@bucket, @name)
|
631
634
|
end
|
632
|
-
|
633
|
-
# Return a list of grantees.
|
635
|
+
|
636
|
+
# Return a list of grantees.
|
634
637
|
#
|
635
638
|
def grantees
|
636
639
|
Grantee::grantees(self)
|
637
640
|
end
|
638
|
-
|
641
|
+
|
639
642
|
end
|
640
|
-
|
643
|
+
|
641
644
|
|
642
645
|
class Owner
|
643
646
|
attr_reader :id, :name
|
644
|
-
|
647
|
+
|
645
648
|
def initialize(id, name)
|
646
649
|
@id = id
|
647
650
|
@name = name
|
648
651
|
end
|
649
|
-
|
652
|
+
|
650
653
|
# Return Owner name as a +String+.
|
651
654
|
def to_s
|
652
655
|
@name
|
653
656
|
end
|
654
657
|
end
|
655
|
-
|
656
|
-
|
658
|
+
|
659
|
+
|
657
660
|
# There are 2 ways to set permissions for a bucket or key (called a +thing+ below):
|
658
661
|
#
|
659
|
-
# 1 . Use +perms+ param to set 'Canned Access Policies' when calling the <tt>bucket.create</tt>,
|
660
|
-
# <tt>bucket.put</tt> and <tt>key.put</tt> methods.
|
662
|
+
# 1 . Use +perms+ param to set 'Canned Access Policies' when calling the <tt>bucket.create</tt>,
|
663
|
+
# <tt>bucket.put</tt> and <tt>key.put</tt> methods.
|
661
664
|
# The +perms+ param can take these values: 'private', 'public-read', 'public-read-write' and
|
662
|
-
# 'authenticated-read'.
|
665
|
+
# 'authenticated-read'.
|
663
666
|
# (see http://docs.amazonwebservices.com/AmazonS3/2006-03-01/RESTAccessPolicy.html).
|
664
667
|
#
|
665
668
|
# bucket = s3.bucket('bucket_for_kd_test_13', true, 'public-read')
|
666
669
|
# key.put('Woohoo!','public-read-write' )
|
667
670
|
#
|
668
|
-
# 2 . Use Grantee instances (the permission is a +String+ or an +Array+ of: 'READ', 'WRITE',
|
671
|
+
# 2 . Use Grantee instances (the permission is a +String+ or an +Array+ of: 'READ', 'WRITE',
|
669
672
|
# 'READ_ACP', 'WRITE_ACP', 'FULL_CONTROL'):
|
670
673
|
#
|
671
674
|
# bucket = s3.bucket('my_awesome_bucket', true)
|
@@ -690,9 +693,9 @@ module Aws
|
|
690
693
|
attr_reader :name
|
691
694
|
# Array of permissions.
|
692
695
|
attr_accessor :perms
|
693
|
-
|
696
|
+
|
694
697
|
# Retrieve Owner information and a list of Grantee instances that have
|
695
|
-
# a access to this thing (bucket or key).
|
698
|
+
# a access to this thing (bucket or key).
|
696
699
|
#
|
697
700
|
# bucket = s3.bucket('my_awesome_bucket', true, 'public-read')
|
698
701
|
# ...
|
@@ -706,7 +709,7 @@ module Aws
|
|
706
709
|
end
|
707
710
|
hash = bucket.s3.interface.get_acl_parse(bucket.to_s, key.to_s)
|
708
711
|
owner = Owner.new(hash[:owner][:id], hash[:owner][:display_name])
|
709
|
-
|
712
|
+
|
710
713
|
grantees = []
|
711
714
|
hash[:grantees].each do |id, params|
|
712
715
|
grantees << new(thing, id, params[:permissions], nil, params[:display_name])
|
@@ -714,7 +717,7 @@ module Aws
|
|
714
717
|
[owner, grantees]
|
715
718
|
end
|
716
719
|
|
717
|
-
# Retrieves a list of Grantees instances that have an access to this thing(bucket or key).
|
720
|
+
# Retrieves a list of Grantees instances that have an access to this thing(bucket or key).
|
718
721
|
#
|
719
722
|
# bucket = s3.bucket('my_awesome_bucket', true, 'public-read')
|
720
723
|
# ...
|
@@ -742,11 +745,11 @@ module Aws
|
|
742
745
|
bucket.s3.interface.put_acl(bucket.to_s, key.to_s, body)
|
743
746
|
end
|
744
747
|
|
745
|
-
# Create a new Grantee instance.
|
748
|
+
# Create a new Grantee instance.
|
746
749
|
# Grantee +id+ must exist on S3. If +action+ == :refresh, then retrieve
|
747
750
|
# permissions from S3 and update @perms. If +action+ == :apply, then apply
|
748
751
|
# perms to +thing+ at S3. If +action+ == :apply_and_refresh then it performs.
|
749
|
-
# both the actions. This is used for the new grantees that had no perms to
|
752
|
+
# both the actions. This is used for the new grantees that had no perms to
|
750
753
|
# this thing before. The default action is :refresh.
|
751
754
|
#
|
752
755
|
# bucket = s3.bucket('my_awesome_bucket', true, 'public-read')
|
@@ -766,7 +769,7 @@ module Aws
|
|
766
769
|
when :apply_and_refresh then apply; refresh
|
767
770
|
end
|
768
771
|
end
|
769
|
-
|
772
|
+
|
770
773
|
# Return +true+ if the grantee has any permissions to the thing.
|
771
774
|
def exists?
|
772
775
|
self.class.grantees(@thing).each do |grantee|
|
@@ -774,26 +777,26 @@ module Aws
|
|
774
777
|
end
|
775
778
|
false
|
776
779
|
end
|
777
|
-
|
780
|
+
|
778
781
|
# Return Grantee type (+String+): "Group" or "CanonicalUser".
|
779
782
|
def type
|
780
783
|
@id[/^http:/] ? "Group" : "CanonicalUser"
|
781
784
|
end
|
782
|
-
|
785
|
+
|
783
786
|
# Return a name or an id.
|
784
787
|
def to_s
|
785
788
|
@name || @id
|
786
789
|
end
|
787
|
-
|
788
|
-
# Add permissions for grantee.
|
789
|
-
# Permissions: 'READ', 'WRITE', 'READ_ACP', 'WRITE_ACP', 'FULL_CONTROL'.
|
790
|
+
|
791
|
+
# Add permissions for grantee.
|
792
|
+
# Permissions: 'READ', 'WRITE', 'READ_ACP', 'WRITE_ACP', 'FULL_CONTROL'.
|
790
793
|
# See http://docs.amazonwebservices.com/AmazonS3/2006-03-01/UsingPermissions.html .
|
791
|
-
# Returns +true+.
|
794
|
+
# Returns +true+.
|
792
795
|
#
|
793
796
|
# grantee.grant('FULL_CONTROL') #=> true
|
794
797
|
# grantee.grant('FULL_CONTROL','WRITE','READ') #=> true
|
795
798
|
# grantee.grant(['WRITE_ACP','READ','READ_ACP']) #=> true
|
796
|
-
#
|
799
|
+
#
|
797
800
|
def grant(*permissions)
|
798
801
|
permissions.flatten!
|
799
802
|
old_perms = @perms.dup
|
@@ -802,11 +805,11 @@ module Aws
|
|
802
805
|
return true if @perms == old_perms
|
803
806
|
apply
|
804
807
|
end
|
805
|
-
|
806
|
-
# Revoke permissions for grantee.
|
808
|
+
|
809
|
+
# Revoke permissions for grantee.
|
807
810
|
# Permissions: 'READ', 'WRITE', 'READ_ACP', 'WRITE_ACP', 'FULL_CONTROL'
|
808
811
|
# See http://docs.amazonwebservices.com/AmazonS3/2006-03-01/UsingPermissions.html .
|
809
|
-
# Default value is 'FULL_CONTROL'.
|
812
|
+
# Default value is 'FULL_CONTROL'.
|
810
813
|
# Returns +true+.
|
811
814
|
#
|
812
815
|
# grantee.revoke('READ') #=> true
|
@@ -821,8 +824,8 @@ module Aws
|
|
821
824
|
return true if @perms == old_perms
|
822
825
|
apply
|
823
826
|
end
|
824
|
-
|
825
|
-
# Revoke all permissions for this grantee.
|
827
|
+
|
828
|
+
# Revoke all permissions for this grantee.
|
826
829
|
# Returns +true+.
|
827
830
|
#
|
828
831
|
# grantee.drop #=> true
|
@@ -831,7 +834,7 @@ module Aws
|
|
831
834
|
@perms = []
|
832
835
|
apply
|
833
836
|
end
|
834
|
-
|
837
|
+
|
835
838
|
# Refresh grantee perms for its +thing+.
|
836
839
|
# Returns +true+ if the grantee has perms for this +thing+ or
|
837
840
|
# +false+ otherwise, and updates @perms value as a side-effect.
|
@@ -856,7 +859,7 @@ module Aws
|
|
856
859
|
# Apply current grantee @perms to +thing+. This method is called internally by the +grant+
|
857
860
|
# and +revoke+ methods. In normal use this method should not
|
858
861
|
# be called directly.
|
859
|
-
#
|
862
|
+
#
|
860
863
|
# grantee.perms = ['FULL_CONTROL']
|
861
864
|
# grantee.apply #=> true
|
862
865
|
#
|
@@ -885,7 +888,7 @@ module Aws
|
|
885
888
|
end
|
886
889
|
|
887
890
|
end
|
888
|
-
|
891
|
+
|
889
892
|
end
|
890
893
|
|
891
894
|
# Aws::S3Generator and Aws::S3Generator::Bucket methods:
|
@@ -927,11 +930,11 @@ module Aws
|
|
927
930
|
#
|
928
931
|
class S3Generator
|
929
932
|
attr_reader :interface
|
930
|
-
|
933
|
+
|
931
934
|
def initialize(aws_access_key_id, aws_secret_access_key, params={})
|
932
935
|
@interface = S3Interface.new(aws_access_key_id, aws_secret_access_key, params)
|
933
936
|
end
|
934
|
-
|
937
|
+
|
935
938
|
# Generate link to list all buckets
|
936
939
|
#
|
937
940
|
# s3.buckets(1.hour)
|
@@ -947,41 +950,41 @@ module Aws
|
|
947
950
|
def bucket(name, expires=nil, headers={})
|
948
951
|
Bucket.create(self, name.to_s)
|
949
952
|
end
|
950
|
-
|
953
|
+
|
951
954
|
class Bucket
|
952
955
|
attr_reader :s3, :name
|
953
|
-
|
956
|
+
|
954
957
|
def to_s
|
955
958
|
@name
|
956
959
|
end
|
957
960
|
alias_method :full_name, :to_s
|
958
|
-
|
961
|
+
|
959
962
|
# Return a public link to bucket.
|
960
|
-
#
|
963
|
+
#
|
961
964
|
# bucket.public_link #=> 'https://s3.amazonaws.com:443/my_awesome_bucket'
|
962
965
|
#
|
963
966
|
def public_link
|
964
967
|
params = @s3.interface.params
|
965
968
|
"#{params[:protocol]}://#{params[:server]}:#{params[:port]}/#{full_name}"
|
966
969
|
end
|
967
|
-
|
968
|
-
# Create new S3LinkBucket instance and generate creation link for it.
|
970
|
+
|
971
|
+
# Create new S3LinkBucket instance and generate creation link for it.
|
969
972
|
def self.create(s3, name, expires=nil, headers={})
|
970
973
|
new(s3, name.to_s)
|
971
974
|
end
|
972
|
-
|
973
|
-
# Create new S3LinkBucket instance.
|
975
|
+
|
976
|
+
# Create new S3LinkBucket instance.
|
974
977
|
def initialize(s3, name)
|
975
978
|
@s3, @name = s3, name.to_s
|
976
979
|
end
|
977
|
-
|
978
|
-
# Return a link to create this bucket.
|
980
|
+
|
981
|
+
# Return a link to create this bucket.
|
979
982
|
#
|
980
983
|
def create_link(expires=nil, headers={})
|
981
984
|
@s3.interface.create_bucket_link(@name, expires, headers)
|
982
985
|
end
|
983
986
|
|
984
|
-
# Generate link to list keys.
|
987
|
+
# Generate link to list keys.
|
985
988
|
#
|
986
989
|
# bucket.keys
|
987
990
|
# bucket.keys('prefix'=>'logs')
|
@@ -999,7 +1002,7 @@ module Aws
|
|
999
1002
|
Key.new(self, name)
|
1000
1003
|
end
|
1001
1004
|
|
1002
|
-
# Generates link to PUT key data.
|
1005
|
+
# Generates link to PUT key data.
|
1003
1006
|
#
|
1004
1007
|
# puts bucket.put('logs/today/1.log', 2.hour)
|
1005
1008
|
#
|
@@ -1007,16 +1010,16 @@ module Aws
|
|
1007
1010
|
meta = Aws::S3::Key.add_meta_prefix(meta_headers)
|
1008
1011
|
@s3.interface.put_link(@name, key.to_s, nil, expires, meta.merge(headers))
|
1009
1012
|
end
|
1010
|
-
|
1011
|
-
# Generate link to GET key data.
|
1013
|
+
|
1014
|
+
# Generate link to GET key data.
|
1012
1015
|
#
|
1013
1016
|
# bucket.get('logs/today/1.log', 1.hour)
|
1014
1017
|
#
|
1015
1018
|
def get(key, expires=nil, headers={})
|
1016
1019
|
@s3.interface.get_link(@name, key.to_s, expires, headers)
|
1017
1020
|
end
|
1018
|
-
|
1019
|
-
# Generate link to delete bucket.
|
1021
|
+
|
1022
|
+
# Generate link to delete bucket.
|
1020
1023
|
#
|
1021
1024
|
# bucket.delete(2.hour)
|
1022
1025
|
#
|
@@ -1028,60 +1031,60 @@ module Aws
|
|
1028
1031
|
|
1029
1032
|
class Key
|
1030
1033
|
attr_reader :bucket, :name
|
1031
|
-
|
1034
|
+
|
1032
1035
|
def to_s
|
1033
1036
|
@name
|
1034
1037
|
end
|
1035
|
-
|
1038
|
+
|
1036
1039
|
# Return a full S# name (bucket/key).
|
1037
|
-
#
|
1040
|
+
#
|
1038
1041
|
# key.full_name #=> 'my_awesome_bucket/cool_key'
|
1039
1042
|
#
|
1040
1043
|
def full_name(separator='/')
|
1041
1044
|
"#{@bucket.to_s}#{separator}#{@name}"
|
1042
1045
|
end
|
1043
|
-
|
1046
|
+
|
1044
1047
|
# Return a public link to key.
|
1045
|
-
#
|
1048
|
+
#
|
1046
1049
|
# key.public_link #=> 'https://s3.amazonaws.com:443/my_awesome_bucket/cool_key'
|
1047
1050
|
#
|
1048
1051
|
def public_link
|
1049
1052
|
params = @bucket.s3.interface.params
|
1050
1053
|
"#{params[:protocol]}://#{params[:server]}:#{params[:port]}/#{full_name('/')}"
|
1051
1054
|
end
|
1052
|
-
|
1055
|
+
|
1053
1056
|
def initialize(bucket, name, meta_headers={})
|
1054
1057
|
@bucket = bucket
|
1055
1058
|
@name = name.to_s
|
1056
1059
|
@meta_headers = meta_headers
|
1057
1060
|
raise 'Key name can not be empty.' if @name.blank?
|
1058
1061
|
end
|
1059
|
-
|
1060
|
-
# Generate link to PUT key data.
|
1062
|
+
|
1063
|
+
# Generate link to PUT key data.
|
1061
1064
|
#
|
1062
1065
|
# puts bucket.put('logs/today/1.log', '123', 2.hour) #=> https://s3.amazonaws.com:443/my_awesome_bucket/logs%2Ftoday%2F1.log?Signature=B...D&Expires=1180820032&AWSAccessKeyId=1...2
|
1063
1066
|
#
|
1064
1067
|
def put(expires=nil, headers={})
|
1065
1068
|
@bucket.put(@name.to_s, @meta_headers, expires, headers)
|
1066
1069
|
end
|
1067
|
-
|
1068
|
-
# Generate link to GET key data.
|
1070
|
+
|
1071
|
+
# Generate link to GET key data.
|
1069
1072
|
#
|
1070
1073
|
# bucket.get('logs/today/1.log', 1.hour) #=> https://s3.amazonaws.com:443/my_awesome_bucket/logs%2Ftoday%2F1.log?Signature=h...M%3D&Expires=1180820032&AWSAccessKeyId=1...2
|
1071
1074
|
#
|
1072
1075
|
def get(expires=nil, headers={})
|
1073
1076
|
@bucket.s3.interface.get_link(@bucket.to_s, @name, expires, headers)
|
1074
1077
|
end
|
1075
|
-
|
1076
|
-
# Generate link to delete key.
|
1078
|
+
|
1079
|
+
# Generate link to delete key.
|
1077
1080
|
#
|
1078
1081
|
# bucket.delete(2.hour) #=> https://s3.amazonaws.com:443/my_awesome_bucket/logs%2Ftoday%2F1.log?Signature=4...D&Expires=1180820032&AWSAccessKeyId=1...2
|
1079
1082
|
#
|
1080
1083
|
def delete(expires=nil, headers={})
|
1081
1084
|
@bucket.s3.interface.delete_link(@bucket.to_s, @name, expires, headers)
|
1082
1085
|
end
|
1083
|
-
|
1084
|
-
# Generate link to head key.
|
1086
|
+
|
1087
|
+
# Generate link to head key.
|
1085
1088
|
#
|
1086
1089
|
# bucket.head(2.hour) #=> https://s3.amazonaws.com:443/my_awesome_bucket/logs%2Ftoday%2F1.log?Signature=4...D&Expires=1180820032&AWSAccessKeyId=1...2
|
1087
1090
|
#
|
data/lib/sdb/active_sdb.rb
CHANGED
@@ -383,7 +383,8 @@ module Aws
|
|
383
383
|
@next_token = query_result[:next_token]
|
384
384
|
items = query_result[:items].map do |hash|
|
385
385
|
id, attributes = hash.shift
|
386
|
-
new_item = self.new(
|
386
|
+
new_item = self.new( )
|
387
|
+
new_item.initialize_from_db(attributes.merge({ 'id' => id }))
|
387
388
|
new_item.mark_as_old
|
388
389
|
new_item
|
389
390
|
end
|
@@ -600,6 +601,11 @@ module Aws
|
|
600
601
|
@new_record = true
|
601
602
|
end
|
602
603
|
|
604
|
+
# This is to separate initialization from user vs coming from db (ie: find())
|
605
|
+
def initialize_from_db(attrs={})
|
606
|
+
initialize(attrs)
|
607
|
+
end
|
608
|
+
|
603
609
|
# Create and save new Item instance.
|
604
610
|
# +Attributes+ is a hash: { attribute1 => values1, ..., attributeN => valuesN }.
|
605
611
|
#
|
@@ -794,6 +800,7 @@ module Aws
|
|
794
800
|
def save(options={})
|
795
801
|
pre_save2
|
796
802
|
atts_to_save = @attributes.dup
|
803
|
+
#puts 'atts_to_save=' + atts_to_save.inspect
|
797
804
|
#options = params.first.is_a?(Hash) ? params.pop : {}
|
798
805
|
if options[:except]
|
799
806
|
options[:except].each do |e|
|
@@ -805,6 +812,7 @@ module Aws
|
|
805
812
|
dirty_atts = options[:dirty_atts]
|
806
813
|
atts_to_save.delete_if { |key, value| !dirty_atts.has_key?(key) }
|
807
814
|
end
|
815
|
+
#puts 'atts_to_save2=' + atts_to_save.inspect
|
808
816
|
connection.put_attributes(domain, id, atts_to_save, :replace)
|
809
817
|
apres_save2
|
810
818
|
@attributes
|
@@ -122,7 +122,20 @@ module Aws
|
|
122
122
|
conn_mode = @params[:connection_mode]
|
123
123
|
if conn_mode == :per_request
|
124
124
|
http_conn = Rightscale::HttpConnection.new(:exception => AwsError, :logger => @logger)
|
125
|
-
|
125
|
+
retry_count = 1
|
126
|
+
count = 0
|
127
|
+
while count < retry_count
|
128
|
+
puts 'RETRYING QUERY due to QueryTimeout...' if count > 0
|
129
|
+
begin
|
130
|
+
ret = request_info_impl(http_conn, @@bench, request, parser)
|
131
|
+
break
|
132
|
+
rescue Aws::AwsError => ex
|
133
|
+
if !ex.include?(/QueryTimeout/)
|
134
|
+
raise ex
|
135
|
+
end
|
136
|
+
end
|
137
|
+
count += 1
|
138
|
+
end
|
126
139
|
http_conn.finish
|
127
140
|
elsif conn_mode == :per_thread || conn_mode == :single
|
128
141
|
thread = conn_mode == :per_thread ? Thread.current : Thread.main
|
data/lib/sqs/right_sqs.rb
CHANGED
@@ -87,8 +87,9 @@ module Aws
|
|
87
87
|
# Aws::Sqs.queue('my_awesome_queue') #=> #<Aws::Sqs::Queue:0xb7b626e4 ... >
|
88
88
|
#
|
89
89
|
def queue(queue_name, create=true, visibility=nil)
|
90
|
-
url = @interface.queue_url_by_name(queue_name)
|
91
|
-
url = (create ? @interface.create_queue(queue_name, visibility) : nil) unless url
|
90
|
+
# url = @interface.queue_url_by_name(queue_name)
|
91
|
+
# url = (create ? @interface.create_queue(queue_name, visibility) : nil) unless url
|
92
|
+
url = @interface.create_queue(queue_name, visibility) # this returns the url even if it exists
|
92
93
|
url ? Queue.new(self, url) : nil
|
93
94
|
end
|
94
95
|
|
@@ -38,10 +38,10 @@ module Aws
|
|
38
38
|
class SqsInterface < AwsBase
|
39
39
|
include AwsBaseInterface
|
40
40
|
|
41
|
-
API_VERSION = "
|
41
|
+
API_VERSION = "2009-02-01"
|
42
42
|
DEFAULT_HOST = "queue.amazonaws.com"
|
43
|
-
DEFAULT_PORT =
|
44
|
-
DEFAULT_PROTOCOL = '
|
43
|
+
DEFAULT_PORT = 443
|
44
|
+
DEFAULT_PROTOCOL = 'https'
|
45
45
|
REQUEST_TTL = 30
|
46
46
|
DEFAULT_VISIBILITY_TIMEOUT = 30
|
47
47
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aws
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Travis Reeder
|
@@ -11,7 +11,7 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2009-12-
|
14
|
+
date: 2009-12-18 00:00:00 -08:00
|
15
15
|
default_executable:
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|