aws-sdk 1.32.0 → 3.0.2

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 (551) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +100 -0
  3. data/LICENSE.txt +199 -9
  4. data/VERSION +1 -0
  5. data/lib/aws-sdk.rb +2 -14
  6. metadata +22 -591
  7. data/.yardopts +0 -7
  8. data/README.md +0 -291
  9. data/bin/aws-rb +0 -169
  10. data/ca-bundle.crt +0 -3554
  11. data/endpoints.json +0 -1506
  12. data/lib/aws.rb +0 -14
  13. data/lib/aws/api_config/AutoScaling-2011-01-01.yml +0 -869
  14. data/lib/aws/api_config/CloudFormation-2010-05-15.yml +0 -358
  15. data/lib/aws/api_config/CloudFront-2013-05-12.yml +0 -2448
  16. data/lib/aws/api_config/CloudFront-2013-08-26.yml +0 -2599
  17. data/lib/aws/api_config/CloudFront-2013-09-27.yml +0 -2765
  18. data/lib/aws/api_config/CloudFront-2013-11-11.yml +0 -2886
  19. data/lib/aws/api_config/CloudSearch-2011-02-01.yml +0 -681
  20. data/lib/aws/api_config/CloudTrail-2013-11-01.yml +0 -159
  21. data/lib/aws/api_config/CloudWatch-2010-08-01.yml +0 -433
  22. data/lib/aws/api_config/DataPipeline-2012-10-29.yml +0 -422
  23. data/lib/aws/api_config/DirectConnect-2012-10-25.yml +0 -735
  24. data/lib/aws/api_config/DynamoDB-2011-12-05.yml +0 -1168
  25. data/lib/aws/api_config/DynamoDB-2012-08-10.yml +0 -2005
  26. data/lib/aws/api_config/EC2-2013-08-15.yml +0 -4708
  27. data/lib/aws/api_config/EC2-2013-10-01.yml +0 -4726
  28. data/lib/aws/api_config/EC2-2013-10-15.yml +0 -4726
  29. data/lib/aws/api_config/ELB-2012-06-01.yml +0 -632
  30. data/lib/aws/api_config/EMR-2009-03-31.yml +0 -953
  31. data/lib/aws/api_config/ElastiCache-2013-06-15.yml +0 -1188
  32. data/lib/aws/api_config/ElasticBeanstalk-2010-12-01.yml +0 -847
  33. data/lib/aws/api_config/ElasticTranscoder-2012-09-25.yml +0 -2285
  34. data/lib/aws/api_config/Glacier-2012-06-01.yml +0 -649
  35. data/lib/aws/api_config/IAM-2010-05-08.yml +0 -1297
  36. data/lib/aws/api_config/ImportExport-2010-06-01.yml +0 -109
  37. data/lib/aws/api_config/Kinesis-2013-12-02.yml +0 -201
  38. data/lib/aws/api_config/OpsWorks-2013-02-18.yml +0 -1825
  39. data/lib/aws/api_config/RDS-2013-05-15.yml +0 -2464
  40. data/lib/aws/api_config/RDS-2013-09-09.yml +0 -2641
  41. data/lib/aws/api_config/Redshift-2012-12-01.yml +0 -2137
  42. data/lib/aws/api_config/Route53-2012-12-12.yml +0 -547
  43. data/lib/aws/api_config/SNS-2010-03-31.yml +0 -433
  44. data/lib/aws/api_config/SQS-2012-11-05.yml +0 -319
  45. data/lib/aws/api_config/STS-2011-06-15.yml +0 -147
  46. data/lib/aws/api_config/SimpleDB-2009-04-15.yml +0 -306
  47. data/lib/aws/api_config/SimpleEmailService-2010-12-01.yml +0 -346
  48. data/lib/aws/api_config/SimpleWorkflow-2012-01-25.yml +0 -2388
  49. data/lib/aws/api_config/StorageGateway-2012-06-30.yml +0 -748
  50. data/lib/aws/api_config/StorageGateway-2013-06-30.yml +0 -1025
  51. data/lib/aws/api_config/Support-2013-04-15.yml +0 -426
  52. data/lib/aws/auto_scaling.rb +0 -163
  53. data/lib/aws/auto_scaling/activity.rb +0 -102
  54. data/lib/aws/auto_scaling/activity_collection.rb +0 -81
  55. data/lib/aws/auto_scaling/client.rb +0 -48
  56. data/lib/aws/auto_scaling/config.rb +0 -18
  57. data/lib/aws/auto_scaling/errors.rb +0 -22
  58. data/lib/aws/auto_scaling/group.rb +0 -421
  59. data/lib/aws/auto_scaling/group_collection.rb +0 -96
  60. data/lib/aws/auto_scaling/group_options.rb +0 -155
  61. data/lib/aws/auto_scaling/instance.rb +0 -192
  62. data/lib/aws/auto_scaling/instance_collection.rb +0 -63
  63. data/lib/aws/auto_scaling/launch_configuration.rb +0 -162
  64. data/lib/aws/auto_scaling/launch_configuration_collection.rb +0 -160
  65. data/lib/aws/auto_scaling/notification_configuration.rb +0 -89
  66. data/lib/aws/auto_scaling/notification_configuration_collection.rb +0 -183
  67. data/lib/aws/auto_scaling/scaling_policy.rb +0 -142
  68. data/lib/aws/auto_scaling/scaling_policy_collection.rb +0 -72
  69. data/lib/aws/auto_scaling/scaling_policy_options.rb +0 -65
  70. data/lib/aws/auto_scaling/scheduled_action.rb +0 -141
  71. data/lib/aws/auto_scaling/scheduled_action_collection.rb +0 -202
  72. data/lib/aws/auto_scaling/tag.rb +0 -59
  73. data/lib/aws/auto_scaling/tag_collection.rb +0 -114
  74. data/lib/aws/cloud_formation.rb +0 -272
  75. data/lib/aws/cloud_formation/client.rb +0 -48
  76. data/lib/aws/cloud_formation/config.rb +0 -18
  77. data/lib/aws/cloud_formation/errors.rb +0 -22
  78. data/lib/aws/cloud_formation/stack.rb +0 -266
  79. data/lib/aws/cloud_formation/stack_collection.rb +0 -232
  80. data/lib/aws/cloud_formation/stack_event.rb +0 -73
  81. data/lib/aws/cloud_formation/stack_event_collection.rb +0 -47
  82. data/lib/aws/cloud_formation/stack_options.rb +0 -72
  83. data/lib/aws/cloud_formation/stack_output.rb +0 -53
  84. data/lib/aws/cloud_formation/stack_resource.rb +0 -117
  85. data/lib/aws/cloud_formation/stack_resource_collection.rb +0 -83
  86. data/lib/aws/cloud_formation/stack_resource_summary_collection.rb +0 -64
  87. data/lib/aws/cloud_formation/stack_summary_collection.rb +0 -123
  88. data/lib/aws/cloud_front.rb +0 -72
  89. data/lib/aws/cloud_front/client.rb +0 -45
  90. data/lib/aws/cloud_front/config.rb +0 -18
  91. data/lib/aws/cloud_front/errors.rb +0 -22
  92. data/lib/aws/cloud_search.rb +0 -73
  93. data/lib/aws/cloud_search/client.rb +0 -36
  94. data/lib/aws/cloud_search/config.rb +0 -18
  95. data/lib/aws/cloud_search/errors.rb +0 -22
  96. data/lib/aws/cloud_trail.rb +0 -72
  97. data/lib/aws/cloud_trail/client.rb +0 -35
  98. data/lib/aws/cloud_trail/config.rb +0 -18
  99. data/lib/aws/cloud_trail/errors.rb +0 -22
  100. data/lib/aws/cloud_watch.rb +0 -118
  101. data/lib/aws/cloud_watch/alarm.rb +0 -290
  102. data/lib/aws/cloud_watch/alarm_collection.rb +0 -153
  103. data/lib/aws/cloud_watch/alarm_history_item.rb +0 -50
  104. data/lib/aws/cloud_watch/alarm_history_item_collection.rb +0 -84
  105. data/lib/aws/cloud_watch/client.rb +0 -40
  106. data/lib/aws/cloud_watch/config.rb +0 -18
  107. data/lib/aws/cloud_watch/errors.rb +0 -22
  108. data/lib/aws/cloud_watch/metric.rb +0 -135
  109. data/lib/aws/cloud_watch/metric_alarm_collection.rb +0 -160
  110. data/lib/aws/cloud_watch/metric_collection.rb +0 -129
  111. data/lib/aws/cloud_watch/metric_statistics.rb +0 -69
  112. data/lib/aws/core.rb +0 -701
  113. data/lib/aws/core/async_handle.rb +0 -90
  114. data/lib/aws/core/cacheable.rb +0 -77
  115. data/lib/aws/core/client.rb +0 -778
  116. data/lib/aws/core/collection.rb +0 -263
  117. data/lib/aws/core/collection/simple.rb +0 -82
  118. data/lib/aws/core/collection/with_limit_and_next_token.rb +0 -71
  119. data/lib/aws/core/collection/with_next_token.rb +0 -97
  120. data/lib/aws/core/configuration.rb +0 -541
  121. data/lib/aws/core/credential_providers.rb +0 -506
  122. data/lib/aws/core/data.rb +0 -247
  123. data/lib/aws/core/deprecations.rb +0 -84
  124. data/lib/aws/core/endpoints.rb +0 -37
  125. data/lib/aws/core/http/connection_pool.rb +0 -349
  126. data/lib/aws/core/http/curb_handler.rb +0 -148
  127. data/lib/aws/core/http/handler.rb +0 -89
  128. data/lib/aws/core/http/net_http_handler.rb +0 -147
  129. data/lib/aws/core/http/patch.rb +0 -102
  130. data/lib/aws/core/http/request.rb +0 -249
  131. data/lib/aws/core/http/response.rb +0 -81
  132. data/lib/aws/core/indifferent_hash.rb +0 -88
  133. data/lib/aws/core/inflection.rb +0 -56
  134. data/lib/aws/core/json_client.rb +0 -47
  135. data/lib/aws/core/json_parser.rb +0 -76
  136. data/lib/aws/core/json_request_builder.rb +0 -35
  137. data/lib/aws/core/json_response_parser.rb +0 -79
  138. data/lib/aws/core/lazy_error_classes.rb +0 -90
  139. data/lib/aws/core/log_formatter.rb +0 -428
  140. data/lib/aws/core/managed_file.rb +0 -32
  141. data/lib/aws/core/meta_utils.rb +0 -45
  142. data/lib/aws/core/model.rb +0 -57
  143. data/lib/aws/core/naming.rb +0 -30
  144. data/lib/aws/core/option_grammar.rb +0 -738
  145. data/lib/aws/core/options/json_serializer.rb +0 -82
  146. data/lib/aws/core/options/validator.rb +0 -155
  147. data/lib/aws/core/options/xml_serializer.rb +0 -118
  148. data/lib/aws/core/page_result.rb +0 -75
  149. data/lib/aws/core/policy.rb +0 -942
  150. data/lib/aws/core/query_client.rb +0 -41
  151. data/lib/aws/core/query_error_parser.rb +0 -24
  152. data/lib/aws/core/query_request_builder.rb +0 -47
  153. data/lib/aws/core/query_response_parser.rb +0 -35
  154. data/lib/aws/core/region.rb +0 -85
  155. data/lib/aws/core/region_collection.rb +0 -80
  156. data/lib/aws/core/resource.rb +0 -413
  157. data/lib/aws/core/resource_cache.rb +0 -40
  158. data/lib/aws/core/response.rb +0 -211
  159. data/lib/aws/core/response_cache.rb +0 -50
  160. data/lib/aws/core/rest_error_parser.rb +0 -24
  161. data/lib/aws/core/rest_json_client.rb +0 -40
  162. data/lib/aws/core/rest_request_builder.rb +0 -154
  163. data/lib/aws/core/rest_response_parser.rb +0 -66
  164. data/lib/aws/core/rest_xml_client.rb +0 -47
  165. data/lib/aws/core/service_interface.rb +0 -83
  166. data/lib/aws/core/signers/base.rb +0 -46
  167. data/lib/aws/core/signers/cloud_front.rb +0 -56
  168. data/lib/aws/core/signers/s3.rb +0 -159
  169. data/lib/aws/core/signers/version_2.rb +0 -72
  170. data/lib/aws/core/signers/version_3.rb +0 -86
  171. data/lib/aws/core/signers/version_3_https.rb +0 -61
  172. data/lib/aws/core/signers/version_4.rb +0 -228
  173. data/lib/aws/core/signers/version_4/chunk_signed_stream.rb +0 -191
  174. data/lib/aws/core/uri_escape.rb +0 -44
  175. data/lib/aws/core/xml/frame.rb +0 -244
  176. data/lib/aws/core/xml/frame_stack.rb +0 -85
  177. data/lib/aws/core/xml/grammar.rb +0 -306
  178. data/lib/aws/core/xml/parser.rb +0 -70
  179. data/lib/aws/core/xml/root_frame.rb +0 -65
  180. data/lib/aws/core/xml/sax_handlers/libxml.rb +0 -47
  181. data/lib/aws/core/xml/sax_handlers/nokogiri.rb +0 -56
  182. data/lib/aws/core/xml/sax_handlers/ox.rb +0 -41
  183. data/lib/aws/core/xml/sax_handlers/rexml.rb +0 -47
  184. data/lib/aws/core/xml/stub.rb +0 -123
  185. data/lib/aws/data_pipeline.rb +0 -72
  186. data/lib/aws/data_pipeline/client.rb +0 -36
  187. data/lib/aws/data_pipeline/config.rb +0 -18
  188. data/lib/aws/data_pipeline/errors.rb +0 -20
  189. data/lib/aws/direct_connect.rb +0 -73
  190. data/lib/aws/direct_connect/client.rb +0 -36
  191. data/lib/aws/direct_connect/config.rb +0 -18
  192. data/lib/aws/direct_connect/errors.rb +0 -22
  193. data/lib/aws/dynamo_db.rb +0 -214
  194. data/lib/aws/dynamo_db/attribute_collection.rb +0 -456
  195. data/lib/aws/dynamo_db/batch_get.rb +0 -213
  196. data/lib/aws/dynamo_db/batch_write.rb +0 -252
  197. data/lib/aws/dynamo_db/binary.rb +0 -35
  198. data/lib/aws/dynamo_db/client.rb +0 -129
  199. data/lib/aws/dynamo_db/client/v20111205.rb +0 -1266
  200. data/lib/aws/dynamo_db/client/v20120810.rb +0 -1409
  201. data/lib/aws/dynamo_db/client_v2.rb +0 -44
  202. data/lib/aws/dynamo_db/config.rb +0 -24
  203. data/lib/aws/dynamo_db/errors.rb +0 -20
  204. data/lib/aws/dynamo_db/expectations.rb +0 -40
  205. data/lib/aws/dynamo_db/item.rb +0 -133
  206. data/lib/aws/dynamo_db/item_collection.rb +0 -856
  207. data/lib/aws/dynamo_db/item_data.rb +0 -31
  208. data/lib/aws/dynamo_db/keys.rb +0 -41
  209. data/lib/aws/dynamo_db/primary_key_element.rb +0 -48
  210. data/lib/aws/dynamo_db/resource.rb +0 -33
  211. data/lib/aws/dynamo_db/table.rb +0 -496
  212. data/lib/aws/dynamo_db/table_collection.rb +0 -165
  213. data/lib/aws/dynamo_db/types.rb +0 -111
  214. data/lib/aws/ec2.rb +0 -428
  215. data/lib/aws/ec2/attachment.rb +0 -135
  216. data/lib/aws/ec2/attachment_collection.rb +0 -54
  217. data/lib/aws/ec2/availability_zone.rb +0 -86
  218. data/lib/aws/ec2/availability_zone_collection.rb +0 -43
  219. data/lib/aws/ec2/block_device_mappings.rb +0 -53
  220. data/lib/aws/ec2/client.rb +0 -101
  221. data/lib/aws/ec2/collection.rb +0 -36
  222. data/lib/aws/ec2/config.rb +0 -30
  223. data/lib/aws/ec2/customer_gateway.rb +0 -90
  224. data/lib/aws/ec2/customer_gateway_collection.rb +0 -73
  225. data/lib/aws/ec2/dhcp_options.rb +0 -106
  226. data/lib/aws/ec2/dhcp_options_collection.rb +0 -87
  227. data/lib/aws/ec2/elastic_ip.rb +0 -209
  228. data/lib/aws/ec2/elastic_ip_collection.rb +0 -93
  229. data/lib/aws/ec2/errors.rb +0 -32
  230. data/lib/aws/ec2/export_task.rb +0 -120
  231. data/lib/aws/ec2/export_task_collection.rb +0 -67
  232. data/lib/aws/ec2/filtered_collection.rb +0 -87
  233. data/lib/aws/ec2/has_permissions.rb +0 -44
  234. data/lib/aws/ec2/image.rb +0 -270
  235. data/lib/aws/ec2/image_collection.rb +0 -220
  236. data/lib/aws/ec2/instance.rb +0 -803
  237. data/lib/aws/ec2/instance_collection.rb +0 -391
  238. data/lib/aws/ec2/internet_gateway.rb +0 -122
  239. data/lib/aws/ec2/internet_gateway/attachment.rb +0 -78
  240. data/lib/aws/ec2/internet_gateway_collection.rb +0 -54
  241. data/lib/aws/ec2/key_pair.rb +0 -82
  242. data/lib/aws/ec2/key_pair_collection.rb +0 -99
  243. data/lib/aws/ec2/network_acl.rb +0 -256
  244. data/lib/aws/ec2/network_acl/association.rb +0 -56
  245. data/lib/aws/ec2/network_acl/entry.rb +0 -147
  246. data/lib/aws/ec2/network_acl_collection.rb +0 -64
  247. data/lib/aws/ec2/network_interface.rb +0 -237
  248. data/lib/aws/ec2/network_interface/attachment.rb +0 -100
  249. data/lib/aws/ec2/network_interface_collection.rb +0 -103
  250. data/lib/aws/ec2/permission_collection.rb +0 -174
  251. data/lib/aws/ec2/region.rb +0 -106
  252. data/lib/aws/ec2/region_collection.rb +0 -51
  253. data/lib/aws/ec2/reserved_instances.rb +0 -56
  254. data/lib/aws/ec2/reserved_instances_collection.rb +0 -40
  255. data/lib/aws/ec2/reserved_instances_offering.rb +0 -60
  256. data/lib/aws/ec2/reserved_instances_offering_collection.rb +0 -45
  257. data/lib/aws/ec2/resource.rb +0 -161
  258. data/lib/aws/ec2/resource_tag_collection.rb +0 -211
  259. data/lib/aws/ec2/route_table.rb +0 -205
  260. data/lib/aws/ec2/route_table/association.rb +0 -119
  261. data/lib/aws/ec2/route_table/route.rb +0 -119
  262. data/lib/aws/ec2/route_table_collection.rb +0 -72
  263. data/lib/aws/ec2/security_group.rb +0 -482
  264. data/lib/aws/ec2/security_group/ip_permission.rb +0 -135
  265. data/lib/aws/ec2/security_group/ip_permission_collection.rb +0 -82
  266. data/lib/aws/ec2/security_group_collection.rb +0 -133
  267. data/lib/aws/ec2/snapshot.rb +0 -143
  268. data/lib/aws/ec2/snapshot_collection.rb +0 -131
  269. data/lib/aws/ec2/subnet.rb +0 -161
  270. data/lib/aws/ec2/subnet_collection.rb +0 -115
  271. data/lib/aws/ec2/tag.rb +0 -81
  272. data/lib/aws/ec2/tag_collection.rb +0 -107
  273. data/lib/aws/ec2/tagged_collection.rb +0 -53
  274. data/lib/aws/ec2/tagged_item.rb +0 -85
  275. data/lib/aws/ec2/volume.rb +0 -174
  276. data/lib/aws/ec2/volume_collection.rb +0 -98
  277. data/lib/aws/ec2/vpc.rb +0 -166
  278. data/lib/aws/ec2/vpc_collection.rb +0 -70
  279. data/lib/aws/ec2/vpn_connection.rb +0 -99
  280. data/lib/aws/ec2/vpn_connection/telemetry.rb +0 -49
  281. data/lib/aws/ec2/vpn_connection_collection.rb +0 -96
  282. data/lib/aws/ec2/vpn_gateway.rb +0 -123
  283. data/lib/aws/ec2/vpn_gateway/attachment.rb +0 -45
  284. data/lib/aws/ec2/vpn_gateway_collection.rb +0 -77
  285. data/lib/aws/elastic_beanstalk.rb +0 -49
  286. data/lib/aws/elastic_beanstalk/client.rb +0 -36
  287. data/lib/aws/elastic_beanstalk/config.rb +0 -18
  288. data/lib/aws/elastic_beanstalk/errors.rb +0 -22
  289. data/lib/aws/elastic_transcoder.rb +0 -29
  290. data/lib/aws/elastic_transcoder/client.rb +0 -48
  291. data/lib/aws/elastic_transcoder/config.rb +0 -18
  292. data/lib/aws/elastic_transcoder/errors.rb +0 -23
  293. data/lib/aws/elasticache.rb +0 -49
  294. data/lib/aws/elasticache/client.rb +0 -35
  295. data/lib/aws/elasticache/config.rb +0 -18
  296. data/lib/aws/elasticache/errors.rb +0 -22
  297. data/lib/aws/elb.rb +0 -66
  298. data/lib/aws/elb/availability_zone_collection.rb +0 -138
  299. data/lib/aws/elb/backend_server_policy_collection.rb +0 -139
  300. data/lib/aws/elb/client.rb +0 -35
  301. data/lib/aws/elb/config.rb +0 -18
  302. data/lib/aws/elb/errors.rb +0 -26
  303. data/lib/aws/elb/instance_collection.rb +0 -168
  304. data/lib/aws/elb/listener.rb +0 -190
  305. data/lib/aws/elb/listener_collection.rb +0 -113
  306. data/lib/aws/elb/listener_opts.rb +0 -45
  307. data/lib/aws/elb/load_balancer.rb +0 -280
  308. data/lib/aws/elb/load_balancer_collection.rb +0 -146
  309. data/lib/aws/elb/load_balancer_policy.rb +0 -93
  310. data/lib/aws/elb/load_balancer_policy_collection.rb +0 -208
  311. data/lib/aws/emr.rb +0 -87
  312. data/lib/aws/emr/client.rb +0 -35
  313. data/lib/aws/emr/config.rb +0 -18
  314. data/lib/aws/emr/errors.rb +0 -22
  315. data/lib/aws/emr/instance_group.rb +0 -138
  316. data/lib/aws/emr/instance_group_collection.rb +0 -82
  317. data/lib/aws/emr/job_flow.rb +0 -307
  318. data/lib/aws/emr/job_flow_collection.rb +0 -185
  319. data/lib/aws/errors.rb +0 -162
  320. data/lib/aws/glacier.rb +0 -79
  321. data/lib/aws/glacier/archive.rb +0 -56
  322. data/lib/aws/glacier/archive_collection.rb +0 -146
  323. data/lib/aws/glacier/client.rb +0 -49
  324. data/lib/aws/glacier/config.rb +0 -19
  325. data/lib/aws/glacier/errors.rb +0 -22
  326. data/lib/aws/glacier/resource.rb +0 -30
  327. data/lib/aws/glacier/vault.rb +0 -145
  328. data/lib/aws/glacier/vault_collection.rb +0 -75
  329. data/lib/aws/glacier/vault_notification_configuration.rb +0 -29
  330. data/lib/aws/iam.rb +0 -408
  331. data/lib/aws/iam/access_key.rb +0 -185
  332. data/lib/aws/iam/access_key_collection.rb +0 -128
  333. data/lib/aws/iam/account_alias_collection.rb +0 -79
  334. data/lib/aws/iam/client.rb +0 -49
  335. data/lib/aws/iam/collection.rb +0 -83
  336. data/lib/aws/iam/config.rb +0 -18
  337. data/lib/aws/iam/errors.rb +0 -22
  338. data/lib/aws/iam/group.rb +0 -111
  339. data/lib/aws/iam/group_collection.rb +0 -132
  340. data/lib/aws/iam/group_policy_collection.rb +0 -47
  341. data/lib/aws/iam/group_user_collection.rb +0 -84
  342. data/lib/aws/iam/login_profile.rb +0 -99
  343. data/lib/aws/iam/mfa_device.rb +0 -52
  344. data/lib/aws/iam/mfa_device_collection.rb +0 -127
  345. data/lib/aws/iam/policy.rb +0 -46
  346. data/lib/aws/iam/policy_collection.rb +0 -188
  347. data/lib/aws/iam/resource.rb +0 -62
  348. data/lib/aws/iam/server_certificate.rb +0 -141
  349. data/lib/aws/iam/server_certificate_collection.rb +0 -138
  350. data/lib/aws/iam/signing_certificate.rb +0 -174
  351. data/lib/aws/iam/signing_certificate_collection.rb +0 -131
  352. data/lib/aws/iam/user.rb +0 -200
  353. data/lib/aws/iam/user_collection.rb +0 -133
  354. data/lib/aws/iam/user_group_collection.rb +0 -98
  355. data/lib/aws/iam/user_policy.rb +0 -90
  356. data/lib/aws/iam/user_policy_collection.rb +0 -45
  357. data/lib/aws/iam/virtual_mfa_device.rb +0 -139
  358. data/lib/aws/iam/virtual_mfa_device_collection.rb +0 -73
  359. data/lib/aws/import_export.rb +0 -73
  360. data/lib/aws/import_export/client.rb +0 -35
  361. data/lib/aws/import_export/config.rb +0 -19
  362. data/lib/aws/import_export/errors.rb +0 -22
  363. data/lib/aws/kinesis.rb +0 -53
  364. data/lib/aws/kinesis/client.rb +0 -35
  365. data/lib/aws/kinesis/config.rb +0 -18
  366. data/lib/aws/kinesis/errors.rb +0 -20
  367. data/lib/aws/ops_works.rb +0 -29
  368. data/lib/aws/ops_works/client.rb +0 -35
  369. data/lib/aws/ops_works/config.rb +0 -18
  370. data/lib/aws/ops_works/errors.rb +0 -20
  371. data/lib/aws/rails.rb +0 -195
  372. data/lib/aws/rds.rb +0 -70
  373. data/lib/aws/rds/client.rb +0 -42
  374. data/lib/aws/rds/config.rb +0 -18
  375. data/lib/aws/rds/db_instance.rb +0 -216
  376. data/lib/aws/rds/db_instance_collection.rb +0 -75
  377. data/lib/aws/rds/db_snapshot.rb +0 -163
  378. data/lib/aws/rds/db_snapshot_collection.rb +0 -89
  379. data/lib/aws/rds/errors.rb +0 -22
  380. data/lib/aws/record.rb +0 -139
  381. data/lib/aws/record/abstract_base.rb +0 -690
  382. data/lib/aws/record/attributes.rb +0 -388
  383. data/lib/aws/record/conversion.rb +0 -38
  384. data/lib/aws/record/dirty_tracking.rb +0 -287
  385. data/lib/aws/record/errors.rb +0 -143
  386. data/lib/aws/record/exceptions.rb +0 -51
  387. data/lib/aws/record/hash_model.rb +0 -204
  388. data/lib/aws/record/hash_model/attributes.rb +0 -195
  389. data/lib/aws/record/hash_model/finder_methods.rb +0 -172
  390. data/lib/aws/record/hash_model/scope.rb +0 -108
  391. data/lib/aws/record/model.rb +0 -453
  392. data/lib/aws/record/model/attributes.rb +0 -377
  393. data/lib/aws/record/model/finder_methods.rb +0 -232
  394. data/lib/aws/record/model/scope.rb +0 -212
  395. data/lib/aws/record/naming.rb +0 -31
  396. data/lib/aws/record/scope.rb +0 -203
  397. data/lib/aws/record/validations.rb +0 -694
  398. data/lib/aws/record/validator.rb +0 -246
  399. data/lib/aws/record/validators/acceptance.rb +0 -49
  400. data/lib/aws/record/validators/block.rb +0 -36
  401. data/lib/aws/record/validators/confirmation.rb +0 -41
  402. data/lib/aws/record/validators/count.rb +0 -106
  403. data/lib/aws/record/validators/exclusion.rb +0 -41
  404. data/lib/aws/record/validators/format.rb +0 -55
  405. data/lib/aws/record/validators/inclusion.rb +0 -54
  406. data/lib/aws/record/validators/length.rb +0 -105
  407. data/lib/aws/record/validators/method.rb +0 -31
  408. data/lib/aws/record/validators/numericality.rb +0 -136
  409. data/lib/aws/record/validators/presence.rb +0 -43
  410. data/lib/aws/redshift.rb +0 -51
  411. data/lib/aws/redshift/client.rb +0 -35
  412. data/lib/aws/redshift/config.rb +0 -18
  413. data/lib/aws/redshift/errors.rb +0 -22
  414. data/lib/aws/route_53.rb +0 -86
  415. data/lib/aws/route_53/change_batch.rb +0 -161
  416. data/lib/aws/route_53/change_info.rb +0 -72
  417. data/lib/aws/route_53/client.rb +0 -35
  418. data/lib/aws/route_53/config.rb +0 -18
  419. data/lib/aws/route_53/errors.rb +0 -22
  420. data/lib/aws/route_53/hosted_zone.rb +0 -111
  421. data/lib/aws/route_53/hosted_zone_collection.rb +0 -100
  422. data/lib/aws/route_53/resource_record_set.rb +0 -251
  423. data/lib/aws/route_53/resource_record_set_collection.rb +0 -110
  424. data/lib/aws/s3.rb +0 -156
  425. data/lib/aws/s3/access_control_list.rb +0 -265
  426. data/lib/aws/s3/acl_object.rb +0 -264
  427. data/lib/aws/s3/acl_options.rb +0 -204
  428. data/lib/aws/s3/bucket.rb +0 -742
  429. data/lib/aws/s3/bucket_collection.rb +0 -162
  430. data/lib/aws/s3/bucket_lifecycle_configuration.rb +0 -457
  431. data/lib/aws/s3/bucket_tag_collection.rb +0 -111
  432. data/lib/aws/s3/bucket_version_collection.rb +0 -79
  433. data/lib/aws/s3/cipher_io.rb +0 -120
  434. data/lib/aws/s3/client.rb +0 -1919
  435. data/lib/aws/s3/client/xml.rb +0 -259
  436. data/lib/aws/s3/config.rb +0 -48
  437. data/lib/aws/s3/cors_rule.rb +0 -108
  438. data/lib/aws/s3/cors_rule_collection.rb +0 -194
  439. data/lib/aws/s3/data_options.rb +0 -191
  440. data/lib/aws/s3/encryption_utils.rb +0 -146
  441. data/lib/aws/s3/errors.rb +0 -94
  442. data/lib/aws/s3/multipart_upload.rb +0 -351
  443. data/lib/aws/s3/multipart_upload_collection.rb +0 -76
  444. data/lib/aws/s3/object_collection.rb +0 -353
  445. data/lib/aws/s3/object_metadata.rb +0 -103
  446. data/lib/aws/s3/object_upload_collection.rb +0 -77
  447. data/lib/aws/s3/object_version.rb +0 -154
  448. data/lib/aws/s3/object_version_collection.rb +0 -89
  449. data/lib/aws/s3/paginated_collection.rb +0 -75
  450. data/lib/aws/s3/policy.rb +0 -74
  451. data/lib/aws/s3/prefix_and_delimiter_collection.rb +0 -47
  452. data/lib/aws/s3/prefixed_collection.rb +0 -85
  453. data/lib/aws/s3/presign_v4.rb +0 -127
  454. data/lib/aws/s3/presigned_post.rb +0 -554
  455. data/lib/aws/s3/request.rb +0 -62
  456. data/lib/aws/s3/s3_object.rb +0 -1781
  457. data/lib/aws/s3/tree.rb +0 -116
  458. data/lib/aws/s3/tree/branch_node.rb +0 -68
  459. data/lib/aws/s3/tree/child_collection.rb +0 -104
  460. data/lib/aws/s3/tree/leaf_node.rb +0 -94
  461. data/lib/aws/s3/tree/node.rb +0 -22
  462. data/lib/aws/s3/tree/parent.rb +0 -87
  463. data/lib/aws/s3/uploaded_part.rb +0 -82
  464. data/lib/aws/s3/uploaded_part_collection.rb +0 -84
  465. data/lib/aws/s3/website_configuration.rb +0 -102
  466. data/lib/aws/simple_db.rb +0 -218
  467. data/lib/aws/simple_db/attribute.rb +0 -156
  468. data/lib/aws/simple_db/attribute_collection.rb +0 -240
  469. data/lib/aws/simple_db/client.rb +0 -67
  470. data/lib/aws/simple_db/config.rb +0 -20
  471. data/lib/aws/simple_db/consistent_read_option.rb +0 -42
  472. data/lib/aws/simple_db/delete_attributes.rb +0 -62
  473. data/lib/aws/simple_db/domain.rb +0 -123
  474. data/lib/aws/simple_db/domain_collection.rb +0 -86
  475. data/lib/aws/simple_db/domain_metadata.rb +0 -110
  476. data/lib/aws/simple_db/errors.rb +0 -55
  477. data/lib/aws/simple_db/expect_condition_option.rb +0 -45
  478. data/lib/aws/simple_db/item.rb +0 -93
  479. data/lib/aws/simple_db/item_collection.rb +0 -654
  480. data/lib/aws/simple_db/item_data.rb +0 -73
  481. data/lib/aws/simple_db/put_attributes.rb +0 -60
  482. data/lib/aws/simple_email_service.rb +0 -430
  483. data/lib/aws/simple_email_service/client.rb +0 -37
  484. data/lib/aws/simple_email_service/config.rb +0 -18
  485. data/lib/aws/simple_email_service/email_address_collection.rb +0 -69
  486. data/lib/aws/simple_email_service/errors.rb +0 -22
  487. data/lib/aws/simple_email_service/identity.rb +0 -209
  488. data/lib/aws/simple_email_service/identity_collection.rb +0 -81
  489. data/lib/aws/simple_email_service/quotas.rb +0 -66
  490. data/lib/aws/simple_workflow.rb +0 -227
  491. data/lib/aws/simple_workflow/activity_task.rb +0 -178
  492. data/lib/aws/simple_workflow/activity_task_collection.rb +0 -123
  493. data/lib/aws/simple_workflow/activity_type.rb +0 -131
  494. data/lib/aws/simple_workflow/activity_type_collection.rb +0 -93
  495. data/lib/aws/simple_workflow/client.rb +0 -69
  496. data/lib/aws/simple_workflow/config.rb +0 -18
  497. data/lib/aws/simple_workflow/count.rb +0 -49
  498. data/lib/aws/simple_workflow/decision_task.rb +0 -603
  499. data/lib/aws/simple_workflow/decision_task_collection.rb +0 -225
  500. data/lib/aws/simple_workflow/domain.rb +0 -122
  501. data/lib/aws/simple_workflow/domain_collection.rb +0 -169
  502. data/lib/aws/simple_workflow/errors.rb +0 -20
  503. data/lib/aws/simple_workflow/history_event.rb +0 -276
  504. data/lib/aws/simple_workflow/history_event_collection.rb +0 -76
  505. data/lib/aws/simple_workflow/option_formatters.rb +0 -82
  506. data/lib/aws/simple_workflow/resource.rb +0 -94
  507. data/lib/aws/simple_workflow/type.rb +0 -89
  508. data/lib/aws/simple_workflow/type_collection.rb +0 -140
  509. data/lib/aws/simple_workflow/workflow_execution.rb +0 -384
  510. data/lib/aws/simple_workflow/workflow_execution_collection.rb +0 -617
  511. data/lib/aws/simple_workflow/workflow_type.rb +0 -179
  512. data/lib/aws/simple_workflow/workflow_type_collection.rb +0 -91
  513. data/lib/aws/sns.rb +0 -76
  514. data/lib/aws/sns/client.rb +0 -35
  515. data/lib/aws/sns/config.rb +0 -18
  516. data/lib/aws/sns/errors.rb +0 -22
  517. data/lib/aws/sns/has_delivery_policy.rb +0 -68
  518. data/lib/aws/sns/message.rb +0 -194
  519. data/lib/aws/sns/originators/from_auto_scaling.rb +0 -68
  520. data/lib/aws/sns/policy.rb +0 -47
  521. data/lib/aws/sns/subscription.rb +0 -165
  522. data/lib/aws/sns/subscription_collection.rb +0 -78
  523. data/lib/aws/sns/topic.rb +0 -403
  524. data/lib/aws/sns/topic_collection.rb +0 -62
  525. data/lib/aws/sns/topic_subscription_collection.rb +0 -54
  526. data/lib/aws/sqs.rb +0 -80
  527. data/lib/aws/sqs/client.rb +0 -53
  528. data/lib/aws/sqs/config.rb +0 -20
  529. data/lib/aws/sqs/errors.rb +0 -125
  530. data/lib/aws/sqs/policy.rb +0 -48
  531. data/lib/aws/sqs/queue.rb +0 -843
  532. data/lib/aws/sqs/queue_collection.rb +0 -182
  533. data/lib/aws/sqs/received_message.rb +0 -182
  534. data/lib/aws/sqs/received_sns_message.rb +0 -116
  535. data/lib/aws/storage_gateway.rb +0 -72
  536. data/lib/aws/storage_gateway/client.rb +0 -42
  537. data/lib/aws/storage_gateway/config.rb +0 -18
  538. data/lib/aws/storage_gateway/errors.rb +0 -22
  539. data/lib/aws/sts.rb +0 -164
  540. data/lib/aws/sts/client.rb +0 -46
  541. data/lib/aws/sts/config.rb +0 -18
  542. data/lib/aws/sts/errors.rb +0 -22
  543. data/lib/aws/sts/federated_session.rb +0 -56
  544. data/lib/aws/sts/policy.rb +0 -30
  545. data/lib/aws/sts/session.rb +0 -48
  546. data/lib/aws/support.rb +0 -29
  547. data/lib/aws/support/client.rb +0 -35
  548. data/lib/aws/support/config.rb +0 -18
  549. data/lib/aws/support/errors.rb +0 -20
  550. data/lib/aws/version.rb +0 -17
  551. data/rails/init.rb +0 -15
@@ -1,44 +0,0 @@
1
- # Copyright 2011-2013 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
- class DynamoDB
16
-
17
- # ClientV2 is now deprecated. To use the lastest Amazon DynamoDB
18
- # api version, pass the :api_version option to AWS::DynamoDB::Client.new
19
- #
20
- # AWS::DynamoDB::Client.new(:api_version => '2012-08-10')
21
- # #=> #<AWS::DynamoDB::Client::V20120810>
22
- #
23
- # # defaults to the oldest api version
24
- # AWS::DynamoDB::Client.new
25
- # #=> #<AWS::DynamoDB::Client::V20111205>
26
- #
27
- # @deprecated
28
- class ClientV2
29
-
30
- DEPRECATION_MSG = "DEPRECATION WARNING: AWS::DynamoDB::ClientV2 is deprecated, use AWS::DynamoDB::Client.new(:api_version => '2012-08-10')"
31
-
32
- class << self
33
-
34
- extend Core::Deprecations
35
-
36
- def new(options = {})
37
- Client.new(options.merge(:api_version => '2012-08-10'))
38
- end
39
- deprecated :new, :message => DEPRECATION_MSG
40
-
41
- end
42
- end
43
- end
44
- end
@@ -1,24 +0,0 @@
1
- # Copyright 2011-2013 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
- AWS::Core::Configuration.module_eval do
15
-
16
- add_service 'DynamoDB', 'dynamo_db', 'dynamodb'
17
-
18
- add_option :dynamo_db_retry_throughput_errors, true, :boolean => true
19
-
20
- add_option :dynamo_db_big_decimals, true, :boolean => true
21
-
22
- add_option :dynamo_db_crc32, true, :boolean => true
23
-
24
- end
@@ -1,20 +0,0 @@
1
- # Copyright 2011-2013 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
- class DynamoDB
16
- module Errors
17
- extend Core::LazyErrorClasses
18
- end
19
- end
20
- end
@@ -1,40 +0,0 @@
1
- # Copyright 2011-2013 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
- class DynamoDB
16
-
17
- module Expectations
18
-
19
- private
20
- def expect_conditions(options)
21
- expected = {}
22
-
23
- options[:if].each do |name, value|
24
- context = "expected value for attribute #{name}"
25
- expected[name.to_s] = {
26
- :value => format_attribute_value(value, context)
27
- }
28
- end if options[:if]
29
-
30
- [options[:unless_exists]].flatten.each do |name|
31
- expected[name.to_s] = { :exists => false }
32
- end if options[:unless_exists]
33
-
34
- expected
35
- end
36
-
37
- end
38
-
39
- end
40
- end
@@ -1,133 +0,0 @@
1
- # Copyright 2011-2013 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
- class DynamoDB
16
-
17
- # Represents a DynamoDB item. An item is identified by simple or
18
- # complex primary key (according to the table schema) and consists
19
- # of a collection of attributes. Attributes are name/value pairs
20
- # where the value may be a string, number, string set, or number
21
- # set.
22
- #
23
- # Getting an item by hash key value:
24
- #
25
- # item = table.items['hash-key-value']
26
- #
27
- # Getting an item from a table with both hash and range keys:
28
- #
29
- # item = table.items['hash-key','range-key']
30
- #
31
- class Item < Core::Resource
32
-
33
- extend Types
34
- include Keys
35
- include Expectations
36
-
37
- # @return [Table] The table in which the item is stored.
38
- attr_reader :table
39
-
40
- # @return [String, Numeric] The hash key value of the item.
41
- attr_reader :hash_value
42
-
43
- # @return [String, Numeric, nil] The range key value of the
44
- # item, or `nil` if the table has a simple primary key.
45
- attr_reader :range_value
46
-
47
- # @api private
48
- def initialize(table, *args)
49
- opts = args.pop if args.last.kind_of?(Hash)
50
- (@hash_value, @range_value) = args
51
- @table = table
52
- super(table, opts)
53
- end
54
-
55
- # Deletes the item.
56
- #
57
- # @param [Hash] options Options for deleting the item.
58
- #
59
- # @option options [Hash] :if Designates a conditional delete.
60
- # The operation will fail unless the item exists and has the
61
- # attributes in the value for this option. For example:
62
- #
63
- # # throws DynamoDB::Errors::ConditionalCheckFailedException
64
- # # unless the item has "color" set to "red"
65
- # item.delete(:if => { :color => "red" })
66
- #
67
- # @option options [String, Symbol, Array] :unless_exists A name
68
- # or collection of attribute names; if the item has a value
69
- # for any of these attributes, this method will raise
70
- # `DynamoDB::Errors::ConditionalCheckFailedException`. For
71
- # example:
72
- #
73
- # item.delete(:unless_exists => "version")
74
- def delete(options = {})
75
- client_opts = item_key_options(self)
76
-
77
- expected = expect_conditions(options)
78
- client_opts[:expected] = expected unless expected.empty?
79
-
80
- client_opts[:return_values] = options[:return].to_s.upcase if
81
- options[:return]
82
-
83
- resp = client.delete_item(client_opts)
84
-
85
- values_from_response_hash(resp.data["Attributes"]) if
86
- options[:return] and resp.data["Attributes"]
87
- end
88
-
89
- # @return [Boolean] True if the item exists.
90
- def exists?(options = {})
91
- client_opts = item_key_options(self, options)
92
- client_opts[:attributes_to_get] = [table.hash_key.name]
93
- resp = client.get_item(client_opts)
94
- resp.data.key?("Item")
95
- end
96
-
97
- # @return [AttributeCollection] An object representing the
98
- # attributes of the item.
99
- def attributes
100
- AttributeCollection.new(self)
101
- end
102
-
103
- # @api private
104
- def self.new_from(op, response_object, table, *args)
105
-
106
- config = args.last.is_a?(Hash) ? args.last : AWS.config
107
-
108
- table.assert_schema!
109
- hash_value =
110
- value_from_response(response_object[table.hash_key.name])
111
- range_value =
112
- value_from_response(response_object[table.range_key.name]) if
113
- table.range_key
114
-
115
- raise "missing hash key value in put_item response" unless hash_value
116
- raise "missing range key value in put_item response" unless
117
- range_value || !table.range_key
118
-
119
- super(op, response_object,
120
- table, hash_value, range_value, *args)
121
- end
122
-
123
- protected
124
- def resource_identifiers
125
- [[:table_name, table.name],
126
- [:hash_value, hash_value],
127
- [:range_value, range_value]]
128
- end
129
-
130
- end
131
-
132
- end
133
- end
@@ -1,856 +0,0 @@
1
- # Copyright 2011-2013 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
- class DynamoDB
16
-
17
- # Represents a collection of DynamoDB items.
18
- #
19
- # You can use an item collection to:
20
- #
21
- # * Create an {Item}
22
- # * Get an {Item}
23
- # * Enumerate {Item} or {ItemData} objects
24
- #
25
- # ## Creating an Item
26
- #
27
- # To create an item, just call {#create} with a hash of attributes.
28
- #
29
- # table = dynamo_db.tables['my-table']
30
- # table.hash_key = [:id, :string]
31
- #
32
- # table.items.create('id' => 'abc', 'count' => 5, 'colors' => %w(red blue))
33
- #
34
- # Attribute names can be symbols/strings and values can be strings or
35
- # numbers or arrays/sets of strings/numbers. The attributes must contain
36
- # the hash key name/value for the item and the value must be of the
37
- # correct type (e.g. string or number).
38
- #
39
- # ## Getting an Item
40
- #
41
- # To get an item, you provide the hash key
42
- #
43
- # # gets a reference to the item, no request is made
44
- # item = table.items['hash-key-value']
45
- #
46
- # You call methods against the item returned to get, add, update or delete
47
- # attributes. See {Item} for more information.
48
- #
49
- # ## Enumerating Items
50
- #
51
- # You can enumerate items 2 ways:
52
- #
53
- # * Enuemrate {Item} objects
54
- # * Enumerate {ItemData} objects
55
- #
56
- # {Item} objects do not have any attribute data populated. Think of
57
- # them as just references to the item in Amazon DynamoDB. They only
58
- # konw the objects hash key (and optional range key).
59
- #
60
- # {ItemData} objects are wrappers around the actual item attributes.
61
- #
62
- # To enumerate {Item} objects just call each on the item collection.
63
- #
64
- # table.items.each do |item|
65
- # puts item.hash_value
66
- # end
67
- #
68
- # To enumerate {ItemData} objects you need to specify what attributes
69
- # you are interested in. This will cause #each to yield {ItemData}
70
- # objects. Call {ItemData#attributes} to get the hash of attribute
71
- # names/values.
72
- #
73
- # table.items.select('id', 'category').each do |item_data|
74
- # item_data.attributes #=> { 'id' => 'abc', 'category' => 'foo' }
75
- # end
76
- #
77
- # If you want item data objects with all attributes just call select
78
- # without a list of attributes (#select still accepts options).
79
- #
80
- # # request a maximum of 10 items from Amazon DynamoDB
81
- # table.items.select(:limit => 10).each do |item_data|
82
- # item_data.attributes #=> { 'id' => 'abc', 'category' => 'foo', ... }
83
- # end
84
- #
85
- # Please note that enumerating objects is done via the scan operation.
86
- # Refer to the Amazon DynamoDB documentation for more information
87
- # about scanning.
88
- #
89
- class ItemCollection
90
-
91
- include Core::Collection::WithLimitAndNextToken
92
- include Types
93
- include Expectations
94
-
95
- # @api private
96
- def initialize(table, opts = {})
97
- @table = table
98
- @scan_filters = opts[:scan_filters] || {}
99
- super
100
- end
101
-
102
- # @return [Table] The table to which the items in the collection
103
- # belong.
104
- attr_reader :table
105
-
106
- # @api private
107
- attr_reader :scan_filters
108
-
109
- # Creates a new item, or replaces an old item with a new item
110
- # (including all the attributes). If an item already exists in
111
- # the specified table with the same primary key, the new item
112
- # completely replaces the existing item. You can perform a
113
- # conditional put (insert a new item if one with the specified
114
- # primary key doesn't exist), or replace an existing item if it
115
- # has certain attribute values.
116
- #
117
- # items.put(:id => "abc123", :colors => ["red", "white"])
118
- #
119
- # @param [Hash] attributes The attributes to store with the
120
- # item. These must include the primary key attributes for the
121
- # table (see {Table#hash_key} and {Table#range_key}.
122
- # Attribute names may be symbols or UTF-8 strings, and
123
- # attribute values may be any of these types:
124
- #
125
- # * String
126
- # * Array<String> or Set<String>
127
- # * Numeric
128
- # * Array<Numeric> or Set<Numeric>
129
- #
130
- # Empty sets, arrays, and strings are invalid.
131
- #
132
- # @param [Hash] options (<code>{}</code>) Additional options for
133
- # storing the item.
134
- #
135
- # @option options [Hash] :if Designates a conditional put. The
136
- # operation will fail unless the item exists and has the
137
- # attributes in the value for this option. For example:
138
- #
139
- # # throws DynamoDB::Errors::ConditionalCheckFailedException
140
- # # unless the item has "color" set to "red"
141
- # items.put(
142
- # { :foo => "Bar" },
143
- # :if => { :color => "red" }
144
- # )
145
- #
146
- # @option options [String, Symbol, Array] :unless_exists A name
147
- # or collection of attribute names; if the item already exists
148
- # and has a value for any of these attributes, this method
149
- # will raise
150
- # `DynamoDB::Errors::ConditionalCheckFailedException`. For example:
151
- #
152
- # items.put({ :id => "abc123" }, :unless_exists => "id")
153
- #
154
- # @option options [Symbol] :return If set to `:all_old`, this
155
- # method will return a hash containing the previous values of
156
- # all attributes for the item that was overwritten. If this
157
- # option is set to `:none`, or if it is set to `:all_old` and
158
- # no item currently exists with the same primary key values,
159
- # the method will return `nil`.
160
- #
161
- # @return [Item] An object representing the item that was
162
- # stored. Note that the SDK retains only the item's primary
163
- # key values in memory; if you access the attributes of the
164
- # item using the returned object, the SDK will contact the
165
- # service to retrieve those attributes. The `:return` option
166
- # may be used to change the return value of this method.
167
- def create attributes, options = {}
168
- table.assert_schema!
169
-
170
- attributes = attributes.inject({}) do |hash, (key, value)|
171
- context = "value for attribute #{key}"
172
- hash.update(key.to_s => format_attribute_value(value, context))
173
- end
174
-
175
- client_opts = {
176
- :table_name => table.name,
177
- :item => attributes
178
- }
179
-
180
- expected = expect_conditions(options)
181
- client_opts[:expected] = expected unless expected.empty?
182
-
183
- client_opts[:return_values] = options[:return].to_s.upcase if
184
- options[:return]
185
-
186
- resp = client.put_item(client_opts)
187
-
188
- item = Item.new_from(:put_item, attributes, table)
189
-
190
- if options[:return]
191
- values_from_response_hash(resp.data["Attributes"])
192
- else
193
- item
194
- end
195
- end
196
- alias_method :put, :create
197
-
198
- # Returns an object representing an item in the table,
199
- # identified by its hash key value. This method will raise an
200
- # exception unless the table has a schema loaded or configured,
201
- # or if the table has a composite primary key.
202
- #
203
- # table.hash_key = [:id, :string]
204
- # item = table.items["abc123"]
205
- #
206
- # @param [String, Numeric] hash_value The hash key value for the
207
- # item. The type of this parameter must match the type in the
208
- # table's schema, but currently the SDK makes no attempt to
209
- # validate the key.
210
- #
211
- # @return [Item]
212
- def [] hash_value
213
- table.assert_schema!
214
- raise(ArgumentError,
215
- "table has a range key; use #at instead of #[]") unless
216
- table.simple_key?
217
- Item.new(table, hash_value)
218
- end
219
-
220
- # Returns an object representing an item in the table,
221
- # identified by its hash key value and conditionally its range
222
- # key value. This method will raise an exception unless the
223
- # table has a schema loaded or configured. The type of each
224
- # parameter must match the type in the table's schema, but
225
- # currently the SDK makes no attempt to validate the key
226
- # elements.
227
- #
228
- # table.hash_key = [:id, :string]
229
- # table.range_key = [:range, :number]
230
- # item = table.items.at("abc123", 12)
231
- #
232
- # @param [String, Numeric] hash_value The hash key value for the
233
- # item.
234
- #
235
- # @param [String, Numeric] range_value The range key value for
236
- # the item. This parameter is required when the table has a
237
- # composite primary key, and it may not be specified when the
238
- # table has a simple primary key.
239
- #
240
- # @return [Item]
241
- def at hash_value, range_value = nil
242
- table.assert_schema!
243
- if table.composite_key? and !range_value
244
- raise ArgumentError, "a range key value is required for this table"
245
- end
246
- Item.new(table, hash_value, range_value)
247
- end
248
- alias_method :[], :at
249
-
250
- # Provides a convenient syntax for expressing scan filters.
251
- #
252
- # table.items.where(:path).begins_with("users/")
253
- #
254
- class FilterBuilder
255
-
256
- include Types
257
-
258
- attr_reader :items
259
-
260
- attr_reader :attribute
261
-
262
- # @api private
263
- def initialize(items, attribute)
264
- @items = items
265
- @attribute = attribute
266
- end
267
-
268
- # Filters the collection to include only those items where the
269
- # value of this attribute is equal to the argument.
270
- #
271
- # @param [String, Numeric] value The value to compare against.
272
- #
273
- # @return [ItemCollection] A new item collection filtered by
274
- # this condition.
275
- def equals value
276
- @items.with_filter(attribute, "EQ", value)
277
- end
278
-
279
- # Filters the collection to include only those items where the
280
- # value of this attribute is not equal to the argument.
281
- #
282
- # @param [String, Numeric] value The value to compare against.
283
- #
284
- # @return [ItemCollection] A new item collection filtered by
285
- # this condition.
286
- def not_equal_to value
287
- @items.with_filter(attribute, "NE", value)
288
- end
289
-
290
- # Filters the collection to include only those items where the
291
- # value of this attribute is less than the argument.
292
- #
293
- # @param [String, Numeric] value The value to compare against.
294
- #
295
- # @return [ItemCollection] A new item collection filtered by
296
- # this condition.
297
- def less_than value
298
- @items.with_filter(attribute, "LT", value)
299
- end
300
-
301
- # Filters the collection to include only those items where the
302
- # value of this attribute is greater than the argument.
303
- #
304
- # @param [String, Numeric] value The value to compare against.
305
- #
306
- # @return [ItemCollection] A new item collection filtered by
307
- # this condition.
308
- def greater_than value
309
- @items.with_filter(attribute, "GT", value)
310
- end
311
-
312
- # Filters the collection to include only those items where the
313
- # value of this attribute is less than or equal to the
314
- # argument.
315
- #
316
- # @param [String, Numeric] value The value to compare against.
317
- #
318
- # @return [ItemCollection] A new item collection filtered by
319
- # this condition.
320
- def lte value
321
- @items.with_filter(attribute, "LE", value)
322
- end
323
-
324
- # Filters the collection to include only those items where the
325
- # value of this attribute is greater than or equal to the
326
- # argument.
327
- #
328
- # @param [String, Numeric] value The value to compare against.
329
- #
330
- # @return [ItemCollection] A new item collection filtered by
331
- # this condition.
332
- def gte value
333
- @items.with_filter(attribute, "GE", value)
334
- end
335
-
336
- # Filters the collection to include only those items where
337
- # this attribute does not exist.
338
- #
339
- # @return [ItemCollection] A new item collection filtered by
340
- # this condition.
341
- def is_null
342
- @items.with_filter(attribute, "NULL")
343
- end
344
-
345
- # Filters the collection to include only those items where
346
- # this attribute exists.
347
- #
348
- # @return [ItemCollection] A new item collection filtered by
349
- # this condition.
350
- def not_null
351
- @items.with_filter(attribute, "NOT_NULL")
352
- end
353
-
354
- # Filters the collection to include only those items where
355
- # this attribute contains the argument. If the attribute
356
- # value is a set, this filter matches items where the argument
357
- # is one of the values in the set. If the attribute value is
358
- # a string, this filter matches items where the argument
359
- # (which must be a string) is a substring of the attribute
360
- # value.
361
- #
362
- # @param [String, Numeric] value The value to compare against.
363
- #
364
- # @return [ItemCollection] A new item collection filtered by
365
- # this condition.
366
- def contains value
367
- @items.with_filter(attribute, "CONTAINS", value)
368
- end
369
-
370
- # Filters the collection to include only those items where
371
- # this attribute does not contain the argument. If the
372
- # attribute value is a set, this filter matches items where
373
- # the argument is not present in the set. If the attribute
374
- # value is a string, this filter matches items where the
375
- # argument (which must be a string) is not a substring of the
376
- # attribute value.
377
- #
378
- # @param [String, Numeric] value The value to compare against.
379
- #
380
- # @return [ItemCollection] A new item collection filtered by
381
- # this condition.
382
- def does_not_contain value
383
- @items.with_filter(attribute, "NOT_CONTAINS", value)
384
- end
385
-
386
- # Filters the collection to include only those items where
387
- # this attribute begins with the argument.
388
- #
389
- # @param [String] value The value to compare against.
390
- #
391
- # @return [ItemCollection] A new item collection filtered by
392
- # this condition.
393
- def begins_with value
394
- @items.with_filter(attribute, "BEGINS_WITH", value)
395
- end
396
-
397
- # Filters the collection to include only those items where
398
- # this attribute equals one of the arguments.
399
- #
400
- # @param [Array<String, Numeric>] values The values to compare
401
- # against.
402
- #
403
- # @return [ItemCollection] A new item collection filtered by
404
- # this condition.
405
- def in *values
406
- @items.with_filter(attribute, "IN", *values)
407
- end
408
-
409
- # Filters the collection to include only those items where
410
- # this attribute is between the two arguments.
411
- #
412
- # @param [String, Numeric] min The minimum value.
413
- #
414
- # @param [String, Numeric] max The maximum value.
415
- #
416
- # @return [ItemCollection] A new item collection filtered by
417
- # this condition.
418
- def between min, max
419
- @items.with_filter(attribute, "BETWEEN", min, max)
420
- end
421
-
422
- end
423
-
424
- # @overload where(attributes)
425
- #
426
- # table.items.where(:name => "Fred")
427
- #
428
- # @param [Hash] attributes The returned collection will be
429
- # filtered such that each item contains the attributes and
430
- # values in this map.
431
- #
432
- # @return [ItemCollection] A collection where all the items
433
- # have the provided attributes and values.
434
- #
435
- # @overload where(attribute_name)
436
- #
437
- # table.items.where(:name).equals("Fred")
438
- #
439
- # @return [FilterBuilder] An object that allows you to specify
440
- # a filter on the provided attribute name.
441
- def where(filter)
442
- case filter
443
- when Hash
444
- filter.inject(self) do |items, (name, value)|
445
- case value
446
- when nil
447
- items.with_filter(name.to_s, "NULL")
448
- when Range
449
- items.with_filter(name.to_s, "BETWEEN", value.begin, value.end)
450
- else
451
- items.with_filter(name.to_s, "EQ", value)
452
- end
453
- end
454
- when String, Symbol
455
- FilterBuilder.new(self, filter.to_s)
456
- end
457
- end
458
- alias_method :and, :where
459
-
460
- # Iterates over all the items in the collection using a scan
461
- # operation. A scan operation scans the entire table. You can
462
- # specify filters to apply to the results to refine the values
463
- # returned to you, after the complete scan. Amazon DynamoDB puts
464
- # a 1MB limit on the scan (the limit applies before the results
465
- # are filtered). A scan can result in no table data meeting the
466
- # filter criteria.
467
- #
468
- # For more information about filtering the collection
469
- # see the {#where} method.
470
- #
471
- # @param [Hash] options Options for iterating the collection.
472
- #
473
- # @yieldparam [Item] item Each item in the collection.
474
- #
475
- # @option options [Integer] :limit The maximum number of items to yield.
476
- #
477
- # @option options [Integer] :batch_size The maximum number of items
478
- # to retrieve with each service request.
479
- def each(options = {}, &block)
480
-
481
- if conditions = options.delete(:where)
482
- return where(conditions).each(options, &block)
483
- end
484
-
485
- table.assert_schema!
486
-
487
- options = options.merge(:table_name => table.name)
488
- options[:scan_filter] = scan_filters unless scan_filters.empty?
489
-
490
- unless options[:count] or options[:item_data]
491
- options[:attributes_to_get] = [table.hash_key.name]
492
- options[:attributes_to_get] << table.range_key.name if
493
- table.composite_key?
494
- end
495
-
496
- super(options, &block)
497
- end
498
-
499
- def first(options = {})
500
- each(options) do |item|
501
- return item
502
- end
503
- end
504
-
505
- # Retrieves data about the items in the collection. This method
506
- # works like {#each}, except that it returns or yields
507
- # {ItemData} instances instead of {Item} instances. This is
508
- # useful if you want to use the attributes of the item in a loop
509
- # or retain them in memory. Also, unlike {#each} which always
510
- # requests only the primary key attributes of the items, this
511
- # method allows you to specify which attributes to retrieve from
512
- # DynamoDB.
513
- #
514
- # # fetch all attributes for a collection of items
515
- # items.select { |data| p data.attributes }
516
- #
517
- # # fetch only the "color" attribute of each item
518
- # items.select(:color) { |data| p data.attributes["color"] }
519
- #
520
- # # use client-side filtering to delete a subset of the items
521
- # items.select do |data|
522
- # data.item.delete if data.attributes.size % 2 == 0
523
- # end
524
- #
525
- # @overload select(*attributes, options = {})
526
- #
527
- # @param [Array<String, Symbol>] attributes Specifies which
528
- # attributes to retrieve from the service. By default all
529
- # attributes are retrieved. If the last argument is a hash,
530
- # it may contain options for iterating the items in the
531
- # collection. See the {#each} method for more information
532
- # about these options.
533
- #
534
- # @param [Hash] options
535
- #
536
- # @option options [Integer] :limit The maximum number of records to
537
- # select (scan). If more records are requested than can
538
- # be returned in a single response, multiple requests
539
- # will be made.
540
- #
541
- # @yieldparam [ItemData] data The data for each item in the
542
- # collection. The attributes of each item will be populated
543
- # in the ItemData object; however, {ItemData#item} will not be
544
- # populated unless the requested attributes include all
545
- # elements of the table's primary key. For example, if a
546
- # table has a composite primary key, this method will only
547
- # populate {ItemData#item} if the list of requested attributes
548
- # includes both the hash key and range key attributes.
549
- #
550
- # @return [Enumerator, nil] If a block is given, this method
551
- # returns nil. Otherwise, it returns an enumerator for the
552
- # values that would have been yielded to the block.
553
- #
554
- def select *attributes, &block
555
-
556
- options = {}
557
- options = attributes.pop if attributes.last.kind_of?(Hash)
558
- options = options.merge(:item_data => true)
559
- options[:attributes_to_get] =
560
- attributes.map { |att| att.to_s } unless
561
- attributes.empty?
562
-
563
- if block_given?
564
- each(options, &block)
565
- else
566
- enumerator(options)
567
- end
568
-
569
- end
570
-
571
- # Counts the items in the collection using a table scan. The
572
- # count applies to the items that match all the filters on the
573
- # collection. For example:
574
- #
575
- # # count the blue items
576
- # items.where(:color => "blue").count
577
- #
578
- # @param [Hash] options Options for counting the items.
579
- #
580
- # @option options [Integer] :max_requests The maximum number of
581
- # requests to make.
582
- #
583
- # @option options [Integer] :limit The maximum count; the return
584
- # value will be less than or equal to the value of this
585
- # option.
586
- #
587
- # @option options [Integer] :batch_size DynamoDB will scan up to
588
- # 1MB of data on each request; you can use this option to
589
- # further limit the number of items scanned on each request.
590
- #
591
- # @return [Integer]
592
- def count options = {}
593
- options = options.merge(:count => true)
594
-
595
- # since each with :count yields the per-page counts, each with
596
- # :limit and :count effectively limits the number of requests,
597
- # not the number of items
598
- limit = options.delete(:limit)
599
- options[:limit] = options.delete(:max_requests) if
600
- options.key?(:max_requests)
601
-
602
- # it usually doesn't make sense to ask for more items than you
603
- # care about counting
604
- options[:batch_size] ||= limit if limit
605
-
606
- enumerator(options).inject(0) do |sum, n|
607
- return limit if limit && sum + n >= limit
608
- sum + n
609
- end
610
- end
611
-
612
- RANGE_KEY_OPTIONS = {
613
- :range_less_than => "LT",
614
- :range_greater_than => "GT",
615
- :range_lte => "LE",
616
- :range_gte => "GE",
617
- :range_begins_with => "BEGINS_WITH"
618
- }
619
-
620
- # Queries the items in the table by primary key values. This
621
- # operation is generally more efficient than the scan operation,
622
- # which always scans the whole table. A Query operation
623
- # searches for a specific range of keys satisfying a given set
624
- # of key conditions and does not have the added step of
625
- # filtering out results.
626
- #
627
- # # find all items with a given hash key value
628
- # items.query(:hash_value => "abc123")
629
- #
630
- # # get only the colors attribute of each item
631
- # items.query(
632
- # :hash_value => "abc123",
633
- # :select => [:colors])
634
- #
635
- # # find only the items where the range key is between two values
636
- # items.query(
637
- # :hash_value => "abc123",
638
- # :range_value => 1..100
639
- # )
640
- #
641
- # @note This method is only valid for tables with a composite
642
- # primary key.
643
- #
644
- # @param [Hash] options Options for the query. `:hash_value` is
645
- # required. Only one of the following options may be set:
646
- #
647
- # * `:range_value`
648
- # * `:range_greater_than`
649
- # * `:range_less_than`
650
- # * `:range_gte`
651
- # * `:range_lte`
652
- # * `:range_begins_with`
653
- #
654
- # @option [Boolean] :scan_index_forward (true) Specifies which
655
- # order records will be returned. Defaults to returning them
656
- # in ascending range key order. Pass false to reverse this.
657
- #
658
- # @option :select (nil) By default {#query} yields {Item}
659
- # objects without any attribute data. If you want to select
660
- # specific attributes, pass a list of them to :select.
661
- #
662
- # :select => [:id, :category, :size]
663
- #
664
- # If you want to select ALL attributes, pass the symbol `:all`
665
- #
666
- # :select => :all
667
- #
668
- # @option options [String, Numeric] :hash_value Attribute value
669
- # of the hash component of the composite primary key.
670
- #
671
- # @option options [Array<String, Symbol>, String, Symbol] :select
672
- # Attribute name or names to retrieve. When this option is
673
- # set, the returned or yielded items will be instances of
674
- # {ItemData} instead of {Item}. The special value `:all`
675
- # indicates that all attributes should be retrieved and
676
- # returned in ItemData instances.
677
- #
678
- # @option options [String, Numeric, Range] :range_value
679
- # Specifies which range key values to find in the table. If
680
- # this is a Range, the query will return items with range key
681
- # values between the beginning and end of the range
682
- # (inclusive). If it is a string or number, the query will
683
- # return only the item with that range key value.
684
- #
685
- # @option options [String, Numeric] :range_greater_than Matches
686
- # items where the range key value is greater than this value.
687
- #
688
- # @option options [String, Numeric] :range_less_than Matches
689
- # items where the range key value is less than this value.
690
- #
691
- # @option options [String, Numeric] :range_gte Matches items
692
- # where the range key value is greater than or equal to this
693
- # value.
694
- #
695
- # @option options [String, Numeric] :range_lte Matches items
696
- # where the range key value is less than or equal to this
697
- # value.
698
- #
699
- # @option options [String, Numeric] :range_begins_with Matches
700
- # items where the range key value begins with this value.
701
- # This option is only valid if the range key is a string.
702
- #
703
- def query(options = {}, &block)
704
-
705
- options = options.merge(:query => true)
706
-
707
- raise ArgumentError, "a hash key value is required" unless
708
- options[:hash_value]
709
-
710
- options[:hash_key_value] =
711
- format_attribute_value(options.delete(:hash_value))
712
-
713
- range = options.delete(:range_value)
714
- range_op = nil
715
- value_list = []
716
- if range and range.kind_of?(Range)
717
- value_list = [format_attribute_value(range.begin),
718
- format_attribute_value(range.end)]
719
- range_op = "BETWEEN"
720
- elsif range
721
- value_list = [format_attribute_value(range)]
722
- range_op = "EQ"
723
- end
724
-
725
- RANGE_KEY_OPTIONS.each do |name, op|
726
- if value = options.delete(name)
727
- raise(ArgumentError,
728
- "only one range key condition is supported") if range_op
729
- range_op = op
730
- value_list = [format_attribute_value(value)]
731
- end
732
- end
733
-
734
- options[:range_key_condition] = {
735
- :attribute_value_list => value_list,
736
- :comparison_operator => range_op
737
- } if range_op
738
-
739
- if select = options.delete(:select) || options.delete(:attributes_to_get)
740
- options[:item_data] = true
741
- options[:attributes_to_get] = select.map(&:to_s) unless select == :all
742
- end
743
-
744
- if block
745
- each(options, &block)
746
- else
747
- enumerator(options)
748
- end
749
- end
750
-
751
- # @api private
752
- def with_filter attribute, op, *values
753
-
754
- values = values.map {|value| format_attribute_value(value) }
755
-
756
- filter = {
757
- :attribute_value_list => values,
758
- :comparison_operator => op
759
- }
760
-
761
- if scan_filters.key?(attribute)
762
- raise(ArgumentError, "conflicting filters for attribute #{attribute}")
763
- end
764
-
765
- refine(:scan_filters => scan_filters.merge(attribute => filter))
766
-
767
- end
768
-
769
- # @api private
770
- def refine(opts)
771
- opts = {
772
- :scan_filters => scan_filters
773
- }.merge(opts)
774
- self.class.new(table, opts)
775
- end
776
-
777
- protected
778
- def _each_item next_token, limit, options = {}, &block
779
-
780
- options[:exclusive_start_key] = next_token if next_token
781
-
782
- options[:limit] = limit if limit
783
-
784
- method = options.delete(:query) ? :query : :scan
785
-
786
- mode = case
787
- when options.delete(:item_data) then :item_data
788
- when options[:count] then :count
789
- else :item
790
- end
791
-
792
- response = client.send(method, options)
793
-
794
- _yield_items(mode, response, &block)
795
-
796
- response.data["LastEvaluatedKey"]
797
-
798
- end
799
-
800
- protected
801
- def _yield_items mode, response, &block
802
-
803
- case mode
804
-
805
- # yield the count of items matching
806
- when :count
807
- yield(response.data["Count"])
808
-
809
- # yeild item data objects
810
- when :item_data
811
-
812
- table.assert_schema!
813
-
814
- #construct_items =
815
- # (true if request_includes_key?(response.request_options))
816
-
817
- construct_items = request_includes_key?(response.request_options)
818
-
819
- response.data["Items"].each do |i|
820
- attributes = values_from_response_hash(i)
821
-
822
- item = nil
823
- item = Item.new_from(:put_item, i, table) if construct_items
824
-
825
- item_data = ItemData.new(:item => item, :attributes => attributes)
826
-
827
- yield(item_data)
828
-
829
- end
830
-
831
- # yield item objects
832
- when :item
833
- response.data["Items"].each do |i|
834
- item = Item.new_from(:put_item, i, table)
835
- yield(item)
836
- end
837
-
838
- end
839
-
840
- end
841
-
842
- protected
843
- def request_includes_key?(options)
844
- requested_atts = options[:attributes_to_get]
845
- requested_atts.nil? or
846
- (table.simple_key? &&
847
- requested_atts.include?(table.hash_key.name)) or
848
- (table.composite_key? &&
849
- requested_atts.include?(table.hash_key.name) &&
850
- requested_atts.include?(table.range_key.name))
851
- end
852
-
853
- end
854
-
855
- end
856
- end