aws-sdk 1.4.1 → 1.5.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 (193) hide show
  1. data/.yardopts +0 -1
  2. data/lib/aws/api_config/AutoScaling-2011-01-01.yml +772 -544
  3. data/lib/aws/api_config/CloudFormation-2010-05-15.yml +284 -185
  4. data/lib/aws/api_config/DynamoDB-2011-12-05.yml +458 -738
  5. data/lib/aws/api_config/EC2-2011-12-15.yml +3502 -2653
  6. data/lib/aws/api_config/ELB-2011-08-15.yml +484 -352
  7. data/lib/aws/api_config/IAM-2010-05-08.yml +899 -711
  8. data/lib/aws/api_config/SNS-2010-03-31.yml +235 -167
  9. data/lib/aws/api_config/SQS-2011-10-01.yml +290 -251
  10. data/lib/aws/api_config/STS-2011-06-15.yml +35 -41
  11. data/lib/aws/api_config/SimpleDB-2009-04-15.yml +290 -263
  12. data/lib/aws/api_config/SimpleEmailService-2010-12-01.yml +144 -130
  13. data/lib/aws/api_config/SimpleWorkflow-2012-01-25.yml +697 -1139
  14. data/lib/aws/auto_scaling/activity_collection.rb +1 -1
  15. data/lib/aws/auto_scaling/client.rb +724 -9
  16. data/lib/aws/auto_scaling/errors.rb +1 -5
  17. data/lib/aws/auto_scaling/group.rb +1 -1
  18. data/lib/aws/auto_scaling/group_collection.rb +1 -1
  19. data/lib/aws/auto_scaling/instance_collection.rb +1 -1
  20. data/lib/aws/auto_scaling/launch_configuration.rb +1 -1
  21. data/lib/aws/auto_scaling/launch_configuration_collection.rb +1 -1
  22. data/lib/aws/auto_scaling/notification_configuration_collection.rb +1 -1
  23. data/lib/aws/auto_scaling/request.rb +1 -2
  24. data/lib/aws/auto_scaling/scaling_policy_collection.rb +1 -1
  25. data/lib/aws/auto_scaling/scheduled_action_collection.rb +3 -3
  26. data/lib/aws/auto_scaling/tag_collection.rb +1 -1
  27. data/lib/aws/cloud_formation.rb +1 -18
  28. data/lib/aws/cloud_formation/client.rb +314 -8
  29. data/lib/aws/cloud_formation/errors.rb +1 -5
  30. data/lib/aws/cloud_formation/request.rb +1 -2
  31. data/lib/aws/cloud_formation/stack.rb +4 -3
  32. data/lib/aws/cloud_formation/stack_collection.rb +2 -2
  33. data/lib/aws/cloud_formation/stack_resource_collection.rb +1 -1
  34. data/lib/aws/cloud_formation/stack_resource_summary_collection.rb +2 -2
  35. data/lib/aws/cloud_formation/stack_summary_collection.rb +1 -1
  36. data/lib/aws/core.rb +29 -14
  37. data/lib/aws/core/async_handle.rb +11 -12
  38. data/lib/aws/core/client.rb +112 -102
  39. data/lib/aws/core/client/query_json.rb +110 -0
  40. data/lib/aws/core/client/query_xml.rb +122 -0
  41. data/lib/aws/core/data.rb +242 -0
  42. data/lib/aws/core/http/request.rb +7 -4
  43. data/lib/aws/core/lazy_error_classes.rb +60 -38
  44. data/lib/aws/core/option_grammar.rb +1 -0
  45. data/lib/aws/core/policy.rb +2 -1
  46. data/lib/aws/core/resource.rb +38 -33
  47. data/lib/aws/core/response.rb +109 -44
  48. data/lib/aws/core/signature/version_2.rb +42 -0
  49. data/lib/aws/core/signature/version_3.rb +73 -0
  50. data/lib/aws/core/signature/version_3_http.rb +72 -0
  51. data/lib/aws/core/signature/version_4.rb +138 -0
  52. data/lib/aws/core/uri_escape.rb +6 -9
  53. data/lib/aws/core/xml/frame.rb +242 -0
  54. data/lib/aws/core/xml/frame_stack.rb +85 -0
  55. data/lib/aws/core/xml/grammar.rb +299 -0
  56. data/lib/aws/core/xml/parser.rb +70 -0
  57. data/lib/aws/core/xml/root_frame.rb +65 -0
  58. data/lib/aws/core/{configured_xml_grammars.rb → xml/sax_handlers/libxml.rb} +22 -20
  59. data/lib/aws/core/xml/sax_handlers/nokogiri.rb +55 -0
  60. data/lib/aws/core/{authorize_with_session_token.rb → xml/sax_handlers/ox.rb} +19 -7
  61. data/lib/aws/core/{configured_option_grammars.rb → xml/sax_handlers/rexml.rb} +22 -23
  62. data/lib/aws/core/xml/stub.rb +123 -0
  63. data/lib/aws/dynamo_db/batch_get.rb +1 -1
  64. data/lib/aws/dynamo_db/client.rb +796 -14
  65. data/lib/aws/dynamo_db/errors.rb +1 -38
  66. data/lib/aws/dynamo_db/item_collection.rb +29 -28
  67. data/lib/aws/dynamo_db/request.rb +3 -53
  68. data/lib/aws/dynamo_db/table.rb +6 -2
  69. data/lib/aws/ec2/attachment.rb +1 -1
  70. data/lib/aws/ec2/client.rb +3954 -9
  71. data/lib/aws/ec2/dhcp_options.rb +3 -3
  72. data/lib/aws/ec2/errors.rb +10 -4
  73. data/lib/aws/ec2/instance.rb +7 -6
  74. data/lib/aws/ec2/instance_collection.rb +2 -2
  75. data/lib/aws/ec2/key_pair_collection.rb +3 -3
  76. data/lib/aws/ec2/network_acl.rb +4 -2
  77. data/lib/aws/ec2/network_acl/entry.rb +10 -10
  78. data/lib/aws/ec2/network_interface.rb +2 -3
  79. data/lib/aws/ec2/network_interface/attachment.rb +8 -8
  80. data/lib/aws/ec2/permission_collection.rb +3 -3
  81. data/lib/aws/ec2/request.rb +1 -3
  82. data/lib/aws/ec2/resource_tag_collection.rb +4 -8
  83. data/lib/aws/ec2/route_table.rb +3 -2
  84. data/lib/aws/ec2/route_table/route.rb +7 -7
  85. data/lib/aws/ec2/security_group.rb +2 -2
  86. data/lib/aws/ec2/security_group/egress_ip_permission_collection.rb +16 -5
  87. data/lib/aws/ec2/security_group/ingress_ip_permission_collection.rb +4 -3
  88. data/lib/aws/ec2/security_group/ip_permission.rb +1 -2
  89. data/lib/aws/ec2/snapshot_collection.rb +6 -3
  90. data/lib/aws/ec2/subnet.rb +1 -1
  91. data/lib/aws/ec2/volume.rb +1 -3
  92. data/lib/aws/ec2/volume_collection.rb +2 -0
  93. data/lib/aws/elb/availability_zone_collection.rb +2 -2
  94. data/lib/aws/elb/backend_server_policy_collection.rb +1 -1
  95. data/lib/aws/elb/client.rb +513 -9
  96. data/lib/aws/elb/errors.rb +2 -6
  97. data/lib/aws/elb/instance_collection.rb +2 -2
  98. data/lib/aws/elb/request.rb +1 -1
  99. data/lib/aws/errors.rb +61 -74
  100. data/lib/aws/iam.rb +2 -3
  101. data/lib/aws/iam/client.rb +1178 -10
  102. data/lib/aws/iam/collection.rb +2 -1
  103. data/lib/aws/iam/errors.rb +1 -6
  104. data/lib/aws/iam/group.rb +8 -9
  105. data/lib/aws/iam/request.rb +1 -1
  106. data/lib/aws/iam/server_certificate_collection.rb +8 -5
  107. data/lib/aws/iam/signing_certificate.rb +1 -1
  108. data/lib/aws/iam/user.rb +2 -2
  109. data/lib/aws/iam/user_policy.rb +3 -2
  110. data/lib/aws/rails.rb +1 -2
  111. data/lib/aws/record.rb +3 -3
  112. data/lib/aws/record/abstract_base.rb +0 -3
  113. data/lib/aws/record/attributes.rb +7 -7
  114. data/lib/aws/record/model.rb +19 -19
  115. data/lib/aws/record/model/finder_methods.rb +7 -7
  116. data/lib/aws/s3/bucket.rb +7 -2
  117. data/lib/aws/s3/client.rb +391 -398
  118. data/lib/aws/s3/client/xml.rb +44 -71
  119. data/lib/aws/s3/data_options.rb +3 -2
  120. data/lib/aws/s3/errors.rb +8 -11
  121. data/lib/aws/s3/multipart_upload_collection.rb +1 -3
  122. data/lib/aws/s3/object_collection.rb +2 -1
  123. data/lib/aws/s3/object_metadata.rb +2 -2
  124. data/lib/aws/s3/paginated_collection.rb +2 -2
  125. data/lib/aws/s3/prefix_and_delimiter_collection.rb +1 -1
  126. data/lib/aws/s3/presigned_post.rb +18 -17
  127. data/lib/aws/s3/request.rb +4 -3
  128. data/lib/aws/s3/s3_object.rb +8 -10
  129. data/lib/aws/simple_db/attribute.rb +2 -2
  130. data/lib/aws/simple_db/attribute_collection.rb +14 -4
  131. data/lib/aws/simple_db/client.rb +313 -14
  132. data/lib/aws/simple_db/domain.rb +1 -1
  133. data/lib/aws/simple_db/domain_collection.rb +4 -4
  134. data/lib/aws/simple_db/domain_metadata.rb +1 -1
  135. data/lib/aws/simple_db/errors.rb +14 -2
  136. data/lib/aws/simple_db/expect_condition_option.rb +1 -1
  137. data/lib/aws/simple_db/item.rb +1 -1
  138. data/lib/aws/simple_db/item_collection.rb +9 -9
  139. data/lib/aws/simple_db/item_data.rb +9 -6
  140. data/lib/aws/simple_db/request.rb +1 -1
  141. data/lib/aws/simple_email_service.rb +8 -7
  142. data/lib/aws/simple_email_service/client.rb +174 -9
  143. data/lib/aws/simple_email_service/email_address_collection.rb +0 -1
  144. data/lib/aws/simple_email_service/errors.rb +1 -5
  145. data/lib/aws/simple_email_service/quotas.rb +8 -6
  146. data/lib/aws/simple_email_service/request.rb +7 -1
  147. data/lib/aws/simple_workflow/client.rb +1383 -6
  148. data/lib/aws/simple_workflow/decision_task.rb +1 -3
  149. data/lib/aws/simple_workflow/errors.rb +1 -38
  150. data/lib/aws/simple_workflow/history_event_collection.rb +2 -2
  151. data/lib/aws/simple_workflow/request.rb +5 -49
  152. data/lib/aws/simple_workflow/type.rb +1 -1
  153. data/lib/aws/simple_workflow/type_collection.rb +4 -3
  154. data/lib/aws/simple_workflow/workflow_execution_collection.rb +2 -2
  155. data/lib/aws/sns/client.rb +345 -9
  156. data/lib/aws/sns/errors.rb +1 -5
  157. data/lib/aws/sns/request.rb +1 -2
  158. data/lib/aws/sns/subscription_collection.rb +2 -2
  159. data/lib/aws/sns/topic.rb +15 -14
  160. data/lib/aws/sns/topic_collection.rb +1 -1
  161. data/lib/aws/sqs/client.rb +334 -9
  162. data/lib/aws/sqs/errors.rb +1 -6
  163. data/lib/aws/sqs/queue.rb +20 -21
  164. data/lib/aws/sqs/queue_collection.rb +3 -3
  165. data/lib/aws/sqs/request.rb +2 -2
  166. data/lib/aws/sts.rb +8 -10
  167. data/lib/aws/sts/client.rb +67 -10
  168. data/lib/aws/sts/errors.rb +1 -5
  169. data/lib/aws/sts/request.rb +1 -1
  170. data/lib/user.rb +49 -0
  171. metadata +21 -28
  172. data/lib/aws/auto_scaling/client/xml.rb +0 -32
  173. data/lib/aws/cloud_formation/client/xml.rb +0 -32
  174. data/lib/aws/core/api_config.rb +0 -44
  175. data/lib/aws/core/authorize_v2.rb +0 -39
  176. data/lib/aws/core/authorize_v3.rb +0 -38
  177. data/lib/aws/core/authorize_v4.rb +0 -149
  178. data/lib/aws/core/configured_client_methods.rb +0 -76
  179. data/lib/aws/core/configured_grammars.rb +0 -63
  180. data/lib/aws/core/configured_json_client_methods.rb +0 -74
  181. data/lib/aws/core/ignore_result_element.rb +0 -34
  182. data/lib/aws/core/json_client.rb +0 -41
  183. data/lib/aws/core/xml_grammar.rb +0 -957
  184. data/lib/aws/ec2/client/xml.rb +0 -175
  185. data/lib/aws/elb/client/xml.rb +0 -33
  186. data/lib/aws/elb/listener_spec.rb +0 -14
  187. data/lib/aws/iam/client/xml.rb +0 -34
  188. data/lib/aws/simple_db/client/options.rb +0 -32
  189. data/lib/aws/simple_db/client/xml.rb +0 -63
  190. data/lib/aws/simple_email_service/client/xml.rb +0 -34
  191. data/lib/aws/sns/client/xml.rb +0 -34
  192. data/lib/aws/sqs/client/xml.rb +0 -33
  193. data/lib/aws/sts/client/xml.rb +0 -34
@@ -0,0 +1,65 @@
1
+ # Copyright 2011-2012 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
+ module AWS
15
+ module Core
16
+ module XML
17
+
18
+ class RootFrame < Frame
19
+
20
+ def initialize rules
21
+ @inflected = {}
22
+ @indexes = {}
23
+ setup_indexes(rules)
24
+ super(self, nil, 'XML', rules)
25
+ end
26
+
27
+ def build_child_frame element_name
28
+ Frame.new(self, self, element_name, rules)
29
+ end
30
+
31
+ def value
32
+ value = @data.values.find{|v| v.is_a?(Hash) }
33
+ value ||= {}
34
+ value.merge(@indexes)
35
+ end
36
+
37
+ def add_to_index index_name, key, value
38
+ @indexes[index_name] ||= {}
39
+ @indexes[index_name][key] = value
40
+ end
41
+
42
+ # The root frame maintains a cache of inflected element names.
43
+ def inflect element_name
44
+ @inflected[element_name] ||= Inflection.ruby_name(element_name).to_sym
45
+ end
46
+
47
+ protected
48
+
49
+ # recursively crawls the parser rules and looks for elements
50
+ # that index values. Adds an empty index for each of these.
51
+ def setup_indexes rules
52
+ if rules[:children]
53
+ rules[:children].each_pair do |child_name,child_rules|
54
+ if index = child_rules[:index]
55
+ @indexes[index[:name]] = {}
56
+ end
57
+ setup_indexes(child_rules)
58
+ end
59
+ end
60
+ end
61
+
62
+ end
63
+ end
64
+ end
65
+ end
@@ -11,35 +11,37 @@
11
11
  # ANY KIND, either express or implied. See the License for the specific
12
12
  # language governing permissions and limitations under the License.
13
13
 
14
+ require 'libxml'
15
+
14
16
  module AWS
15
17
  module Core
18
+ module XML
19
+ module SaxHandlers
20
+ class LibXML
21
+
22
+ include FrameStack
23
+ include ::LibXML::XML::SaxParser::Callbacks
24
+
25
+ def sax_parse xml
26
+ sax_parser = ::LibXML::XML::SaxParser.string(xml)
27
+ sax_parser.callbacks = self
28
+ sax_parser.parse
29
+ end
16
30
 
17
- # @private
18
- module ConfiguredXmlGrammars
19
-
20
- # @private
21
- module ClassMethods
31
+ def on_start_element_ns element_name, attributes, *ignore
32
+ start_element(element_name, attributes)
33
+ end
22
34
 
23
- include ConfiguredGrammars::ClassMethods
35
+ def on_end_element_ns *ignore
36
+ end_element
37
+ end
24
38
 
25
- def base_grammar
26
- if const_defined?(:BaseResponse)
27
- const_get(:BaseResponse)
28
- else
29
- XmlGrammar
39
+ def on_characters chars
40
+ text(chars)
30
41
  end
31
- end
32
42
 
33
- def input_or_output
34
- :output
35
43
  end
36
-
37
44
  end
38
-
39
- def self.included(mod)
40
- mod.extend(ClassMethods)
41
- end
42
-
43
45
  end
44
46
  end
45
47
  end
@@ -0,0 +1,55 @@
1
+ # Copyright 2011-2012 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 'nokogiri'
15
+
16
+ module AWS
17
+ module Core
18
+ module XML
19
+ module SaxHandlers
20
+ class Nokogiri
21
+
22
+ include FrameStack
23
+
24
+ def sax_parse xml
25
+ ::Nokogiri::XML::SAX::Parser.new(self).parse(xml)
26
+ end
27
+
28
+ def xmldecl(*args); end
29
+ def start_document; end
30
+ def end_document; end
31
+ def error(*args); end
32
+
33
+ def start_element_namespace element_name, attributes = [], *ignore
34
+
35
+ attributes = attributes.map.inject({}) do |hash,attr|
36
+ hash.merge(attr.localname => attr.value)
37
+ end
38
+
39
+ start_element(element_name, attributes)
40
+
41
+ end
42
+
43
+ def end_element_namespace *ignore
44
+ end_element
45
+ end
46
+
47
+ def characters chars
48
+ text(chars)
49
+ end
50
+
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -11,19 +11,31 @@
11
11
  # ANY KIND, either express or implied. See the License for the specific
12
12
  # language governing permissions and limitations under the License.
13
13
 
14
+ require 'stringio'
15
+ require 'ox'
16
+
14
17
  module AWS
15
18
  module Core
19
+ module XML
20
+ module SaxHandlers
21
+ class Ox
22
+
23
+ include FrameStack
24
+
25
+ def sax_parse xml
26
+ ::Ox.sax_parse(self, StringIO.new(xml))
27
+ end
16
28
 
17
- # @private
18
- module AuthorizeWithSessionToken
29
+ def start_element name
30
+ super(name.to_s)
31
+ end
32
+
33
+ def attr name, value
34
+ attributes(name.to_s => value)
35
+ end
19
36
 
20
- def add_authorization! signer
21
- if signer.respond_to?(:session_token) and token = signer.session_token
22
- add_param("SecurityToken", token)
23
37
  end
24
- super
25
38
  end
26
-
27
39
  end
28
40
  end
29
41
  end
@@ -11,34 +11,33 @@
11
11
  # ANY KIND, either express or implied. See the License for the specific
12
12
  # language governing permissions and limitations under the License.
13
13
 
14
+ require 'rexml/document'
15
+ require 'rexml/streamlistener'
16
+
14
17
  module AWS
15
18
  module Core
16
-
17
- # @private
18
- module ConfiguredOptionGrammars
19
-
20
- module ClassMethods
21
-
22
- include ConfiguredGrammars::ClassMethods
23
-
24
- def base_grammar
25
- if const_defined?(:BaseOptions)
26
- const_get(:BaseOptions)
27
- else
28
- OptionGrammar
19
+ module XML
20
+ module SaxHandlers
21
+ class REXML
22
+
23
+ include FrameStack
24
+ include ::REXML::StreamListener
25
+
26
+ def sax_parse xml
27
+ source = ::REXML::Source.new(xml)
28
+ ::REXML::Parsers::StreamParser.new(source, self).parse
29
29
  end
30
+
31
+ def tag_start name, attrs
32
+ start_element(name, attrs)
33
+ end
34
+
35
+ def tag_end name
36
+ end_element
37
+ end
38
+
30
39
  end
31
-
32
- def input_or_output
33
- :input
34
- end
35
-
36
40
  end
37
-
38
- def self.included(mod)
39
- mod.extend(ClassMethods)
40
- end
41
-
42
41
  end
43
42
  end
44
43
  end
@@ -0,0 +1,123 @@
1
+ # Copyright 2011-2012 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
+ module AWS
15
+ module Core
16
+ module XML
17
+
18
+ # This class takes the rules from an XML parser and then
19
+ # returns a stubbed reponse. This response has placeholder
20
+ # values based on the grammar, e.g.
21
+ #
22
+ # * Lists are stubbed with empty arrays
23
+ # * Indexes become empty hashes
24
+ # * Numeric types are returned as 0
25
+ # * etc
26
+ #
27
+ # This is used primarily to help with the AWS.stub! utility.
28
+ #
29
+ class Stub
30
+
31
+ # @param [Hash] rules
32
+ def initialize rules
33
+ @rules = rules
34
+ end
35
+
36
+ # @return [Hash]
37
+ attr_reader :rules
38
+
39
+ # Returns a hash with stubbed values as if it had parsed
40
+ # an empty xml document.
41
+ # @return [Hash]
42
+ def simulate
43
+ if rules[:children]
44
+ data = stub_data_for(rules)
45
+ apply_empty_indexes(rules, data)
46
+ data
47
+ else
48
+ {}
49
+ end
50
+ end
51
+
52
+ # Returns a hash with stubbed values as if it had parsed
53
+ # an empty xml document.
54
+ # @param [Hash] rules An XML::Parser rule set.
55
+ # @return [Hash]
56
+ def self.simulate rules
57
+ stub = Stub.new(rules)
58
+ stub.simulate
59
+ end
60
+
61
+ protected
62
+ def stub_data_for rules, data = {}
63
+ rules[:children].each_pair do |name,child_rules|
64
+
65
+ # skip ignored elements
66
+ if child_rules[:ignore]
67
+ stub_data_for(child_rules, data) if child_rules[:children]
68
+ next
69
+ end
70
+
71
+ orig_data = data
72
+ if wrapper = child_rules[:wrap]
73
+ data[wrapper] ||= {}
74
+ data = data[wrapper]
75
+ end
76
+
77
+ ruby_name = child_rules[:rename] ||
78
+ Inflection.ruby_name(name.to_s).to_sym
79
+
80
+ if child_rules[:list]
81
+ data[ruby_name] = []
82
+ elsif child_rules[:map]
83
+ data[ruby_name] = {}
84
+ elsif child_rules[:children] and !child_rules[:children].empty?
85
+ data[ruby_name] = stub_data_for(child_rules)
86
+ else
87
+ data[ruby_name] = case child_rules[:type]
88
+ when :integer then 0
89
+ when :float then 0.0
90
+ when :time then Time.now
91
+ when :datetime then Date.parse(Time.now.to_s)
92
+ when :boolean then false
93
+ else nil
94
+ end
95
+ end
96
+
97
+ # restore data incase it was redirected for wrapping
98
+ data = orig_data
99
+
100
+ end
101
+
102
+ data
103
+
104
+ end
105
+
106
+ protected
107
+ def apply_empty_indexes rules, data
108
+
109
+ return unless rules[:children]
110
+
111
+ rules[:children].each_pair do |name,child_rules|
112
+ if index = child_rules[:index]
113
+ data[index[:name]] = {}
114
+ end
115
+ apply_empty_indexes(child_rules, data)
116
+ end
117
+
118
+ end
119
+
120
+ end
121
+ end
122
+ end
123
+ end
@@ -33,7 +33,7 @@ module AWS
33
33
 
34
34
  # Add a list of items to fetch in this batch.
35
35
  #
36
- # @param [String] table_name The name of the table to fetch attributes
36
+ # @param [Table,String] table The name of the table to fetch attributes
37
37
  # from.
38
38
  #
39
39
  # @param [Symbol, String, Array<String>] attributes The list of attributes
@@ -14,21 +14,23 @@
14
14
  module AWS
15
15
  class DynamoDB
16
16
 
17
- # @private
18
- class Client < Core::JsonClient
17
+ # Client class for Amazon DynamoDB.
18
+ class Client < Core::Client
19
19
 
20
- API_VERSION = '2011-06-01'
20
+ API_VERSION = '2011-12-05'
21
21
 
22
+ extend Core::Client::QueryJSON
23
+
24
+ # @private
22
25
  REGION_US_E1 = 'dynamodb.us-east-1.amazonaws.com'
23
26
 
27
+ # @private
24
28
  TARGET_PREFIX = "DynamoDB_20111205."
25
29
 
26
- REQUEST_CLASS = DynamoDB::Request
27
-
30
+ # @private
28
31
  CACHEABLE_REQUESTS = Set[:list_tables, :describe_table]
29
32
 
30
- configure_client
31
-
33
+ # @private
32
34
  def initialize *args
33
35
 
34
36
  super
@@ -43,16 +45,799 @@ module AWS
43
45
 
44
46
  end
45
47
 
48
+ ## client methods ##
49
+
50
+ # Calls the BatchGetItem API operation.
51
+ # @method batch_get_item(options = {})
52
+ #
53
+ # === Options:
54
+ #
55
+ # * +:request_items+ - *required* - (Hash<String,Hash>)
56
+ # * +:keys+ - *required* - (Array<Hash>)
57
+ # * +:hash_key_element+ - *required* - (Hash) A hash key element is
58
+ # treated as the primary key, and can be a string or a number.
59
+ # Single attribute primary keys have one index value. The value can
60
+ # be String, Number, StringSet, NumberSet.
61
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
62
+ # The maximum size is limited by the size of the primary key
63
+ # (1024 bytes as a range part of a key or 2048 bytes as a single
64
+ # part hash key) or the item size (64k).
65
+ # * +:n+ - (String) Numbers are positive or negative exact-value
66
+ # decimals and integers. A number can have up to 38 digits
67
+ # precision and can be between 10^-128 to 10^+126.
68
+ # * +:ss+ - (Array<String>) A set of strings.
69
+ # * +:ns+ - (Array<String>) A set of numbers.
70
+ # * +:range_key_element+ - (Hash) A range key element is treated as a
71
+ # secondary key (used in conjunction with the primary key), and can
72
+ # be a string or a number, and is only used for hash-and-range
73
+ # primary keys. The value can be String, Number, StringSet,
74
+ # NumberSet.
75
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
76
+ # The maximum size is limited by the size of the primary key
77
+ # (1024 bytes as a range part of a key or 2048 bytes as a single
78
+ # part hash key) or the item size (64k).
79
+ # * +:n+ - (String) Numbers are positive or negative exact-value
80
+ # decimals and integers. A number can have up to 38 digits
81
+ # precision and can be between 10^-128 to 10^+126.
82
+ # * +:ss+ - (Array<String>) A set of strings.
83
+ # * +:ns+ - (Array<String>) A set of numbers.
84
+ # * +:attributes_to_get+ - (Array<String>)
85
+ #
86
+ # === Response Structure:
87
+ #
88
+ # * +Responses+ - (Hash<String,Hash>)
89
+ # * +member+ - (Hash<String,Hash>)
90
+ # * +S+ - (String)
91
+ # * +N+ - (String)
92
+ # * +SS+ - (Array<String>)
93
+ # * +NS+ - (Array<String>)
94
+ # * +ConsumedCapacityUnits+ - (Numeric)
95
+ # * +UnprocessedKeys+ - (Hash<String,Hash>)
96
+ # * +Keys+ - (Array<Hash>)
97
+ # * +HashKeyElement+ - (Hash)
98
+ # * +S+ - (String)
99
+ # * +N+ - (String)
100
+ # * +SS+ - (Array<String>)
101
+ # * +NS+ - (Array<String>)
102
+ # * +RangeKeyElement+ - (Hash)
103
+ # * +S+ - (String)
104
+ # * +N+ - (String)
105
+ # * +SS+ - (Array<String>)
106
+ # * +NS+ - (Array<String>)
107
+ # * +AttributesToGet+ - (Array<String>)
108
+ #
109
+ # @return [Core::Response]
110
+ #
111
+ define_client_method :batch_get_item, 'BatchGetItem'
112
+
113
+ # Calls the BatchWriteItem API operation.
114
+ # @method batch_write_item(options = {})
115
+ #
116
+ # === Options:
117
+ #
118
+ # * +:request_items+ - *required* - (Hash<String,Array<Hash>>) A map of
119
+ # table name to list-of-write-requests. Used as input to the
120
+ # BatchWriteItem API call
121
+ # * +:put_request+ - (Hash)
122
+ # * +:item+ - *required* - (Hash<String,Hash>) The item to put
123
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
124
+ # The maximum size is limited by the size of the primary key
125
+ # (1024 bytes as a range part of a key or 2048 bytes as a single
126
+ # part hash key) or the item size (64k).
127
+ # * +:n+ - (String) Numbers are positive or negative exact-value
128
+ # decimals and integers. A number can have up to 38 digits
129
+ # precision and can be between 10^-128 to 10^+126.
130
+ # * +:ss+ - (Array<String>) A set of strings.
131
+ # * +:ns+ - (Array<String>) A set of numbers.
132
+ # * +:delete_request+ - (Hash)
133
+ # * +:key+ - *required* - (Hash) The item's key to be delete
134
+ # * +:hash_key_element+ - *required* - (Hash) A hash key element is
135
+ # treated as the primary key, and can be a string or a number.
136
+ # Single attribute primary keys have one index value. The value
137
+ # can be String, Number, StringSet, NumberSet.
138
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary
139
+ # encoding. The maximum size is limited by the size of the
140
+ # primary key (1024 bytes as a range part of a key or 2048
141
+ # bytes as a single part hash key) or the item size (64k).
142
+ # * +:n+ - (String) Numbers are positive or negative exact-value
143
+ # decimals and integers. A number can have up to 38 digits
144
+ # precision and can be between 10^-128 to 10^+126.
145
+ # * +:ss+ - (Array<String>) A set of strings.
146
+ # * +:ns+ - (Array<String>) A set of numbers.
147
+ # * +:range_key_element+ - (Hash) A range key element is treated as
148
+ # a secondary key (used in conjunction with the primary key), and
149
+ # can be a string or a number, and is only used for
150
+ # hash-and-range primary keys. The value can be String, Number,
151
+ # StringSet, NumberSet.
152
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary
153
+ # encoding. The maximum size is limited by the size of the
154
+ # primary key (1024 bytes as a range part of a key or 2048
155
+ # bytes as a single part hash key) or the item size (64k).
156
+ # * +:n+ - (String) Numbers are positive or negative exact-value
157
+ # decimals and integers. A number can have up to 38 digits
158
+ # precision and can be between 10^-128 to 10^+126.
159
+ # * +:ss+ - (Array<String>) A set of strings.
160
+ # * +:ns+ - (Array<String>) A set of numbers.
161
+ #
162
+ # === Response Structure:
163
+ #
164
+ # * +Responses+ - (Hash<String,Hash>)
165
+ # * +ConsumedCapacityUnits+ - (Numeric)
166
+ # * +UnprocessedItems+ - (Hash<String,Hash>)
167
+ # * +value+ - (Array<Hash>)
168
+ # * +PutRequest+ - (Hash)
169
+ # * +Item+ - (Hash<String,Hash>)
170
+ # * +S+ - (String)
171
+ # * +N+ - (String)
172
+ # * +SS+ - (Array<String>)
173
+ # * +NS+ - (Array<String>)
174
+ # * +DeleteRequest+ - (Hash)
175
+ # * +Key+ - (Hash)
176
+ # * +HashKeyElement+ - (Hash)
177
+ # * +S+ - (String)
178
+ # * +N+ - (String)
179
+ # * +SS+ - (Array<String>)
180
+ # * +NS+ - (Array<String>)
181
+ # * +RangeKeyElement+ - (Hash)
182
+ # * +S+ - (String)
183
+ # * +N+ - (String)
184
+ # * +SS+ - (Array<String>)
185
+ # * +NS+ - (Array<String>)
186
+ #
187
+ # @return [Core::Response]
188
+ #
189
+ define_client_method :batch_write_item, 'BatchWriteItem'
190
+
191
+ # Calls the CreateTable API operation.
192
+ # @method create_table(options = {})
193
+ #
194
+ # === Options:
195
+ #
196
+ # * +:table_name+ - *required* - (String) The name of the table you want
197
+ # to create. Allowed characters are a-z, A-Z, 0-9, _ (underscore), -
198
+ # (hyphen) and . (period).
199
+ # * +:key_schema+ - *required* - (Hash)
200
+ # * +:hash_key_element+ - *required* - (Hash) A hash key element is
201
+ # treated as the primary key, and can be a string or a number. Single
202
+ # attribute primary keys have one index value. The value can be
203
+ # String, Number, StringSet, NumberSet.
204
+ # * +:attribute_name+ - *required* - (String) The AttributeName of
205
+ # the KeySchemaElement.
206
+ # * +:attribute_type+ - *required* - (String) The AttributeType of
207
+ # the KeySchemaElement which can be a String or a Number.
208
+ # * +:range_key_element+ - (Hash) A range key element is treated as a
209
+ # secondary key (used in conjunction with the primary key), and can
210
+ # be a string or a number, and is only used for hash-and-range
211
+ # primary keys. The value can be String, Number, StringSet,
212
+ # NumberSet.
213
+ # * +:attribute_name+ - *required* - (String) The AttributeName of
214
+ # the KeySchemaElement.
215
+ # * +:attribute_type+ - *required* - (String) The AttributeType of
216
+ # the KeySchemaElement which can be a String or a Number.
217
+ # * +:provisioned_throughput+ - *required* - (Hash)
218
+ # * +:read_capacity_units+ - *required* - (Integer) ReadCapacityUnits
219
+ # are in terms of strictly consistent reads, assuming items of 1k. 2k
220
+ # items require twice the ReadCapacityUnits. Eventually-consistent
221
+ # reads only require half the ReadCapacityUnits of stirctly
222
+ # consistent reads.
223
+ # * +:write_capacity_units+ - *required* - (Integer) WriteCapacityUnits
224
+ # are in terms of strictly consistent reads, assuming items of 1k. 2k
225
+ # items require twice the WriteCapacityUnits.
226
+ #
227
+ # === Response Structure:
228
+ #
229
+ # * +TableDescription+ - (Hash)
230
+ # * +TableName+ - (String)
231
+ # * +KeySchema+ - (Hash)
232
+ # * +HashKeyElement+ - (Hash)
233
+ # * +AttributeName+ - (String)
234
+ # * +AttributeType+ - (String)
235
+ # * +RangeKeyElement+ - (Hash)
236
+ # * +AttributeName+ - (String)
237
+ # * +AttributeType+ - (String)
238
+ # * +TableStatus+ - (String)
239
+ # * +CreationDateTime+ - (Time)
240
+ # * +ProvisionedThroughput+ - (Hash)
241
+ # * +LastIncreaseDateTime+ - (Time)
242
+ # * +LastDecreaseDateTime+ - (Time)
243
+ # * +ReadCapacityUnits+ - (Integer)
244
+ # * +WriteCapacityUnits+ - (Integer)
245
+ # * +TableSizeBytes+ - (Integer)
246
+ # * +ItemCount+ - (Integer)
247
+ #
248
+ # @return [Core::Response]
249
+ #
250
+ define_client_method :create_table, 'CreateTable'
251
+
252
+ # Calls the DeleteItem API operation.
253
+ # @method delete_item(options = {})
254
+ #
255
+ # === Options:
256
+ #
257
+ # * +:table_name+ - *required* - (String) The name of the table in which
258
+ # you want to delete an item. Allowed characters are a-z, A-Z, 0-9, _
259
+ # (underscore), - (hyphen) and . (period).
260
+ # * +:key+ - *required* - (Hash)
261
+ # * +:hash_key_element+ - *required* - (Hash) A hash key element is
262
+ # treated as the primary key, and can be a string or a number. Single
263
+ # attribute primary keys have one index value. The value can be
264
+ # String, Number, StringSet, NumberSet.
265
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
266
+ # The maximum size is limited by the size of the primary key (1024
267
+ # bytes as a range part of a key or 2048 bytes as a single part
268
+ # hash key) or the item size (64k).
269
+ # * +:n+ - (String) Numbers are positive or negative exact-value
270
+ # decimals and integers. A number can have up to 38 digits
271
+ # precision and can be between 10^-128 to 10^+126.
272
+ # * +:ss+ - (Array<String>) A set of strings.
273
+ # * +:ns+ - (Array<String>) A set of numbers.
274
+ # * +:range_key_element+ - (Hash) A range key element is treated as a
275
+ # secondary key (used in conjunction with the primary key), and can
276
+ # be a string or a number, and is only used for hash-and-range
277
+ # primary keys. The value can be String, Number, StringSet,
278
+ # NumberSet.
279
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
280
+ # The maximum size is limited by the size of the primary key (1024
281
+ # bytes as a range part of a key or 2048 bytes as a single part
282
+ # hash key) or the item size (64k).
283
+ # * +:n+ - (String) Numbers are positive or negative exact-value
284
+ # decimals and integers. A number can have up to 38 digits
285
+ # precision and can be between 10^-128 to 10^+126.
286
+ # * +:ss+ - (Array<String>) A set of strings.
287
+ # * +:ns+ - (Array<String>) A set of numbers.
288
+ # * +:expected+ - (Hash<String,Hash>)
289
+ # * +:value+ - (Hash) Specify whether or not a value already exists and
290
+ # has a specific content for the attribute name-value pair.
291
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
292
+ # The maximum size is limited by the size of the primary key (1024
293
+ # bytes as a range part of a key or 2048 bytes as a single part
294
+ # hash key) or the item size (64k).
295
+ # * +:n+ - (String) Numbers are positive or negative exact-value
296
+ # decimals and integers. A number can have up to 38 digits
297
+ # precision and can be between 10^-128 to 10^+126.
298
+ # * +:ss+ - (Array<String>) A set of strings.
299
+ # * +:ns+ - (Array<String>) A set of numbers.
300
+ # * +:exists+ - (Boolean) Specify whether or not a value already exists
301
+ # for the attribute name-value pair.
302
+ # * +:return_values+ - (String)
303
+ #
304
+ # === Response Structure:
305
+ #
306
+ # * +Attributes+ - (Hash<String,Hash>)
307
+ # * +S+ - (String)
308
+ # * +N+ - (String)
309
+ # * +SS+ - (Array<String>)
310
+ # * +NS+ - (Array<String>)
311
+ # * +ConsumedCapacityUnits+ - (Numeric)
312
+ #
313
+ # @return [Core::Response]
314
+ #
315
+ define_client_method :delete_item, 'DeleteItem'
316
+
317
+ # Calls the DeleteTable API operation.
318
+ # @method delete_table(options = {})
319
+ #
320
+ # === Options:
321
+ #
322
+ # * +:table_name+ - *required* - (String) The name of the table you want
323
+ # to delete. Allowed characters are a-z, A-Z, 0-9, _ (underscore), -
324
+ # (hyphen) and . (period).
325
+ #
326
+ # === Response Structure:
327
+ #
328
+ # * +TableDescription+ - (Hash)
329
+ # * +TableName+ - (String)
330
+ # * +KeySchema+ - (Hash)
331
+ # * +HashKeyElement+ - (Hash)
332
+ # * +AttributeName+ - (String)
333
+ # * +AttributeType+ - (String)
334
+ # * +RangeKeyElement+ - (Hash)
335
+ # * +AttributeName+ - (String)
336
+ # * +AttributeType+ - (String)
337
+ # * +TableStatus+ - (String)
338
+ # * +CreationDateTime+ - (Time)
339
+ # * +ProvisionedThroughput+ - (Hash)
340
+ # * +LastIncreaseDateTime+ - (Time)
341
+ # * +LastDecreaseDateTime+ - (Time)
342
+ # * +ReadCapacityUnits+ - (Integer)
343
+ # * +WriteCapacityUnits+ - (Integer)
344
+ # * +TableSizeBytes+ - (Integer)
345
+ # * +ItemCount+ - (Integer)
346
+ #
347
+ # @return [Core::Response]
348
+ #
349
+ define_client_method :delete_table, 'DeleteTable'
350
+
351
+ # Calls the DescribeTable API operation.
352
+ # @method describe_table(options = {})
353
+ #
354
+ # === Options:
355
+ #
356
+ # * +:table_name+ - *required* - (String) The name of the table you want
357
+ # to describe. Allowed characters are a-z, A-Z, 0-9, _ (underscore), -
358
+ # (hyphen) and . (period).
359
+ #
360
+ # === Response Structure:
361
+ #
362
+ # * +Table+ - (Hash)
363
+ # * +TableName+ - (String)
364
+ # * +KeySchema+ - (Hash)
365
+ # * +HashKeyElement+ - (Hash)
366
+ # * +AttributeName+ - (String)
367
+ # * +AttributeType+ - (String)
368
+ # * +RangeKeyElement+ - (Hash)
369
+ # * +AttributeName+ - (String)
370
+ # * +AttributeType+ - (String)
371
+ # * +TableStatus+ - (String)
372
+ # * +CreationDateTime+ - (Time)
373
+ # * +ProvisionedThroughput+ - (Hash)
374
+ # * +LastIncreaseDateTime+ - (Time)
375
+ # * +LastDecreaseDateTime+ - (Time)
376
+ # * +ReadCapacityUnits+ - (Integer)
377
+ # * +WriteCapacityUnits+ - (Integer)
378
+ # * +TableSizeBytes+ - (Integer)
379
+ # * +ItemCount+ - (Integer)
380
+ #
381
+ # @return [Core::Response]
382
+ #
383
+ define_client_method :describe_table, 'DescribeTable'
384
+
385
+ # Calls the GetItem API operation.
386
+ # @method get_item(options = {})
387
+ #
388
+ # === Options:
389
+ #
390
+ # * +:table_name+ - *required* - (String) The name of the table in which
391
+ # you want to get an item. Allowed characters are a-z, A-Z, 0-9, _
392
+ # (underscore), - (hyphen) and . (period).
393
+ # * +:key+ - *required* - (Hash)
394
+ # * +:hash_key_element+ - *required* - (Hash) A hash key element is
395
+ # treated as the primary key, and can be a string or a number. Single
396
+ # attribute primary keys have one index value. The value can be
397
+ # String, Number, StringSet, NumberSet.
398
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
399
+ # The maximum size is limited by the size of the primary key (1024
400
+ # bytes as a range part of a key or 2048 bytes as a single part
401
+ # hash key) or the item size (64k).
402
+ # * +:n+ - (String) Numbers are positive or negative exact-value
403
+ # decimals and integers. A number can have up to 38 digits
404
+ # precision and can be between 10^-128 to 10^+126.
405
+ # * +:ss+ - (Array<String>) A set of strings.
406
+ # * +:ns+ - (Array<String>) A set of numbers.
407
+ # * +:range_key_element+ - (Hash) A range key element is treated as a
408
+ # secondary key (used in conjunction with the primary key), and can
409
+ # be a string or a number, and is only used for hash-and-range
410
+ # primary keys. The value can be String, Number, StringSet,
411
+ # NumberSet.
412
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
413
+ # The maximum size is limited by the size of the primary key (1024
414
+ # bytes as a range part of a key or 2048 bytes as a single part
415
+ # hash key) or the item size (64k).
416
+ # * +:n+ - (String) Numbers are positive or negative exact-value
417
+ # decimals and integers. A number can have up to 38 digits
418
+ # precision and can be between 10^-128 to 10^+126.
419
+ # * +:ss+ - (Array<String>) A set of strings.
420
+ # * +:ns+ - (Array<String>) A set of numbers.
421
+ # * +:attributes_to_get+ - (Array<String>)
422
+ # * +:consistent_read+ - (Boolean)
423
+ #
424
+ # === Response Structure:
425
+ #
426
+ # * +Item+ - (Hash<String,Hash>)
427
+ # * +S+ - (String)
428
+ # * +N+ - (String)
429
+ # * +SS+ - (Array<String>)
430
+ # * +NS+ - (Array<String>)
431
+ # * +ConsumedCapacityUnits+ - (Numeric)
432
+ #
433
+ # @return [Core::Response]
434
+ #
435
+ define_client_method :get_item, 'GetItem'
436
+
437
+ # Calls the ListTables API operation.
438
+ # @method list_tables(options = {})
439
+ #
440
+ # === Options:
441
+ #
442
+ # * +:exclusive_start_table_name+ - (String) The name of the table that
443
+ # starts the list. If you already ran a ListTables operation and
444
+ # recieved a LastEvaluatedTableName value in the response, use that
445
+ # value here to continue the list.
446
+ # * +:limit+ - (Integer)
447
+ #
448
+ # === Response Structure:
449
+ #
450
+ # * +TableNames+ - (Array<String>)
451
+ # * +LastEvaluatedTableName+ - (String)
452
+ #
453
+ # @return [Core::Response]
454
+ #
455
+ define_client_method :list_tables, 'ListTables'
456
+
457
+ # Calls the PutItem API operation.
458
+ # @method put_item(options = {})
459
+ #
460
+ # === Options:
461
+ #
462
+ # * +:table_name+ - *required* - (String) The name of the table in which
463
+ # you want to put an item. Allowed characters are a-z, A-Z, 0-9, _
464
+ # (underscore), - (hyphen) and . (period).
465
+ # * +:item+ - *required* - (Hash<String,Hash>)
466
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding. The
467
+ # maximum size is limited by the size of the primary key (1024 bytes
468
+ # as a range part of a key or 2048 bytes as a single part hash key)
469
+ # or the item size (64k).
470
+ # * +:n+ - (String) Numbers are positive or negative exact-value
471
+ # decimals and integers. A number can have up to 38 digits precision
472
+ # and can be between 10^-128 to 10^+126.
473
+ # * +:ss+ - (Array<String>) A set of strings.
474
+ # * +:ns+ - (Array<String>) A set of numbers.
475
+ # * +:expected+ - (Hash<String,Hash>)
476
+ # * +:value+ - (Hash) Specify whether or not a value already exists and
477
+ # has a specific content for the attribute name-value pair.
478
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
479
+ # The maximum size is limited by the size of the primary key (1024
480
+ # bytes as a range part of a key or 2048 bytes as a single part
481
+ # hash key) or the item size (64k).
482
+ # * +:n+ - (String) Numbers are positive or negative exact-value
483
+ # decimals and integers. A number can have up to 38 digits
484
+ # precision and can be between 10^-128 to 10^+126.
485
+ # * +:ss+ - (Array<String>) A set of strings.
486
+ # * +:ns+ - (Array<String>) A set of numbers.
487
+ # * +:exists+ - (Boolean) Specify whether or not a value already exists
488
+ # for the attribute name-value pair.
489
+ # * +:return_values+ - (String)
490
+ #
491
+ # === Response Structure:
492
+ #
493
+ # * +Attributes+ - (Hash<String,Hash>)
494
+ # * +S+ - (String)
495
+ # * +N+ - (String)
496
+ # * +SS+ - (Array<String>)
497
+ # * +NS+ - (Array<String>)
498
+ # * +ConsumedCapacityUnits+ - (Numeric)
499
+ #
500
+ # @return [Core::Response]
501
+ #
502
+ define_client_method :put_item, 'PutItem'
503
+
504
+ # Calls the Query API operation.
505
+ # @method query(options = {})
506
+ #
507
+ # === Options:
508
+ #
509
+ # * +:table_name+ - *required* - (String) The name of the table in which
510
+ # you want to query. Allowed characters are a-z, A-Z, 0-9, _
511
+ # (underscore), - (hyphen) and . (period).
512
+ # * +:attributes_to_get+ - (Array<String>)
513
+ # * +:limit+ - (Integer) The maximum number of items to return. If Amazon
514
+ # DynamoDB hits this limit while querying the table, it stops the query
515
+ # and returns the matching values up to the limit, and a
516
+ # LastEvaluatedKey to apply in a subsequent operation to continue the
517
+ # query. Also, if the result set size exceeds 1MB before Amazon
518
+ # DynamoDB hits this limit, it stops the query and returns the matching
519
+ # values, and a LastEvaluatedKey to apply in a subsequent operation to
520
+ # continue the query.
521
+ # * +:consistent_read+ - (Boolean)
522
+ # * +:count+ - (Boolean) If set to +true+ , Amazon DynamoDB returns a
523
+ # total number of items that match the query parameters, instead of a
524
+ # list of the matching items and their attributes. Do not set Count to
525
+ # +true+ while providing a list of AttributesToGet, otherwise Amazon
526
+ # DynamoDB returns a validation error.
527
+ # * +:hash_key_value+ - *required* - (Hash) Attribute value of the hash
528
+ # component of the composite primary key.
529
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding. The
530
+ # maximum size is limited by the size of the primary key (1024 bytes
531
+ # as a range part of a key or 2048 bytes as a single part hash key)
532
+ # or the item size (64k).
533
+ # * +:n+ - (String) Numbers are positive or negative exact-value
534
+ # decimals and integers. A number can have up to 38 digits precision
535
+ # and can be between 10^-128 to 10^+126.
536
+ # * +:ss+ - (Array<String>) A set of strings.
537
+ # * +:ns+ - (Array<String>) A set of numbers.
538
+ # * +:range_key_condition+ - (Hash) A container for the attribute values
539
+ # and comparison operators to use for the query.
540
+ # * +:attribute_value_list+ - (Array<Hash>)
541
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
542
+ # The maximum size is limited by the size of the primary key (1024
543
+ # bytes as a range part of a key or 2048 bytes as a single part
544
+ # hash key) or the item size (64k).
545
+ # * +:n+ - (String) Numbers are positive or negative exact-value
546
+ # decimals and integers. A number can have up to 38 digits
547
+ # precision and can be between 10^-128 to 10^+126.
548
+ # * +:ss+ - (Array<String>) A set of strings.
549
+ # * +:ns+ - (Array<String>) A set of numbers.
550
+ # * +:comparison_operator+ - *required* - (String)
551
+ # * +:scan_index_forward+ - (Boolean) Specifies forward or backward
552
+ # traversal of the index. Amazon DynamoDB returns results reflecting
553
+ # the requested order, determined by the range key. Default is +true+
554
+ # (forward).
555
+ # * +:exclusive_start_key+ - (Hash) Primary key of the item from which to
556
+ # continue an earlier query. An earlier query might provide this value
557
+ # as the LastEvaluatedKey if that query operation was interrupted
558
+ # before completing the query; either because of the result set size or
559
+ # the Limit parameter. The LastEvaluatedKey can be passed back in a new
560
+ # query request to continue the operation from that point.
561
+ # * +:hash_key_element+ - *required* - (Hash) A hash key element is
562
+ # treated as the primary key, and can be a string or a number. Single
563
+ # attribute primary keys have one index value. The value can be
564
+ # String, Number, StringSet, NumberSet.
565
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
566
+ # The maximum size is limited by the size of the primary key (1024
567
+ # bytes as a range part of a key or 2048 bytes as a single part
568
+ # hash key) or the item size (64k).
569
+ # * +:n+ - (String) Numbers are positive or negative exact-value
570
+ # decimals and integers. A number can have up to 38 digits
571
+ # precision and can be between 10^-128 to 10^+126.
572
+ # * +:ss+ - (Array<String>) A set of strings.
573
+ # * +:ns+ - (Array<String>) A set of numbers.
574
+ # * +:range_key_element+ - (Hash) A range key element is treated as a
575
+ # secondary key (used in conjunction with the primary key), and can
576
+ # be a string or a number, and is only used for hash-and-range
577
+ # primary keys. The value can be String, Number, StringSet,
578
+ # NumberSet.
579
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
580
+ # The maximum size is limited by the size of the primary key (1024
581
+ # bytes as a range part of a key or 2048 bytes as a single part
582
+ # hash key) or the item size (64k).
583
+ # * +:n+ - (String) Numbers are positive or negative exact-value
584
+ # decimals and integers. A number can have up to 38 digits
585
+ # precision and can be between 10^-128 to 10^+126.
586
+ # * +:ss+ - (Array<String>) A set of strings.
587
+ # * +:ns+ - (Array<String>) A set of numbers.
588
+ #
589
+ # === Response Structure:
590
+ #
591
+ # * +member+ - (Hash<String,Hash>)
592
+ # * +S+ - (String)
593
+ # * +N+ - (String)
594
+ # * +SS+ - (Array<String>)
595
+ # * +NS+ - (Array<String>)
596
+ # * +Count+ - (Integer)
597
+ # * +LastEvaluatedKey+ - (Hash)
598
+ # * +HashKeyElement+ - (Hash)
599
+ # * +S+ - (String)
600
+ # * +N+ - (String)
601
+ # * +SS+ - (Array<String>)
602
+ # * +NS+ - (Array<String>)
603
+ # * +RangeKeyElement+ - (Hash)
604
+ # * +S+ - (String)
605
+ # * +N+ - (String)
606
+ # * +SS+ - (Array<String>)
607
+ # * +NS+ - (Array<String>)
608
+ # * +ConsumedCapacityUnits+ - (Numeric)
609
+ #
610
+ # @return [Core::Response]
611
+ #
612
+ define_client_method :query, 'Query'
613
+
614
+ # Calls the Scan API operation.
615
+ # @method scan(options = {})
616
+ #
617
+ # === Options:
618
+ #
619
+ # * +:table_name+ - *required* - (String) The name of the table in which
620
+ # you want to scan. Allowed characters are a-z, A-Z, 0-9, _
621
+ # (underscore), - (hyphen) and . (period).
622
+ # * +:attributes_to_get+ - (Array<String>)
623
+ # * +:limit+ - (Integer) The maximum number of items to return. If Amazon
624
+ # DynamoDB hits this limit while scanning the table, it stops the scan
625
+ # and returns the matching values up to the limit, and a
626
+ # LastEvaluatedKey to apply in a subsequent operation to continue the
627
+ # scan. Also, if the scanned data set size exceeds 1MB before Amazon
628
+ # DynamoDB hits this limit, it stops the scan and returns the matching
629
+ # values up to the limit, and a LastEvaluatedKey to apply in a
630
+ # subsequent operation to continue the scan.
631
+ # * +:count+ - (Boolean) If set to +true+ , Amazon DynamoDB returns a
632
+ # total number of items for the Scan operation, even if the operation
633
+ # has no matching items for the assigned filter. Do not set Count to
634
+ # +true+ while providing a list of AttributesToGet, otherwise Amazon
635
+ # DynamoDB returns a validation error.
636
+ # * +:scan_filter+ - (Hash<String,Hash>) Evaluates the scan results and
637
+ # returns only the desired values.
638
+ # * +:attribute_value_list+ - (Array<Hash>)
639
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
640
+ # The maximum size is limited by the size of the primary key (1024
641
+ # bytes as a range part of a key or 2048 bytes as a single part
642
+ # hash key) or the item size (64k).
643
+ # * +:n+ - (String) Numbers are positive or negative exact-value
644
+ # decimals and integers. A number can have up to 38 digits
645
+ # precision and can be between 10^-128 to 10^+126.
646
+ # * +:ss+ - (Array<String>) A set of strings.
647
+ # * +:ns+ - (Array<String>) A set of numbers.
648
+ # * +:comparison_operator+ - *required* - (String)
649
+ # * +:exclusive_start_key+ - (Hash) Primary key of the item from which to
650
+ # continue an earlier scan. An earlier scan might provide this value if
651
+ # that scan operation was interrupted before scanning the entire table;
652
+ # either because of the result set size or the Limit parameter. The
653
+ # LastEvaluatedKey can be passed back in a new scan request to continue
654
+ # the operation from that point.
655
+ # * +:hash_key_element+ - *required* - (Hash) A hash key element is
656
+ # treated as the primary key, and can be a string or a number. Single
657
+ # attribute primary keys have one index value. The value can be
658
+ # String, Number, StringSet, NumberSet.
659
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
660
+ # The maximum size is limited by the size of the primary key (1024
661
+ # bytes as a range part of a key or 2048 bytes as a single part
662
+ # hash key) or the item size (64k).
663
+ # * +:n+ - (String) Numbers are positive or negative exact-value
664
+ # decimals and integers. A number can have up to 38 digits
665
+ # precision and can be between 10^-128 to 10^+126.
666
+ # * +:ss+ - (Array<String>) A set of strings.
667
+ # * +:ns+ - (Array<String>) A set of numbers.
668
+ # * +:range_key_element+ - (Hash) A range key element is treated as a
669
+ # secondary key (used in conjunction with the primary key), and can
670
+ # be a string or a number, and is only used for hash-and-range
671
+ # primary keys. The value can be String, Number, StringSet,
672
+ # NumberSet.
673
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
674
+ # The maximum size is limited by the size of the primary key (1024
675
+ # bytes as a range part of a key or 2048 bytes as a single part
676
+ # hash key) or the item size (64k).
677
+ # * +:n+ - (String) Numbers are positive or negative exact-value
678
+ # decimals and integers. A number can have up to 38 digits
679
+ # precision and can be between 10^-128 to 10^+126.
680
+ # * +:ss+ - (Array<String>) A set of strings.
681
+ # * +:ns+ - (Array<String>) A set of numbers.
682
+ #
683
+ # === Response Structure:
684
+ #
685
+ # * +member+ - (Hash<String,Hash>)
686
+ # * +S+ - (String)
687
+ # * +N+ - (String)
688
+ # * +SS+ - (Array<String>)
689
+ # * +NS+ - (Array<String>)
690
+ # * +Count+ - (Integer)
691
+ # * +ScannedCount+ - (Integer)
692
+ # * +LastEvaluatedKey+ - (Hash)
693
+ # * +HashKeyElement+ - (Hash)
694
+ # * +S+ - (String)
695
+ # * +N+ - (String)
696
+ # * +SS+ - (Array<String>)
697
+ # * +NS+ - (Array<String>)
698
+ # * +RangeKeyElement+ - (Hash)
699
+ # * +S+ - (String)
700
+ # * +N+ - (String)
701
+ # * +SS+ - (Array<String>)
702
+ # * +NS+ - (Array<String>)
703
+ # * +ConsumedCapacityUnits+ - (Numeric)
704
+ #
705
+ # @return [Core::Response]
706
+ #
707
+ define_client_method :scan, 'Scan'
708
+
709
+ # Calls the UpdateItem API operation.
710
+ # @method update_item(options = {})
711
+ #
712
+ # === Options:
713
+ #
714
+ # * +:table_name+ - *required* - (String) The name of the table in which
715
+ # you want to update an item. Allowed characters are a-z, A-Z, 0-9, _
716
+ # (underscore), - (hyphen) and . (period).
717
+ # * +:key+ - *required* - (Hash)
718
+ # * +:hash_key_element+ - *required* - (Hash) A hash key element is
719
+ # treated as the primary key, and can be a string or a number. Single
720
+ # attribute primary keys have one index value. The value can be
721
+ # String, Number, StringSet, NumberSet.
722
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
723
+ # The maximum size is limited by the size of the primary key (1024
724
+ # bytes as a range part of a key or 2048 bytes as a single part
725
+ # hash key) or the item size (64k).
726
+ # * +:n+ - (String) Numbers are positive or negative exact-value
727
+ # decimals and integers. A number can have up to 38 digits
728
+ # precision and can be between 10^-128 to 10^+126.
729
+ # * +:ss+ - (Array<String>) A set of strings.
730
+ # * +:ns+ - (Array<String>) A set of numbers.
731
+ # * +:range_key_element+ - (Hash) A range key element is treated as a
732
+ # secondary key (used in conjunction with the primary key), and can
733
+ # be a string or a number, and is only used for hash-and-range
734
+ # primary keys. The value can be String, Number, StringSet,
735
+ # NumberSet.
736
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
737
+ # The maximum size is limited by the size of the primary key (1024
738
+ # bytes as a range part of a key or 2048 bytes as a single part
739
+ # hash key) or the item size (64k).
740
+ # * +:n+ - (String) Numbers are positive or negative exact-value
741
+ # decimals and integers. A number can have up to 38 digits
742
+ # precision and can be between 10^-128 to 10^+126.
743
+ # * +:ss+ - (Array<String>) A set of strings.
744
+ # * +:ns+ - (Array<String>) A set of numbers.
745
+ # * +:attribute_updates+ - *required* - (Hash<String,Hash>)
746
+ # * +:value+ - (Hash)
747
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
748
+ # The maximum size is limited by the size of the primary key (1024
749
+ # bytes as a range part of a key or 2048 bytes as a single part
750
+ # hash key) or the item size (64k).
751
+ # * +:n+ - (String) Numbers are positive or negative exact-value
752
+ # decimals and integers. A number can have up to 38 digits
753
+ # precision and can be between 10^-128 to 10^+126.
754
+ # * +:ss+ - (Array<String>) A set of strings.
755
+ # * +:ns+ - (Array<String>) A set of numbers.
756
+ # * +:action+ - (String)
757
+ # * +:expected+ - (Hash<String,Hash>)
758
+ # * +:value+ - (Hash) Specify whether or not a value already exists and
759
+ # has a specific content for the attribute name-value pair.
760
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
761
+ # The maximum size is limited by the size of the primary key (1024
762
+ # bytes as a range part of a key or 2048 bytes as a single part
763
+ # hash key) or the item size (64k).
764
+ # * +:n+ - (String) Numbers are positive or negative exact-value
765
+ # decimals and integers. A number can have up to 38 digits
766
+ # precision and can be between 10^-128 to 10^+126.
767
+ # * +:ss+ - (Array<String>) A set of strings.
768
+ # * +:ns+ - (Array<String>) A set of numbers.
769
+ # * +:exists+ - (Boolean) Specify whether or not a value already exists
770
+ # for the attribute name-value pair.
771
+ # * +:return_values+ - (String)
772
+ #
773
+ # === Response Structure:
774
+ #
775
+ # * +Attributes+ - (Hash<String,Hash>)
776
+ # * +S+ - (String)
777
+ # * +N+ - (String)
778
+ # * +SS+ - (Array<String>)
779
+ # * +NS+ - (Array<String>)
780
+ # * +ConsumedCapacityUnits+ - (Numeric)
781
+ #
782
+ # @return [Core::Response]
783
+ #
784
+ define_client_method :update_item, 'UpdateItem'
785
+
786
+ # Calls the UpdateTable API operation.
787
+ # @method update_table(options = {})
788
+ #
789
+ # === Options:
790
+ #
791
+ # * +:table_name+ - *required* - (String) The name of the table you want
792
+ # to update. Allowed characters are a-z, A-Z, 0-9, _ (underscore), -
793
+ # (hyphen) and . (period).
794
+ # * +:provisioned_throughput+ - *required* - (Hash)
795
+ # * +:read_capacity_units+ - *required* - (Integer) ReadCapacityUnits
796
+ # are in terms of strictly consistent reads, assuming items of 1k. 2k
797
+ # items require twice the ReadCapacityUnits. Eventually-consistent
798
+ # reads only require half the ReadCapacityUnits of stirctly
799
+ # consistent reads.
800
+ # * +:write_capacity_units+ - *required* - (Integer) WriteCapacityUnits
801
+ # are in terms of strictly consistent reads, assuming items of 1k. 2k
802
+ # items require twice the WriteCapacityUnits.
803
+ #
804
+ # === Response Structure:
805
+ #
806
+ # * +TableDescription+ - (Hash)
807
+ # * +TableName+ - (String)
808
+ # * +KeySchema+ - (Hash)
809
+ # * +HashKeyElement+ - (Hash)
810
+ # * +AttributeName+ - (String)
811
+ # * +AttributeType+ - (String)
812
+ # * +RangeKeyElement+ - (Hash)
813
+ # * +AttributeName+ - (String)
814
+ # * +AttributeType+ - (String)
815
+ # * +TableStatus+ - (String)
816
+ # * +CreationDateTime+ - (Time)
817
+ # * +ProvisionedThroughput+ - (Hash)
818
+ # * +LastIncreaseDateTime+ - (Time)
819
+ # * +LastDecreaseDateTime+ - (Time)
820
+ # * +ReadCapacityUnits+ - (Integer)
821
+ # * +WriteCapacityUnits+ - (Integer)
822
+ # * +TableSizeBytes+ - (Integer)
823
+ # * +ItemCount+ - (Integer)
824
+ #
825
+ # @return [Core::Response]
826
+ #
827
+ define_client_method :update_table, 'UpdateTable'
828
+
829
+ ## end client methods ##
830
+
46
831
  protected
47
- def extract_error_code response
832
+
833
+ def extract_error_details response
48
834
  if response.http_response.status == 413
49
- 'RequestEntityTooLarge'
835
+ ['RequestEntityTooLarge', 'Request entity too large']
50
836
  else
51
- super(response)
837
+ super
52
838
  end
53
839
  end
54
840
 
55
- private
56
841
  def should_retry? response
57
842
  if possible_expired_credentials?(response)
58
843
  true
@@ -63,7 +848,6 @@ module AWS
63
848
  end
64
849
  end
65
850
 
66
- private
67
851
  def rebuild_http_request response
68
852
  # called when a request is going to be retried, in case of
69
853
  # expired credentials we should refresh the session
@@ -71,7 +855,6 @@ module AWS
71
855
  super
72
856
  end
73
857
 
74
- private
75
858
  def sleep_durations response
76
859
 
77
860
  retry_count =
@@ -93,7 +876,6 @@ module AWS
93
876
 
94
877
  end
95
878
 
96
- private
97
879
  # Returns true if we get an access denied error from the service AND
98
880
  # our signer is capible of getting new short-term credentials
99
881
  def possible_expired_credentials? response