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,690 +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
- require 'uuidtools'
15
- require 'set'
16
-
17
- module AWS
18
- module Record
19
- module AbstractBase
20
-
21
- def self.extended base
22
-
23
- base.send(:extend, ClassMethods)
24
- base.send(:include, InstanceMethods)
25
- base.send(:include, DirtyTracking)
26
- base.send(:extend, Validations)
27
-
28
- # these 3 modules are for rails 3+ active model compatability
29
- base.send(:extend, Naming)
30
- base.send(:include, Naming)
31
- base.send(:include, Conversion)
32
-
33
- end
34
-
35
- module InstanceMethods
36
-
37
- # Constructs a new record.
38
- #
39
- # @param [Hash] attributes Attributes that should be bulk assigned
40
- # to this record. You can also specify the shard (i.e. domain
41
- # or table) this record should persist to via `:shard`).
42
- #
43
- # @option attributes [String] :shard The domain/table this record
44
- # should persist to. If this is omitted, it will persist to the
45
- # class default shard (which defaults to the class name).
46
- #
47
- # @return [Model,HashModel] Returns a new (non-persisted) record.
48
- # Call {#save} to persist changes to AWS.
49
- #
50
- def initialize attributes = {}
51
-
52
- attributes = attributes.dup
53
-
54
- # supporting :domain for backwards compatability, :shard is prefered
55
- @_shard = attributes.delete(:domain)
56
- @_shard ||= attributes.delete('domain')
57
- @_shard ||= attributes.delete(:shard)
58
- @_shard ||= attributes.delete('shard')
59
- @_shard = self.class.shard_name(@_shard)
60
-
61
- @_data = {}
62
- assign_default_values
63
- bulk_assign(attributes)
64
-
65
- end
66
-
67
- # @return [String] Returns the name of the shard this record
68
- # is persisted to or will be persisted to. Defaults to the
69
- # domain/table named after this record class.
70
- def shard
71
- @_shard
72
- end
73
- alias_method :domain, :shard # for backwards compatability
74
-
75
- # @return [Hash] A hash with attribute names as hash keys (strings) and
76
- # attribute values (of mixed types) as hash values.
77
- def attributes
78
- attributes = Core::IndifferentHash.new
79
- self.class.attributes.keys.inject(attributes) do |hash,attr_name|
80
- hash.merge(attr_name => __send__(attr_name))
81
- end
82
- end
83
-
84
- # Acts like {#update} but does not call {#save}.
85
- #
86
- # record.attributes = { :name => 'abc', :age => 20 }
87
- #
88
- # @param [Hash] attributes A hash of attributes to set on this record
89
- # without calling save.
90
- #
91
- # @return [Hash] Returns the attribute hash that was passed in.
92
- #
93
- def attributes= attributes
94
- bulk_assign(attributes)
95
- end
96
-
97
- # Persistence indicates if the record has been saved previously or not.
98
- #
99
- # @example
100
- # @recipe = Recipe.new(:name => 'Buttermilk Pancackes')
101
- # @recipe.persisted? #=> false
102
- # @recipe.save!
103
- # @recipe.persisted? #=> true
104
- #
105
- # @return [Boolean] Returns true if this record has been persisted.
106
- def persisted?
107
- !!@_persisted
108
- end
109
-
110
- # @return [Boolean] Returns true if this record has not been persisted
111
- # to SimpleDB.
112
- def new_record?
113
- !persisted?
114
- end
115
-
116
- # @param [Hash] opts Pass :validate => false to skip validations
117
- # @return [Boolean] Returns true if this record has no validation errors.
118
- def valid? opts = {}
119
- opts = {} if opts.nil?
120
- opts = {:validate => true}.merge(opts)
121
- run_validations if opts[:validate]
122
- errors.empty?
123
- end
124
-
125
- def errors
126
- @errors ||= Errors.new
127
- end
128
-
129
- # Creates new records, updates existing records.
130
- # @param [Hash] opts Pass :validate => false to skip validations
131
- # @return [Boolean] Returns true if the record saved without errors,
132
- # false otherwise.
133
- def save opts = {}
134
- if valid?(opts)
135
- persisted? ? update : create
136
- clear_changes!
137
- true
138
- else
139
- false
140
- end
141
- end
142
-
143
- # Creates new records, updates exsting records. If there is a validation
144
- # error then an exception is raised.
145
- # @raise [InvalidRecordError] Raised when the record has validation
146
- # errors and can not be saved.
147
- # @return [true] Returns true after a successful save.
148
- def save!
149
- raise InvalidRecordError.new(self) unless save
150
- true
151
- end
152
-
153
- # Bulk assigns the attributes and then saves the record.
154
- # @param [Hash] attribute_hash A hash of attribute names (keys) and
155
- # attribute values to assign to this record.
156
- # @return (see #save)
157
- def update_attributes attribute_hash
158
- bulk_assign(attribute_hash)
159
- save
160
- end
161
-
162
- # Bulk assigns the attributes and then saves the record. Raises
163
- # an exception (AWS::Record::InvalidRecordError) if the record is not
164
- # valid.
165
- # @param (see #update_attributes)
166
- # @return [true]
167
- def update_attributes! attribute_hash
168
- if update_attributes(attribute_hash)
169
- true
170
- else
171
- raise InvalidRecordError.new(self)
172
- end
173
- end
174
-
175
- # Deletes the record.
176
- # @return [true]
177
- def delete
178
- if persisted?
179
- if deleted?
180
- raise 'unable to delete, this object has already been deleted'
181
- else
182
- delete_storage
183
- @_deleted = true
184
- end
185
- else
186
- raise 'unable to delete, this object has not been saved yet'
187
- end
188
- end
189
- alias_method :destroy, :delete
190
-
191
- # @return [Boolean] Returns true if this instance object has been deleted.
192
- def deleted?
193
- persisted? ? !!@_deleted : false
194
- end
195
-
196
- # If you define a custom setter, you use #[]= to set the value
197
- # on the record.
198
- #
199
- # class Book < AWS::Record::Model
200
- #
201
- # string_attr :name
202
- #
203
- # # replace the default #author= method
204
- # def author= name
205
- # self['author'] = name.blank? ? 'Anonymous' : name
206
- # end
207
- #
208
- # end
209
- #
210
- # @param [String,Symbol] The attribute name to set a value for
211
- # @param attribute_value The value to assign.
212
- protected
213
- def []= attribute_name, new_value
214
- self.class.attribute_for(attribute_name) do |attribute|
215
-
216
- if_tracking_changes do
217
- original_value = type_cast(attribute, attribute_was(attribute.name))
218
- incoming_value = type_cast(attribute, new_value)
219
- if original_value == incoming_value
220
- clear_change!(attribute.name)
221
- else
222
- attribute_will_change!(attribute.name)
223
- end
224
- end
225
-
226
- @_data[attribute.name] = new_value
227
-
228
- end
229
- end
230
-
231
- # Returns the typecasted value for the named attribute.
232
- #
233
- # book = Book.new(:title => 'My Book')
234
- # book['title'] #=> 'My Book'
235
- # book.title #=> 'My Book'
236
- #
237
- # ### Intended Use
238
- #
239
- # This method's primary use is for getting/setting the value for
240
- # an attribute inside a custom method:
241
- #
242
- # class Book < AWS::Record::Model
243
- #
244
- # string_attr :title
245
- #
246
- # def title
247
- # self['title'] ? self['title'].upcase : nil
248
- # end
249
- #
250
- # end
251
- #
252
- # book = Book.new(:title => 'My Book')
253
- # book.title #=> 'MY BOOK'
254
- #
255
- # @param [String,Symbol] attribute_name The name of the attribute to fetch
256
- # a value for.
257
- # @return The current type-casted value for the named attribute.
258
- protected
259
- def [] attribute_name
260
- self.class.attribute_for(attribute_name) do |attribute|
261
- type_cast(attribute, @_data[attribute.name])
262
- end
263
- end
264
-
265
- protected
266
- def create
267
- populate_id
268
- touch_timestamps('created_at', 'updated_at')
269
- increment_optimistic_lock_value
270
- create_storage
271
- @_persisted = true
272
- end
273
-
274
- private
275
- def update
276
- return unless changed?
277
- touch_timestamps('updated_at')
278
- increment_optimistic_lock_value
279
- update_storage
280
- end
281
-
282
- protected
283
- def touch_timestamps *attributes
284
- now = Time.now
285
- attributes.each do |attr_name|
286
- if
287
- self.class.attributes[attr_name] and
288
- !attribute_changed?(attr_name)
289
- # don't touch timestamps the user modified
290
- then
291
- __send__("#{attr_name}=", now)
292
- end
293
- end
294
- end
295
-
296
- protected
297
- def increment_optimistic_lock_value
298
- if_locks_optimistically do |lock_attr|
299
- if value = self[lock_attr.name]
300
- self[lock_attr.name] = value + 1
301
- else
302
- self[lock_attr.name] = 1
303
- end
304
- end
305
- end
306
-
307
- protected
308
- def if_locks_optimistically &block
309
- if opt_lock_attr = self.class.optimistic_locking_attr
310
- yield(opt_lock_attr)
311
- end
312
- end
313
-
314
- protected
315
- def opt_lock_conditions
316
- conditions = {}
317
- if_locks_optimistically do |lock_attr|
318
- if was = attribute_was(lock_attr.name)
319
- conditions[:if] = { lock_attr.name => lock_attr.serialize(was) }
320
- else
321
- conditions[:unless_exists] = lock_attr.name
322
- end
323
- end
324
- conditions
325
- end
326
-
327
- private
328
- def assign_default_values
329
- # populate default attribute values
330
- ignore_changes do
331
- self.class.attributes.values.each do |attribute|
332
- default = attribute.default_value
333
- begin
334
- # copy default values down so methods like #gsub! don't
335
- # modify the default values for other objects
336
- @_data[attribute.name] = default.clone
337
- rescue TypeError
338
- @_data[attribute.name] = default
339
- end
340
- end
341
- end
342
- end
343
-
344
- private
345
- def bulk_assign hash
346
- flatten_date_parts(hash).each_pair do |attr_name, attr_value|
347
- __send__("#{attr_name}=", attr_value)
348
- end
349
- end
350
-
351
- private
352
- # Rails date and time select helpers split date and time
353
- # attributes into multiple values for form submission.
354
- # These attributes get named things like 'created_at(1i)'
355
- # and represent year/month/day/hour/min/sec parts of
356
- # the date/time.
357
- #
358
- # This method converts these attributes back into a single
359
- # value and converts them to Date and DateTime objects.
360
- def flatten_date_parts attributes
361
-
362
- multi_attributes = Set.new
363
-
364
- hash = attributes.inject({}) do |hash,(key,value)|
365
- # collects attribuets like "created_at(1i)" into an array of parts
366
- if key =~ /\(/
367
- key, index = key.to_s.split(/\(|i\)/)
368
- hash[key] ||= []
369
- hash[key][index.to_i - 1] = value.to_i
370
- multi_attributes << key
371
- else
372
- hash[key] = value
373
- end
374
- hash
375
- end
376
-
377
- # convert multiattribute values into date/time objects
378
- multi_attributes.each do |key|
379
-
380
- values = hash[key]
381
-
382
- hash[key] = case values.size
383
- when 0 then nil
384
- when 2
385
- now = Time.now
386
- Time.local(now.year, now.month, now.day, values[0], values[1], 0, 0)
387
- when 3 then Date.new(*values)
388
- else DateTime.new(*values)
389
- end
390
-
391
- end
392
-
393
- hash
394
-
395
- end
396
-
397
- private
398
- def type_cast attribute, raw
399
- if attribute.set?
400
- values = Record.as_array(raw).inject([]) do |values,value|
401
- values << attribute.type_cast(value)
402
- values
403
- end
404
- Set.new(values.compact)
405
- else
406
- attribute.type_cast(raw)
407
- end
408
- end
409
-
410
- private
411
- def serialize_attributes
412
-
413
- hash = {}
414
- self.class.attributes.each_pair do |attribute_name,attribute|
415
- value = serialize_attribute(attribute, @_data[attribute_name])
416
- unless [nil, []].include?(value)
417
- hash[attribute_name] = value
418
- end
419
- end
420
-
421
- # simple db does not support persisting items without attribute values
422
- raise EmptyRecordError.new(self) if hash.empty?
423
-
424
- hash
425
-
426
- end
427
-
428
- private
429
- def serialize_attribute attribute, raw_value
430
- type_casted_value = type_cast(attribute, raw_value)
431
- case type_casted_value
432
- when nil then nil
433
- when Set then type_casted_value.map{|v| attribute.serialize(v) }
434
- else attribute.serialize(type_casted_value)
435
- end
436
- end
437
-
438
- # @api private
439
- protected
440
- def hydrate id, data
441
- # New objects are populated with default values, but we don't
442
- # want these values to hang around when hydrating persisted values
443
- # (those values may have been blanked out before save).
444
- self.class.attributes.values.each do |attribute|
445
- @_data[attribute.name] = nil
446
- end
447
-
448
- ignore_changes do
449
- bulk_assign(deserialize_item_data(data))
450
- end
451
-
452
- @_persisted = true
453
- end
454
-
455
- protected
456
- def create_storage
457
- raise NotImplementedError
458
- end
459
-
460
- protected
461
- def update_storage
462
- raise NotImplementedError
463
- end
464
-
465
- protected
466
- def delete_storage
467
- raise NotImplementedError
468
- end
469
-
470
- end
471
-
472
- module ClassMethods
473
-
474
- # Allows you to override the default shard name for this class.
475
- # The shard name defaults to the class name.
476
- # @param [String] name
477
- def set_shard_name name
478
- @_shard_name = name
479
- end
480
- alias_method :set_domain_name, :set_shard_name
481
- alias_method :shard_name=, :set_shard_name
482
-
483
- # Returns the name of the shard this class will persist records
484
- # into by default.
485
- #
486
- # @param [String] name Defaults to the name of this class.
487
- # @return [String] Returns the full prefixed domain name for this class.
488
- def shard_name name = nil
489
- case name
490
- when nil
491
- @_shard_name || self.name
492
- when AWS::DynamoDB::Table
493
- name.name.gsub(/^#{Record::table_prefix}/, '')
494
- when AWS::SimpleDB::Domain
495
- name.name.gsub(/^#{Record::domain_prefix}/, '')
496
- else name
497
- end
498
- end
499
- alias_method :domain_name, :shard_name
500
-
501
- # Adds a scoped finder to this class.
502
- #
503
- # class Book < AWS::Record::Model
504
- # scope :top_10, order(:popularity, :desc).limit(10)
505
- # end
506
- #
507
- # Book.top_10.to_a
508
- # #=> [#<Book...>, #<Book...>]
509
- #
510
- # Book.top_10.first
511
- # #=> #<Book...>
512
- #
513
- # You can also provide a block that accepts params for the scoped
514
- # finder. This block should return a scope.
515
- #
516
- # class Book < AWS::Record::Model
517
- # scope :by_author, lambda {|name| where(:author => name) }
518
- # end
519
- #
520
- # # top 10 books by the author 'John Doe'
521
- # Book.by_author('John Doe').top_10
522
- #
523
- # @param [Symbol] name The name of the scope. Scope names should be
524
- # method-safe and should not conflict with any other class methods.
525
- #
526
- # @param [Scope] scope
527
- #
528
- def scope name, scope = nil, &block
529
-
530
- method_definition = scope ? lambda { scope } : block
531
-
532
- extend(Module.new { define_method(name, &method_definition) })
533
-
534
- end
535
-
536
- # Creates an object (or multiple if you pass an array of attributes).
537
- # The {#save} method is called on the object(s) after construction.
538
- # The object(s) are returned wether or not the object(s) are valid.
539
- #
540
- # class Book < AWS::Record::Model
541
- # string_attr :title
542
- # end
543
- #
544
- # book = Book.create(:title => "The big book of tests")
545
- # book.persisted?
546
- # #=> true
547
- #
548
- # books = Book.create([{:title => 'abc'}, {:title => 'xyz'}])
549
- # books.each(&:persisted?)
550
- # #=> [true, true]
551
- #
552
- def create attributes = {}
553
- create_impl(attributes, :create, :save)
554
- end
555
-
556
- # Creates an object (or multiple if you pass an array of attributes).
557
- # The {#save!} method is called on the object(s) after construction.
558
- # If the object(s) are not valid, then an error is raised.
559
- #
560
- # class Book < AWS::Record::Model
561
- # string_attr :title
562
- # validates_presence_of :title
563
- # end
564
- #
565
- # book = Book.create!(:title => "The big book of tests")
566
- # book.persisted?
567
- # #=> true
568
- #
569
- # book = Book.create!()
570
- # #=> raises AWS::Record::InvalidRecordError
571
- #
572
- def create! attributes = {}
573
- create_impl(attributes, :create!, :save!)
574
- end
575
-
576
- # @api private
577
- def new_scope
578
- self::Scope.new(self)
579
- end
580
-
581
- def optimistic_locking attribute_name = :version_id
582
- attribute = integer_attr(attribute_name)
583
- @optimistic_locking_attr = attribute
584
- end
585
-
586
- # @return [Boolean] Returns true if this class is configured to
587
- # perform optimistic locking.
588
- def optimistic_locking?
589
- !!@optimistic_locking_attr
590
- end
591
-
592
- # @private
593
- def optimistic_locking_attr
594
- @optimistic_locking_attr
595
- end
596
-
597
- # @return [Hash<String,Attribute>] Returns a hash of all of the
598
- # configured attributes for this class.
599
- def attributes
600
- @attributes ||= {}
601
- end
602
-
603
- # @api private
604
- def attribute_for attribute_name, &block
605
- unless attribute = attributes[attribute_name.to_s]
606
- raise UndefinedAttributeError.new(attribute_name.to_s)
607
- end
608
- block_given? ? yield(attribute) : attribute
609
- end
610
-
611
- # @api private
612
- def add_attribute attribute
613
-
614
- attr_name = attribute.name
615
-
616
- attributes[attr_name] = attribute
617
-
618
- # setter
619
- define_method("#{attr_name}=") do |value|
620
- self[attr_name] = value
621
- end
622
-
623
- # getter
624
- define_method(attr_name) do
625
- self[attr_name]
626
- end
627
-
628
- # before type-cast getter
629
- define_method("#{attr_name}_before_type_cast") do
630
- @_data[attr_name]
631
- end
632
-
633
- # dirty tracking methods
634
-
635
- define_method("#{attr_name}_changed?") do
636
- attribute_changed?(attr_name)
637
- end
638
-
639
- define_method("#{attr_name}_change") do
640
- attribute_change(attr_name)
641
- end
642
-
643
- define_method("#{attr_name}_was") do
644
- attribute_was(attr_name)
645
- end
646
-
647
- define_method("#{attr_name}_will_change!") do
648
- attribute_will_change!(attr_name)
649
- end
650
-
651
- define_method("reset_#{attr_name}!") do
652
- reset_attribute!(attr_name)
653
- end
654
-
655
- attribute
656
-
657
- end
658
-
659
- # @api private
660
- def remove_attribute(attribute)
661
- send(:remove_method, attribute.name)
662
- send(:remove_method, "#{attribute.name}=")
663
- send(:remove_method, "#{attribute.name}_before_type_cast")
664
- send(:remove_method, "#{attribute.name}_changed?")
665
- send(:remove_method, "#{attribute.name}_change")
666
- send(:remove_method, "#{attribute.name}_was")
667
- send(:remove_method, "#{attribute.name}_will_change!")
668
- send(:remove_method, "reset_#{attribute.name}!")
669
- validators.each do |validator|
670
- validator.attribute_names.delete(attribute.name)
671
- end
672
- attributes.delete(attribute.name)
673
- end
674
-
675
- private
676
-
677
- def create_impl attributes = {}, create_method = :create, save_method = :save
678
- if attributes.is_a?(Array)
679
- attributes.map {|attr| send(create_method, attr) }
680
- else
681
- obj = new(attributes)
682
- obj.send(save_method)
683
- obj
684
- end
685
- end
686
-
687
- end
688
- end
689
- end
690
- end