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,172 +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
- module Record
16
- class HashModel
17
- class << self
18
-
19
- # @param [String] id The id of the record to load.
20
- # @param [Hash] options
21
- # @option options [String] :shard Specifies what shard (i.e. table)
22
- # should be searched.
23
- # @raise [RecordNotFound] Raises a record not found exception if there
24
- # was no data found for the given id.
25
- # @return [Record::HashModel] Returns the record with the given id.
26
- def find_by_id id, options = {}
27
-
28
- table = dynamo_db_table(options[:shard])
29
-
30
- data = table.items[id].attributes.to_h
31
-
32
- raise RecordNotFound, "no data found for id: #{id}" if data.empty?
33
-
34
- obj = self.new(:shard => table)
35
- obj.send(:hydrate, id, data)
36
- obj
37
-
38
- end
39
- alias_method :[], :find_by_id
40
-
41
- # Finds records in Amazon DynamoDB and returns them as objects of
42
- # the current class.
43
- #
44
- # Finding `:all` returns an enumerable scope object
45
- #
46
- # People.find(:all, :limit => 10).each do |person|
47
- # puts person.name
48
- # end
49
- #
50
- # Finding `:first` returns a single record (or nil)
51
- #
52
- # boss = People.find(:first)
53
- #
54
- # Find accepts a hash of find modifiers (`:shard` and `:limit`).
55
- # You can also choose to omit these modifiers and
56
- # chain them on the scope object returned. In the following
57
- # example only one request is made to SimpleDB (when #each is
58
- # called)
59
- #
60
- # people = People.find(:all, :limit => 10)
61
- #
62
- # people = people.limit(10).find(:all)
63
- #
64
- # @overload find(id)
65
- # @param id The record to find, raises an exception if the record is
66
- # not found.
67
- #
68
- # @overload find(mode, options = {})
69
- # @param [:all,:first] mode (:all) When finding `:all` matching records
70
- # and array is returned of records. When finding `:first` then
71
- # `nil` or a single record will be returned.
72
- # @param [Hash] options
73
- # @option options [Integer] :shard The shard name of the Amazon
74
- # DynamoDB table to search.
75
- # @option options [Integer] :limit The max number of records to fetch.
76
- def find *args
77
- new_scope.find(*args)
78
- end
79
-
80
- # Returns a chainable scope object that restricts further scopes to a
81
- # particular table.
82
- #
83
- # Book.shard('books-2').each do |book|
84
- # # ...
85
- # end
86
- #
87
- # @param [String] shard_name
88
- # @return [Scope] Returns a scope for restricting the table searched.
89
- def shard shard_name
90
- new_scope.shard(shard_name)
91
- end
92
- alias_method :domain, :shard # backwards compat
93
-
94
- # Returns an enumerable scope object represents all records.
95
- #
96
- # Book.all.each do |book|
97
- # # ...
98
- # end
99
- #
100
- # This method is equivalent to `find(:all)`, and therefore you can also
101
- # pass aditional options.
102
- #
103
- # Book.all(:where => { :author' => 'me' }).each do |my_book|
104
- # # ...
105
- # end
106
- #
107
- # @return [Scope] Returns an enumerable scope object.
108
- #
109
- def all options = {}
110
- new_scope.find(:all, options)
111
- end
112
-
113
- # Yields once for each record.
114
- def each &block
115
- all.each(&block)
116
- end
117
-
118
- # Counts records Amazon DynamoDB.
119
- #
120
- # class Product < AWS::Record::HashModel
121
- # end
122
- #
123
- # # returns the count of records in the 'Product' table
124
- # Product.count
125
- #
126
- # You can specify the table via #shard
127
- #
128
- # # returns the count of records in the 'products-1' table
129
- # Product.shard('products-1').count
130
- #
131
- # You can also specify the shard as an option to #count.
132
- #
133
- # Product.count(:shard => 'table-name')
134
- #
135
- # Chaining #count with #limit has no effect on the count.
136
- #
137
- # Product.limit(10).count # same as Product.count, limit ignored
138
- #
139
- # @param [Hash] options
140
- #
141
- # @option [String] :shard Which shard to count records in.
142
- #
143
- # @return [Integer] The count of records in the table.
144
- #
145
- def count options = {}
146
- new_scope.count(options)
147
- end
148
- alias_method :size, :count
149
-
150
- # @return [Object,nil] Returns the first record found. If there were
151
- # no records found, nil is returned.
152
- def first options = {}
153
- new_scope.first(options)
154
- end
155
-
156
- # The maximum number of records to return. By default, all records
157
- # matching the where conditions will be returned from a find.
158
- #
159
- # People.limit(10).each {|person| ... }
160
- #
161
- # Limit can be chained with other scope modifiers:
162
- #
163
- # People.where(:age => 40).limit(10).each {|person| ... }
164
- #
165
- def limit limit
166
- new_scope.limit(limit)
167
- end
168
-
169
- end
170
- end
171
- end
172
- end
@@ -1,108 +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
- module Record
16
- class HashModel
17
-
18
- # The primary interface for finding records with {AWS::Record::HashModel}.
19
- #
20
- # ## Getting a Scope Object
21
- #
22
- # You should normally never need to construct a Scope object directly.
23
- # Scope objects are returned from the AWS::Record::HashModel finder
24
- # methods # (e.g. `shard` and `limit`).
25
- #
26
- # books = Book.limit(100)
27
- # books.class #=> AWS::Record::HashModel::Scope
28
- #
29
- # Scopes are also returned from methods defined with the `scope` method.
30
- #
31
- # class Book < AWS::Record::HashModel
32
- # scope :sampling, limit(10)
33
- # end
34
- #
35
- # Book.sampling #=> returns a scope that limits to 10
36
- #
37
- # ## Chaining Scopes
38
- #
39
- # Scope objects represent a request, but do not actualy make a request
40
- # until required. This allows you to chain requests
41
- #
42
- # # no request made by the following 2 statements
43
- # books = Book.shard('books-1') # what table to search
44
- # books = books.limit(10) # how many records to fetch
45
- #
46
- # books.each do |book|
47
- # # yields up to 10 books from the table 'books-1'
48
- # end
49
- #
50
- # The following methods returns a scope that can be chained.
51
- #
52
- # * {#shard}
53
- # * {#limit}
54
- #
55
- # ## Terminating Scopes
56
- #
57
- # To terminate a scope you can enumerate it or call #first.
58
- #
59
- # # terminate a scope by enumerating
60
- # Book.limit(10).each {|book| ... }
61
- #
62
- # # terminate a scope by getting the first record
63
- # Book.shard('books-1').first
64
- #
65
- class Scope < Record::Scope
66
-
67
- private
68
- def _each_object &block
69
-
70
- items = _item_collection
71
-
72
- items.select(:limit => @options[:limit]).each do |item_data|
73
- obj = base_class.new(:shard => _shard)
74
- obj.send(:hydrate, item_data.attributes['id'], item_data.attributes)
75
- yield(obj)
76
- end
77
-
78
- end
79
-
80
- private
81
- def _merge_scope scope
82
- merged = self
83
- scope.instance_variable_get('@options').each_pair do |opt_name,opt_value|
84
- unless [nil, []].include?(opt_value)
85
- merged = merged.send(opt_name, *opt_value)
86
- end
87
- end
88
- merged
89
- end
90
-
91
- private
92
- def _handle_options options
93
- scope = self
94
- options.each_pair do |method, args|
95
- scope = scope.send(method, *args)
96
- end
97
- scope
98
- end
99
-
100
- private
101
- def _item_collection
102
- base_class.dynamo_db_table(_shard).items
103
- end
104
-
105
- end
106
- end
107
- end
108
- end
@@ -1,453 +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
- # todo move these to included modules (like validations and naming)
15
-
16
-
17
- module AWS
18
- module Record
19
-
20
- # An ActiveRecord-like interface built ontop of Amazon SimpleDB.
21
- #
22
- # class Book < AWS::Record::Model
23
- #
24
- # string_attr :title
25
- # string_attr :author
26
- # integer_attr :number_of_pages
27
- #
28
- # timestamps # adds a :created_at and :updated_at pair of timestamps
29
- #
30
- # end
31
- #
32
- # b = Book.new(:title => 'My Book', :author => 'Me', :pages => 1)
33
- # b.save
34
- #
35
- # # Attribute Macros
36
- #
37
- # When extending AWS::Record::Model you should first consider what
38
- # attributes your class should have. Unlike ActiveRecord, AWS::Record
39
- # models are not backed by a database table/schema. You must choose what
40
- # attributes (and what types) you need.
41
- #
42
- # * `string_attr`
43
- # * `boolean_attr`
44
- # * `integer_attr`
45
- # * `float_attr`
46
- # * `datetime_attr`
47
- # * `date_attr`
48
- #
49
- # ### Usage
50
- #
51
- # Normally you just call these methods inside your model class definition:
52
- #
53
- # class Book < AWS::Record::Model
54
- # string_attr :title
55
- # boolean_attr :has_been_read
56
- # integer_attr :number_of_pages
57
- # float_attr :weight_in_pounds
58
- # datetime_attr :published_at
59
- # end
60
- #
61
- # For each attribute macro a pair of setter/getter methods are added #
62
- # to your class (and a few other useful methods).
63
- #
64
- # b = Book.new
65
- # b.title = "My Book"
66
- # b.has_been_read = true
67
- # b.number_of_pages = 1000
68
- # b.weight_in_pounds = 1.1
69
- # b.published_at = Time.now
70
- # b.save
71
- #
72
- # b.id #=> "0aa894ca-8223-4d34-831e-e5134b2bb71c"
73
- # b.attributes
74
- # #=> { 'title' => 'My Book', 'has_been_read' => true, ... }
75
- #
76
- # ### Default Values
77
- #
78
- # All attribute macros accept the `:default_value` option. This sets
79
- # a value that is populated onto all new instnaces of the class.
80
- #
81
- # class Book < AWS::Record::Model
82
- # string_attr :author, :default_value => 'Me'
83
- # end
84
- #
85
- # Book.new.author #=> 'Me'
86
- #
87
- # ### Multi-Valued (Set) Attributes
88
- #
89
- # AWS::Record permits storing multiple values with a single attribute.
90
- #
91
- # class Book < AWS::Record::Model
92
- # string_attr :tags, :set => true
93
- # end
94
- #
95
- # b = Book.new
96
- # b.tags #=> #<Set: {}>
97
- #
98
- # b.tags = ['fiction', 'fantasy']
99
- # b.tags #=> #<Set: {'fiction', 'fantasy'}>
100
- #
101
- # These multi-valued attributes are treated as sets, not arrays. This
102
- # means:
103
- #
104
- # * values are unordered
105
- # * duplicate values are automatically omitted
106
- #
107
- # Please consider these limitations when you choose to use the `:set`
108
- # option with the attribute macros.
109
- #
110
- # # Validations
111
- #
112
- # It's important to validate models before there are persisted to keep
113
- # your data clean. AWS::Record supports most of the ActiveRecord style
114
- # validators.
115
- #
116
- # class Book < AWS::Record::Model
117
- # string_attr :title
118
- # validates_presence_of :title
119
- # end
120
- #
121
- # b = Book.new
122
- # b.valid? #=> false
123
- # b.errors.full_messages #=> ['Title may not be blank']
124
- #
125
- # Validations are checked before saving a record. If any of the validators
126
- # adds an error, the the save will fail.
127
- #
128
- # For more information about the available validation methods see
129
- # {Validations}.
130
- #
131
- # # Finder Methods
132
- #
133
- # You can find records by their ID. Each record gets a UUID when it
134
- # is saved for the first time. You can use this ID to fetch the record
135
- # at a latter time:
136
- #
137
- # b = Book["0aa894ca-8223-4d34-831e-e5134b2bb71c"]
138
- #
139
- # b = Book.find("0aa894ca-8223-4d34-831e-e5134b2bb71c")
140
- #
141
- # If you try to find a record by ID that has no data an error will
142
- # be raised.
143
- #
144
- # ### All
145
- #
146
- # You can enumerate all of your records using `all`.
147
- #
148
- # Book.all.each do |book|
149
- # puts book.id
150
- # end
151
- #
152
- # Book.find(:all) do |book|
153
- # puts book.id
154
- # end
155
- #
156
- # Be careful when enumerating all. Depending on the number of records
157
- # and number of attributes each record has, this can take a while,
158
- # causing quite a few requests.
159
- #
160
- # ### First
161
- #
162
- # If you only want a single record, you should use `first`.
163
- #
164
- # b = Book.first
165
- #
166
- # ### Modifiers
167
- #
168
- # Frequently you do not want ALL records or the very first record. You
169
- # can pass options to `find`, `all` and `first`.
170
- #
171
- # my_books = Book.find(:all, :where => 'owner = "Me"')
172
- #
173
- # book = Book.first(:where => { :has_been_read => false })
174
- #
175
- # You can pass as find options:
176
- #
177
- # * `:where` - Conditions that must be met to be returned
178
- # * `:order` - The order to sort matched records by
179
- # * `:limit` - The maximum number of records to return
180
- #
181
- # # Scopes
182
- #
183
- # More useful than writing query fragments all over the place is to
184
- # name your most common conditions for reuse.
185
- #
186
- # class Book < AWS::Record::Model
187
- #
188
- # scope :mine, where(:owner => 'Me')
189
- #
190
- # scope :unread, where(:has_been_read => false)
191
- #
192
- # scope :by_popularity, order(:score, :desc)
193
- #
194
- # scope :top_10, by_popularity.limit(10)
195
- #
196
- # end
197
- #
198
- # # The following expression returns 10 books that belong
199
- # # to me, that are unread sorted by popularity.
200
- # next_good_reads = Book.mine.unread.top_10
201
- #
202
- # There are 3 standard scope methods:
203
- #
204
- # * `where`
205
- # * `order`
206
- # * `limit`
207
- #
208
- # ### Conditions (where)
209
- #
210
- # Where accepts aruments in a number of forms:
211
- #
212
- # 1. As an sql-like fragment. If you need to escape values this form is
213
- # not suggested.
214
- #
215
- # Book.where('title = "My Book"')
216
- #
217
- # 2. An sql-like fragment, with placeholders. This escapes quoted
218
- # arguments properly to avoid injection.
219
- #
220
- # Book.where('title = ?', 'My Book')
221
- #
222
- # 3. A hash of key-value pairs. This is the simplest form, but also the
223
- # least flexible. You can not use this form if you need more complex
224
- # expressions that use or.
225
- #
226
- # Book.where(:title => 'My Book')
227
- #
228
- # ### Order
229
- #
230
- # This orders the records as returned by AWS. Default ordering is ascending.
231
- # Pass the value :desc as a second argument to sort in reverse ordering.
232
- #
233
- # Book.order(:title) # alphabetical ordering
234
- # Book.order(:title, :desc) # reverse alphabetical ordering
235
- #
236
- # You may only order by a single attribute. If you call order twice in the
237
- # chain, the last call gets presedence:
238
- #
239
- # Book.order(:title).order(:price)
240
- #
241
- # In this example the books will be ordered by :price and the order(:title)
242
- # is lost.
243
- #
244
- # ### Limit
245
- #
246
- # Just call `limit` with an integer argument. This sets the maximum
247
- # number of records to retrieve:
248
- #
249
- # Book.limit(2)
250
- #
251
- # ### Delayed Execution
252
- #
253
- # It should be noted that all finds are lazy (except `first`). This
254
- # means the value returned is not an array of records, rather a handle
255
- # to a {Scope} object that will return records when you enumerate over them.
256
- #
257
- # This allows you to build an expression without making unecessary requests.
258
- # In the following example no request is made until the call to
259
- # each_with_index.
260
- #
261
- # all_books = Books.all
262
- # ten_books = all_books.limit(10)
263
- #
264
- # ten_books.each_with_index do |book,n|
265
- # puts "#{n + 1} : #{book.title}"
266
- # end
267
- #
268
- class Model
269
-
270
- require 'aws/record/model/attributes'
271
- require 'aws/record/model/finder_methods'
272
- require 'aws/record/model/scope'
273
-
274
- extend AbstractBase
275
-
276
- # The id for each record is auto-generated. The default strategy
277
- # generates uuid strings.
278
- # @return [String] Returns the id string (uuid) for this record. Retuns
279
- # nil if this is a new record that has not been persisted yet.
280
- def id
281
- @_id
282
- end
283
-
284
- # @return [Hash] A hash with attribute names as hash keys (strings) and
285
- # attribute values (of mixed types) as hash values.
286
- def attributes
287
- attributes = super
288
- attributes['id'] = id if persisted?
289
- attributes
290
- end
291
-
292
- class << self
293
-
294
- # Creates the SimpleDB domain that is configured for this class.
295
- #
296
- # class Product < AWS::Record::Model
297
- # end
298
- #
299
- # Product.create_table #=> 'Product'
300
- #
301
- # If you share a single AWS account with multiple applications, you
302
- # can provide a domain prefix for your model classes.
303
- #
304
- # AWS::Record.domain_prefix = 'myapp-'
305
- #
306
- # Product.create_table #=> 'myapp-Product'
307
- #
308
- # If you have set a model shard name, this is used in place of the
309
- # class name.
310
- #
311
- # AWS::Record.domain_prefix = 'prod-'
312
- # class Product < AWS::Record::Model
313
- # set_shard_name 'products'
314
- # end
315
- #
316
- # Product.create_table #=> 'prod-products'
317
- #
318
- # If you shard you data across multiple domains, you can specify the
319
- # shard name:
320
- #
321
- # # create two domains, with the given names
322
- # Product.create_domain 'products-1'
323
- # Product.create_domain 'products-2'
324
- #
325
- # @param [optional,String] shard_name Defaults to the class name.
326
- #
327
- # @return [SimpleDB::Domain]
328
- #
329
- def create_domain shard_name = nil
330
- sdb.domains.create(sdb_domain_name(shard_name))
331
- end
332
-
333
- # @return [AWS::SimpleDB::Domain]
334
- # @api private
335
- def sdb_domain shard_name = nil
336
- sdb.domains[sdb_domain_name(shard_name)]
337
- end
338
-
339
- protected
340
- def sdb_domain_name shard_name = nil
341
- "#{AWS::Record.domain_prefix}#{self.shard_name(shard_name)}"
342
- end
343
-
344
- protected
345
- def sdb
346
- AWS::SimpleDB.new
347
- end
348
-
349
- end
350
-
351
- # @return [SimpleDB::Item] Returns a reference to the item as stored in
352
- # simple db.
353
- # @api private
354
- private
355
- def sdb_item
356
- sdb_domain.items[id]
357
- end
358
-
359
- # @return [SimpleDB::Domain] Returns the domain this record is
360
- # persisted to or will be persisted to.
361
- private
362
- def sdb_domain
363
- self.class.sdb_domain(shard)
364
- end
365
-
366
- # This function accepts a hash of item data (as returned from
367
- # AttributeCollection#to_h or ItemData#attributes) and returns only
368
- # the key/value pairs that are configured attribues for this class.
369
- # @api private
370
- private
371
- def deserialize_item_data item_data
372
-
373
- marked_for_deletion = item_data['_delete_'] || []
374
-
375
- data = {}
376
- item_data.each_pair do |attr_name,values|
377
-
378
- attribute = self.class.attributes[attr_name]
379
-
380
- next unless attribute
381
- next if marked_for_deletion.include?(attr_name)
382
-
383
- if attribute.set?
384
- data[attr_name] = values.map{|v| attribute.deserialize(v) }
385
- else
386
- data[attr_name] = attribute.deserialize(values.first)
387
- end
388
-
389
- end
390
- data
391
- end
392
-
393
- def hydrate(id, data)
394
- @_id = id
395
- super
396
- end
397
-
398
- # @api private
399
- def populate_id
400
- @_id = UUIDTools::UUID.random_create.to_s.downcase
401
- end
402
-
403
- # @api private
404
- protected
405
- def create_storage
406
- to_add = serialize_attributes
407
- sdb_item.attributes.add(to_add.merge(opt_lock_conditions))
408
- end
409
-
410
- # @api private
411
- private
412
- def update_storage
413
-
414
- to_update = {}
415
- to_delete = []
416
-
417
- # serialized_attributes will raise error if the entire record is blank
418
- attribute_values = serialize_attributes
419
-
420
- changed.each do |attr_name|
421
- if values = attribute_values[attr_name]
422
- to_update[attr_name] = values
423
- else
424
- to_delete << attr_name
425
- end
426
- end
427
-
428
- to_update.merge!(opt_lock_conditions)
429
-
430
- if to_delete.empty?
431
- sdb_item.attributes.replace(to_update)
432
- else
433
- sdb_item.attributes.replace(to_update.merge('_delete_' => to_delete))
434
- sdb_item.attributes.delete(to_delete + ['_delete_'])
435
- end
436
-
437
- end
438
-
439
- # @return [true]
440
- # @api private
441
- private
442
- def delete_storage
443
- sdb_item.delete(opt_lock_conditions)
444
- @_deleted = true
445
- end
446
-
447
- end
448
-
449
- # for backwards compatability with the old AWS::Record::Base
450
- Base = Model
451
-
452
- end
453
- end