right_aws 2.0.0 → 2.1.0

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.
Files changed (50) hide show
  1. data/History.txt +22 -1
  2. data/Manifest.txt +11 -1
  3. data/README.txt +0 -4
  4. data/Rakefile +19 -25
  5. data/lib/acf/right_acf_interface.rb +199 -135
  6. data/lib/acf/right_acf_invalidations.rb +144 -0
  7. data/lib/acf/right_acf_origin_access_identities.rb +4 -4
  8. data/lib/acf/right_acf_streaming_interface.rb +19 -26
  9. data/lib/acw/right_acw_interface.rb +1 -2
  10. data/lib/as/right_as_interface.rb +6 -7
  11. data/lib/awsbase/right_awsbase.rb +287 -91
  12. data/lib/awsbase/support.rb +2 -82
  13. data/lib/awsbase/version.rb +9 -0
  14. data/lib/ec2/right_ec2.rb +101 -38
  15. data/lib/ec2/right_ec2_ebs.rb +71 -58
  16. data/lib/ec2/right_ec2_images.rb +82 -42
  17. data/lib/ec2/right_ec2_instances.rb +74 -44
  18. data/lib/ec2/right_ec2_placement_groups.rb +108 -0
  19. data/lib/ec2/right_ec2_reserved_instances.rb +50 -46
  20. data/lib/ec2/right_ec2_security_groups.rb +148 -32
  21. data/lib/ec2/right_ec2_spot_instances.rb +53 -27
  22. data/lib/ec2/right_ec2_tags.rb +139 -0
  23. data/lib/ec2/right_ec2_vpc.rb +151 -139
  24. data/lib/ec2/right_ec2_windows_mobility.rb +84 -0
  25. data/lib/elb/right_elb_interface.rb +93 -18
  26. data/lib/iam/right_iam_access_keys.rb +71 -0
  27. data/lib/iam/right_iam_groups.rb +195 -0
  28. data/lib/iam/right_iam_interface.rb +341 -0
  29. data/lib/iam/right_iam_mfa_devices.rb +67 -0
  30. data/lib/iam/right_iam_users.rb +251 -0
  31. data/lib/rds/right_rds_interface.rb +513 -202
  32. data/lib/right_aws.rb +12 -12
  33. data/lib/route_53/right_route_53_interface.rb +630 -0
  34. data/lib/s3/right_s3.rb +9 -12
  35. data/lib/s3/right_s3_interface.rb +10 -11
  36. data/lib/sdb/active_sdb.rb +18 -33
  37. data/lib/sdb/right_sdb_interface.rb +36 -4
  38. data/lib/sqs/right_sqs.rb +1 -2
  39. data/lib/sqs/right_sqs_gen2.rb +0 -1
  40. data/lib/sqs/right_sqs_gen2_interface.rb +4 -5
  41. data/lib/sqs/right_sqs_interface.rb +6 -7
  42. data/right_aws.gemspec +91 -0
  43. data/test/awsbase/test_helper.rb +2 -0
  44. data/test/awsbase/test_right_awsbase.rb +12 -0
  45. data/test/s3/test_right_s3.rb +1 -1
  46. data/test/sdb/test_active_sdb.rb +1 -1
  47. data/test/sdb/test_batch_put_attributes.rb +54 -0
  48. data/test/sqs/test_right_sqs.rb +0 -6
  49. data/test/sqs/test_right_sqs_gen2.rb +1 -1
  50. metadata +109 -58
@@ -59,7 +59,6 @@ module RightAws
59
59
  # {:server => 's3.amazonaws.com' # Amazon service host: 's3.amazonaws.com'(default)
60
60
  # :port => 443 # Amazon service port: 80 or 443(default)
61
61
  # :protocol => 'https' # Amazon service protocol: 'http' or 'https'(default)
62
- # :multi_thread => true|false # Multi-threaded (connection per each thread): true or false(default)
63
62
  # :logger => Logger Object} # Logger instance: logs to STDOUT if omitted }
64
63
  def initialize(aws_access_key_id=nil, aws_secret_access_key=nil, params={})
65
64
  @interface = S3Interface.new(aws_access_key_id, aws_secret_access_key, params)
@@ -217,11 +216,10 @@ module RightAws
217
216
  #
218
217
  # keys, service = bucket.keys_and_service({'max-keys'=> 2, 'prefix' => 'logs'})
219
218
  # p keys #=> # 2 keys array
220
- # p service #=> {"max-keys"=>"2", "prefix"=>"logs", "name"=>"my_awesome_bucket", "marker"=>"", "is_truncated"=>true}
219
+ # p service #=> {"max-keys"=>"2", "prefix"=>"logs", "name"=>"my_awesome_bucket", "marker"=>"", "is_truncated"=>true, :common_prefixes=>[]}
221
220
  #
222
221
  def keys_and_service(options={}, head=false)
223
222
  opt = {}; options.each{ |key, value| opt[key.to_s] = value }
224
- service_data = {}
225
223
  thislist = {}
226
224
  list = []
227
225
  @s3.interface.incrementally_list_bucket(@name, opt) do |thislist|
@@ -232,10 +230,8 @@ module RightAws
232
230
  list << key
233
231
  end
234
232
  end
235
- thislist.each_key do |key|
236
- service_data[key] = thislist[key] unless (key == :contents || key == :common_prefixes)
237
- end
238
- [list, service_data]
233
+ thislist.delete(:contents)
234
+ [list, thislist]
239
235
  end
240
236
 
241
237
  # Retrieve key information from Amazon.
@@ -249,7 +245,7 @@ module RightAws
249
245
  # key.head
250
246
  #
251
247
  def key(key_name, head=false)
252
- raise 'Key name can not be empty.' if key_name.blank?
248
+ raise 'Key name can not be empty.' if key_name.right_blank?
253
249
  key_instance = nil
254
250
  # if this key exists - find it ....
255
251
  keys({'prefix'=>key_name}, head).each do |key|
@@ -346,9 +342,10 @@ module RightAws
346
342
  # If +force+ is set, clears and deletes the bucket.
347
343
  # Returns +true+.
348
344
  #
349
- # bucket.delete(true) #=> true
345
+ # bucket.delete(:force => true) #=> true
350
346
  #
351
- def delete(force=false)
347
+ def delete(options={})
348
+ force = options.is_a?(Hash) && options[:force]==true
352
349
  force ? @s3.interface.force_delete_bucket(@name) : @s3.interface.delete_bucket(@name)
353
350
  end
354
351
 
@@ -650,7 +647,7 @@ module RightAws
650
647
  # key.delete #=> true
651
648
  #
652
649
  def delete
653
- raise 'Key name must be specified.' if @name.blank?
650
+ raise 'Key name must be specified.' if @name.right_blank?
654
651
  @bucket.s3.interface.delete(@bucket, @name)
655
652
  end
656
653
 
@@ -1086,7 +1083,7 @@ module RightAws
1086
1083
  @bucket = bucket
1087
1084
  @name = name.to_s
1088
1085
  @meta_headers = meta_headers
1089
- raise 'Key name can not be empty.' if @name.blank?
1086
+ raise 'Key name can not be empty.' if @name.right_blank?
1090
1087
  end
1091
1088
 
1092
1089
  # Generate link to PUT key data.
@@ -63,14 +63,13 @@ module RightAws
63
63
 
64
64
  # Creates new RightS3 instance.
65
65
  #
66
- # s3 = RightAws::S3Interface.new('1E3GDYEOGFJPIT7XXXXXX','hgTHt68JY07JKUY08ftHYtERkjgtfERn57XXXXXX', {:multi_thread => true, :logger => Logger.new('/tmp/x.log')}) #=> #<RightAws::S3Interface:0xb7b3c27c>
66
+ # s3 = RightAws::S3Interface.new('1E3GDYEOGFJPIT7XXXXXX','hgTHt68JY07JKUY08ftHYtERkjgtfERn57XXXXXX', {:logger => Logger.new('/tmp/x.log')}) #=> #<RightAws::S3Interface:0xb7b3c27c>
67
67
  #
68
68
  # Params is a hash:
69
69
  #
70
70
  # {:server => 's3.amazonaws.com' # Amazon service host: 's3.amazonaws.com'(default)
71
71
  # :port => 443 # Amazon service port: 80 or 443(default)
72
72
  # :protocol => 'https' # Amazon service protocol: 'http' or 'https'(default)
73
- # :multi_thread => true|false # Multi-threaded (connection per each thread): true or false(default)
74
73
  # :logger => Logger Object} # Logger instance: logs to STDOUT if omitted }
75
74
  #
76
75
  def initialize(aws_access_key_id=nil, aws_secret_access_key=nil, params={})
@@ -162,7 +161,7 @@ module RightAws
162
161
  headers['content-type'] ||= ''
163
162
  headers['date'] = Time.now.httpdate
164
163
  # create request
165
- request = "Net::HTTP::#{method.capitalize}".constantize.new(path)
164
+ request = "Net::HTTP::#{method.capitalize}".right_constantize.new(path)
166
165
  request.body = data if data
167
166
  # set request headers and meta headers
168
167
  headers.each { |key, value| request[key.to_s] = value }
@@ -214,7 +213,7 @@ module RightAws
214
213
  else headers[:location].to_s
215
214
  end
216
215
 
217
- unless location.blank?
216
+ unless location.right_blank?
218
217
  data = "<CreateBucketConfiguration><LocationConstraint>#{location}</LocationConstraint></CreateBucketConfiguration>"
219
218
  end
220
219
  req_hash = generate_rest_request('PUT', headers.merge(:url=>bucket, :data => data))
@@ -300,7 +299,7 @@ module RightAws
300
299
  # 'max-keys' => "5"}, ..., {...}]
301
300
  #
302
301
  def list_bucket(bucket, options={}, headers={})
303
- bucket += '?'+options.map{|k, v| "#{k.to_s}=#{CGI::escape v.to_s}"}.join('&') unless options.blank?
302
+ bucket += '?'+options.map{|k, v| "#{k.to_s}=#{CGI::escape v.to_s}"}.join('&') unless options.right_blank?
304
303
  req_hash = generate_rest_request('GET', headers.merge(:url=>bucket))
305
304
  request_info(req_hash, S3ListBucketParser.new(:logger => @logger))
306
305
  rescue
@@ -335,10 +334,10 @@ module RightAws
335
334
  # ]
336
335
  # }
337
336
  def incrementally_list_bucket(bucket, options={}, headers={}, &block)
338
- internal_options = options.symbolize_keys
337
+ internal_options = options.right_symbolize_keys
339
338
  begin
340
339
  internal_bucket = bucket.dup
341
- internal_bucket += '?'+internal_options.map{|k, v| "#{k.to_s}=#{CGI::escape v.to_s}"}.join('&') unless internal_options.blank?
340
+ internal_bucket += '?'+internal_options.map{|k, v| "#{k.to_s}=#{CGI::escape v.to_s}"}.join('&') unless internal_options.right_blank?
342
341
  req_hash = generate_rest_request('GET', headers.merge(:url=>internal_bucket))
343
342
  response = request_info(req_hash, S3ImprovedListBucketParser.new(:logger => @logger))
344
343
  there_are_more_keys = response[:is_truncated]
@@ -701,7 +700,7 @@ module RightAws
701
700
  # <Permission>FULL_CONTROL</Permission></Grant></AccessControlList></AccessControlPolicy>" }
702
701
  #
703
702
  def get_acl(bucket, key='', headers={})
704
- key = key.blank? ? '' : "/#{CGI::escape key}"
703
+ key = key.right_blank? ? '' : "/#{CGI::escape key}"
705
704
  req_hash = generate_rest_request('GET', headers.merge(:url=>"#{bucket}#{key}?acl"))
706
705
  request_info(req_hash, S3HttpResponseBodyParser.new)
707
706
  rescue
@@ -731,7 +730,7 @@ module RightAws
731
730
  # :display_name=>"root"}}
732
731
  #
733
732
  def get_acl_parse(bucket, key='', headers={})
734
- key = key.blank? ? '' : "/#{CGI::escape key}"
733
+ key = key.right_blank? ? '' : "/#{CGI::escape key}"
735
734
  req_hash = generate_rest_request('GET', headers.merge(:url=>"#{bucket}#{key}?acl"))
736
735
  acl = request_info(req_hash, S3AclParser.new(:logger => @logger))
737
736
  result = {}
@@ -755,7 +754,7 @@ module RightAws
755
754
 
756
755
  # Sets the ACL on a bucket or object.
757
756
  def put_acl(bucket, key, acl_xml_doc, headers={})
758
- key = key.blank? ? '' : "/#{CGI::escape key}"
757
+ key = key.right_blank? ? '' : "/#{CGI::escape key}"
759
758
  req_hash = generate_rest_request('PUT', headers.merge(:url=>"#{bucket}#{key}?acl", :data=>acl_xml_doc))
760
759
  request_info(req_hash, S3HttpResponseBodyParser.new)
761
760
  rescue
@@ -889,7 +888,7 @@ module RightAws
889
888
  # s3.list_bucket_link('my_awesome_bucket') #=> url string
890
889
  #
891
890
  def list_bucket_link(bucket, options=nil, expires=nil, headers={})
892
- bucket += '?' + options.map{|k, v| "#{k.to_s}=#{CGI::escape v.to_s}"}.join('&') unless options.blank?
891
+ bucket += '?' + options.map{|k, v| "#{k.to_s}=#{CGI::escape v.to_s}"}.join('&') unless options.right_blank?
893
892
  generate_link('GET', headers.merge(:url=>bucket), expires)
894
893
  rescue
895
894
  on_exception
@@ -21,13 +21,6 @@
21
21
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
22
  #
23
23
 
24
- begin
25
- require 'uuidtools'
26
- rescue LoadError => e
27
- STDERR.puts("RightSDB requires the uuidtools gem. Run \'gem install uuidtools\' and try again.")
28
- exit
29
- end
30
-
31
24
  module RightAws
32
25
 
33
26
  # = RightAws::ActiveSdb -- RightScale SDB interface (alpha release)
@@ -39,9 +32,6 @@ module RightAws
39
32
  # require 'right_aws'
40
33
  # require 'sdb/active_sdb'
41
34
  #
42
- # Additionally, the ActiveSdb class requires the 'uuidtools' gem; this gem is not normally required by RightAws and is not installed as a
43
- # dependency of RightAws.
44
- #
45
35
  # Simple ActiveSdb usage example:
46
36
  #
47
37
  # class Client < RightAws::ActiveSdb::Base
@@ -159,7 +149,6 @@ module RightAws
159
149
  # :port => 443 # Amazon service port: 80 or 443(default)
160
150
  # :protocol => 'https' # Amazon service protocol: 'http' or 'https'(default)
161
151
  # :signature_version => '0' # The signature version : '0' or '1'(default)
162
- # :multi_thread => true|false # Multi-threaded (connection per each thread): true or false(default)
163
152
  # :logger => Logger Object # Logger instance: logs to STDOUT if omitted
164
153
  # :nil_representation => 'mynil'} # interpret Ruby nil as this string value; i.e. use this string in SDB to represent Ruby nils (default is the string 'nil')
165
154
 
@@ -441,11 +430,7 @@ module RightAws
441
430
  end
442
431
 
443
432
  def generate_id # :nodoc:
444
- if UUID::VERSION::STRING < '2.0.0'
445
- UUID.timestamp_create().to_s
446
- else
447
- UUIDTools::UUID.timestamp_create().to_s
448
- end
433
+ AwsUtils::generate_unique_token
449
434
  end
450
435
 
451
436
  protected
@@ -463,7 +448,7 @@ module RightAws
463
448
  # user defined :conditions to string (if it was defined)
464
449
  options[:conditions] = build_conditions(options[:conditions])
465
450
  # join ids condition and user defined conditions
466
- options[:conditions] = options[:conditions].blank? ? ids_cond : "(#{options[:conditions]}) AND #{ids_cond}"
451
+ options[:conditions] = options[:conditions].right_blank? ? ids_cond : "(#{options[:conditions]}) AND #{ids_cond}"
467
452
  result = sql_select(options)
468
453
  # if one record was requested then return it
469
454
  unless bunch_of_records_requested
@@ -552,7 +537,7 @@ module RightAws
552
537
  query_expression = query_expression.to_s
553
538
  # quote from Amazon:
554
539
  # The sort attribute must be present in at least one of the predicates of the query expression.
555
- if query_expression.blank?
540
+ if query_expression.right_blank?
556
541
  query_expression = sort_query_expression
557
542
  elsif !query_attributes(query_expression).include?(sort_by)
558
543
  query_expression += " intersection #{sort_query_expression}"
@@ -605,7 +590,7 @@ module RightAws
605
590
  # user defined :conditions to string (if it was defined)
606
591
  options[:conditions] = build_conditions(options[:conditions])
607
592
  # join ids condition and user defined conditions
608
- options[:conditions] = options[:conditions].blank? ? ids_cond : "#{options[:conditions]} intersection #{ids_cond}"
593
+ options[:conditions] = options[:conditions].right_blank? ? ids_cond : "#{options[:conditions]} intersection #{ids_cond}"
609
594
  result = find_every(options)
610
595
  # if one record was requested then return it
611
596
  unless bunch_of_records_requested
@@ -656,9 +641,9 @@ module RightAws
656
641
  order = options[:order] ? " ORDER BY #{options[:order]}" : ''
657
642
  limit = options[:limit] ? " LIMIT #{options[:limit]}" : ''
658
643
  # mix sort by argument (it must present in response)
659
- unless order.blank?
644
+ unless order.right_blank?
660
645
  sort_by, sort_order = sort_options(options[:order])
661
- conditions << (conditions.blank? ? " WHERE " : " AND ") << "(#{sort_by} IS NOT NULL)"
646
+ conditions << (conditions.right_blank? ? " WHERE " : " AND ") << "(#{sort_by} IS NOT NULL)"
662
647
  end
663
648
  "SELECT #{select} FROM #{from}#{conditions}#{order}#{limit}"
664
649
  end
@@ -745,7 +730,7 @@ module RightAws
745
730
  def attributes=(attrs)
746
731
  old_id = @attributes['id']
747
732
  @attributes = uniq_values(attrs)
748
- @attributes['id'] = old_id if @attributes['id'].blank? && !old_id.blank?
733
+ @attributes['id'] = old_id if @attributes['id'].right_blank? && !old_id.right_blank?
749
734
  self.attributes
750
735
  end
751
736
 
@@ -799,7 +784,7 @@ module RightAws
799
784
  old_id = id
800
785
  attrs = connection.get_attributes(domain, id)[:attributes]
801
786
  @attributes = {}
802
- unless attrs.blank?
787
+ unless attrs.right_blank?
803
788
  attrs.each { |attribute, values| @attributes[attribute] = values }
804
789
  @attributes['id'] = old_id
805
790
  end
@@ -825,7 +810,7 @@ module RightAws
825
810
  attrs_list.flatten.uniq.each do |attribute|
826
811
  attribute = attribute.to_s
827
812
  values = connection.get_attributes(domain, id, attribute)[:attributes][attribute]
828
- unless values.blank?
813
+ unless values.right_blank?
829
814
  @attributes[attribute] = result[attribute] = values
830
815
  else
831
816
  @attributes.delete(attribute)
@@ -855,7 +840,7 @@ module RightAws
855
840
  prepare_for_update
856
841
  attrs = @attributes.dup
857
842
  attrs.delete('id')
858
- connection.put_attributes(domain, id, attrs) unless attrs.blank?
843
+ connection.put_attributes(domain, id, attrs) unless attrs.right_blank?
859
844
  connection.put_attributes(domain, id, { 'id' => id }, :replace)
860
845
  mark_as_old
861
846
  @attributes
@@ -871,10 +856,10 @@ module RightAws
871
856
  prepare_for_update
872
857
  # if 'id' is present in attrs hash:
873
858
  # replace internal 'id' attribute and remove it from the attributes to be sent
874
- @attributes['id'] = attrs['id'] unless attrs['id'].blank?
859
+ @attributes['id'] = attrs['id'] unless attrs['id'].right_blank?
875
860
  attrs.delete('id')
876
861
  # add new values to all attributes from list
877
- connection.put_attributes(domain, id, attrs) unless attrs.blank?
862
+ connection.put_attributes(domain, id, attrs) unless attrs.right_blank?
878
863
  connection.put_attributes(domain, id, { 'id' => id }, :replace)
879
864
  attrs.each do |attribute, values|
880
865
  @attributes[attribute] ||= []
@@ -918,12 +903,12 @@ module RightAws
918
903
  prepare_for_update
919
904
  attrs = uniq_values(attrs)
920
905
  # if 'id' is present in attrs hash then replace internal 'id' attribute
921
- unless attrs['id'].blank?
906
+ unless attrs['id'].right_blank?
922
907
  @attributes['id'] = attrs['id']
923
908
  else
924
909
  attrs['id'] = id
925
910
  end
926
- connection.put_attributes(domain, id, attrs, :replace) unless attrs.blank?
911
+ connection.put_attributes(domain, id, attrs, :replace) unless attrs.right_blank?
927
912
  attrs.each { |attribute, values| attrs[attribute] = values }
928
913
  mark_as_old
929
914
  attrs
@@ -942,7 +927,7 @@ module RightAws
942
927
  raise_on_id_absence
943
928
  attrs = uniq_values(attrs)
944
929
  attrs.delete('id')
945
- unless attrs.blank?
930
+ unless attrs.right_blank?
946
931
  connection.delete_attributes(domain, id, attrs)
947
932
  attrs.each do |attribute, values|
948
933
  # remove the values from the attribute
@@ -971,7 +956,7 @@ module RightAws
971
956
  raise_on_id_absence
972
957
  attrs_list = attrs_list.flatten.map{ |attribute| attribute.to_s }
973
958
  attrs_list.delete('id')
974
- unless attrs_list.blank?
959
+ unless attrs_list.right_blank?
975
960
  connection.delete_attributes(domain, id, attrs_list)
976
961
  attrs_list.each { |attribute| @attributes.delete(attribute) }
977
962
  end
@@ -1026,7 +1011,7 @@ module RightAws
1026
1011
  end
1027
1012
 
1028
1013
  def prepare_for_update
1029
- @attributes['id'] = self.class.generate_id if @attributes['id'].blank?
1014
+ @attributes['id'] = self.class.generate_id if @attributes['id'].right_blank?
1030
1015
  columns.all.each do |col_name|
1031
1016
  self[col_name] ||= columns.default(col_name)
1032
1017
  end
@@ -1044,7 +1029,7 @@ module RightAws
1044
1029
  else
1045
1030
  Array(values).uniq
1046
1031
  end
1047
- attrs.delete(attribute) if values.blank?
1032
+ attrs.delete(attribute) if values.right_blank?
1048
1033
  end
1049
1034
  attrs
1050
1035
  end
@@ -49,13 +49,12 @@ module RightAws
49
49
  # :port => 443 # Amazon service port: 80 or 443(default)
50
50
  # :protocol => 'https' # Amazon service protocol: 'http' or 'https'(default)
51
51
  # :signature_version => '0' # The signature version : '0','1 or '2'(default)
52
- # :multi_thread => true|false # Multi-threaded (connection per each thread): true or false(default)
53
52
  # :logger => Logger Object # Logger instance: logs to STDOUT if omitted
54
53
  # :nil_representation => 'mynil'} # interpret Ruby nil as this string value; i.e. use this string in SDB to represent Ruby nils (default is the string 'nil')
55
54
  #
56
55
  # Example:
57
56
  #
58
- # sdb = RightAws::SdbInterface.new('1E3GDYEOGFJPIT7XXXXXX','hgTHt68JY07JKUY08ftHYtERkjgtfERn57XXXXXX', {:multi_thread => true, :logger => Logger.new('/tmp/x.log')}) #=> #<RightSdb:0xa6b8c27c>
57
+ # sdb = RightAws::SdbInterface.new('1E3GDYEOGFJPIT7XXXXXX','hgTHt68JY07JKUY08ftHYtERkjgtfERn57XXXXXX', {:logger => Logger.new('/tmp/x.log')}) #=> #<RightSdb:0xa6b8c27c>
59
58
  #
60
59
  # see: http://docs.amazonwebservices.com/AmazonSimpleDB/2007-11-07/DeveloperGuide/
61
60
  #
@@ -170,7 +169,7 @@ module RightAws
170
169
  # (similar to ActiveRecord::Base#find using :conditions => ['query', param1, .., paramN])
171
170
  #
172
171
  def query_expression_from_array(params) #:nodoc:
173
- return '' if params.blank?
172
+ return '' if params.right_blank?
174
173
  query = params.shift.to_s
175
174
  query.gsub(/(\\)?(\?)/) do
176
175
  if $1 # if escaped '\?' is found - replace it by '?' without backslash
@@ -182,7 +181,7 @@ module RightAws
182
181
  end
183
182
 
184
183
  def query_expression_from_hash(hash)
185
- return '' if hash.blank?
184
+ return '' if hash.right_blank?
186
185
  expression = []
187
186
  hash.each do |key, value|
188
187
  expression << "#{key}=#{escape(value)}"
@@ -255,6 +254,27 @@ module RightAws
255
254
  on_exception
256
255
  end
257
256
 
257
+ # Query Metadata for Domain
258
+ #
259
+ # Returns a hash on success or an exception on error.
260
+ #
261
+ # example:
262
+ # sdb = RightAWS:::SdbInterface.new
263
+ # sdb.domain_metadata('toys') # => {:attribute_values_size_bytes=>"2754",
264
+ # :item_count=>"25",
265
+ # :item_names_size_bytes=>"900",
266
+ # :timestamp=>"1291890409",
267
+ # :attribute_name_count=>"7",
268
+ # :box_usage=>"0.0000071759",
269
+ # :attribute_names_size_bytes=>"48",
270
+ # :attribute_value_count=>"154",
271
+ # :request_id=>"79bbfe8f-f0c9-59a2-0963-16d5fc6c3c52"}
272
+ # see http://docs.amazonwebservices.com/AmazonSimpleDB/latest/DeveloperGuide/index.html?SDB_API_DomainMetadata.html
273
+ def domain_metadata(domain)
274
+ link = generate_request("DomainMetadata","DomainName"=>domain)
275
+ request_info(link,QSdbGenericParser.new)
276
+ end
277
+
258
278
  # Delete SDB domain at Amazon.
259
279
  #
260
280
  # Returns a hash: { :box_usage, :request_id } on success or an exception on error.
@@ -615,6 +635,18 @@ module RightAws
615
635
  #-----------------------------------------------------------------
616
636
  # PARSERS:
617
637
  #-----------------------------------------------------------------
638
+ class QSdbGenericParser < RightAWSParser #:nodoc:
639
+ def reset
640
+ @result = {}
641
+ end
642
+ def tagend(name)
643
+ case full_tag_name
644
+ when %r{/(DomainMetadataResult|ResponseMetadata)/}
645
+ @result[name.right_underscore.to_sym] = @text
646
+ end
647
+ end
648
+ end
649
+
618
650
  class QSdbListDomainParser < RightAWSParser #:nodoc:
619
651
  def reset
620
652
  @result = { :domains => [] }
@@ -59,7 +59,6 @@ module RightAws
59
59
  #
60
60
  # {:server => 'queue.amazonaws.com' # Amazon service host: 'queue.amazonaws.com' (default)
61
61
  # :port => 443 # Amazon service port: 80 or 443 (default)
62
- # :multi_thread => true|false # Multi-threaded (connection per each thread): true or false (default)
63
62
  # :signature_version => '0' # The signature version : '0' or '1'(default)
64
63
  # :logger => Logger Object} # Logger instance: logs to STDOUT if omitted }
65
64
  #
@@ -271,7 +270,7 @@ module RightAws
271
270
  grantees << Grantee.new(self, grantee_email_address, key, value[:name], value[:perms])
272
271
  end
273
272
  if grantee_email_address
274
- grantees.blank? ? nil : grantees.shift
273
+ grantees.right_blank? ? nil : grantees.shift
275
274
  else
276
275
  grantees
277
276
  end
@@ -60,7 +60,6 @@ module RightAws
60
60
  #
61
61
  # {:server => 'queue.amazonaws.com' # Amazon service host: 'queue.amazonaws.com' (default)
62
62
  # :port => 443 # Amazon service port: 80 or 443 (default)
63
- # :multi_thread => true|false # Multi-threaded (connection per each thread): true or false (default)
64
63
  # :signature_version => '0' # The signature version : '0' or '1'(default)
65
64
  # :logger => Logger Object} # Logger instance: logs to STDOUT if omitted }
66
65
  class SqsGen2
@@ -65,13 +65,12 @@ module RightAws
65
65
  # Amazon's article "Migrating to Amazon SQS API version 2008-01-01" at:
66
66
  # http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1148
67
67
  #
68
- # sqs = RightAws::SqsGen2Interface.new('1E3GDYEOGFJPIT75KDT40','hgTHt68JY07JKUY08ftHYtERkjgtfERn57DFE379', {:multi_thread => true, :logger => Logger.new('/tmp/x.log')})
68
+ # sqs = RightAws::SqsGen2Interface.new('1E3GDYEOGFJPIT75KDT40','hgTHt68JY07JKUY08ftHYtERkjgtfERn57DFE379', {:logger => Logger.new('/tmp/x.log')})
69
69
  #
70
70
  # Params is a hash:
71
71
  #
72
72
  # {:server => 'queue.amazonaws.com' # Amazon service host: 'queue.amazonaws.com' (default)
73
73
  # :port => 443 # Amazon service port: 80 or 443 (default)
74
- # :multi_thread => true|false # Multi-threaded (connection per each thread): true or false (default)
75
74
  # :signature_version => '0' # The signature version : '0', '1' or '2'(default)
76
75
  # :logger => Logger Object} # Logger instance: logs to STDOUT if omitted }
77
76
  #
@@ -201,7 +200,7 @@ module RightAws
201
200
  # http://docs.amazonwebservices.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/index.html?Query_QueryGetQueueAttributes.html
202
201
  def get_queue_attributes(queue_url, *attributes)
203
202
  attributes.flatten!
204
- attributes << 'All' if attributes.blank?
203
+ attributes << 'All' if attributes.right_blank?
205
204
  params = amazonize_list('AttributeName', attributes)
206
205
  params.merge!(:queue_url => queue_url)
207
206
  req_hash = generate_request('GetQueueAttributes', params)
@@ -282,7 +281,7 @@ module RightAws
282
281
  def receive_message(queue_url, max_number_of_messages=1, visibility_timeout=nil, attributes=nil)
283
282
  return [] if max_number_of_messages == 0
284
283
  params = {}
285
- params.merge!(amazonize_list('AttributeName', Array(attributes))) unless attributes.blank?
284
+ params.merge!(amazonize_list('AttributeName', Array(attributes))) unless attributes.right_blank?
286
285
  params.merge!('MaxNumberOfMessages' => max_number_of_messages,
287
286
  'VisibilityTimeout' => visibility_timeout,
288
287
  :queue_url => queue_url )
@@ -429,7 +428,7 @@ module RightAws
429
428
  #
430
429
  def pop_message(queue_url, attributes=nil)
431
430
  messages = pop_messages(queue_url, 1, attributes)
432
- messages.blank? ? nil : messages[0]
431
+ messages.right_blank? ? nil : messages[0]
433
432
  rescue
434
433
  on_exception
435
434
  end