aws-sdk-euca 1.8.5

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 (539) hide show
  1. data/.yardopts +5 -0
  2. data/LICENSE.txt +12 -0
  3. data/README.rdoc +189 -0
  4. data/ca-bundle.crt +3895 -0
  5. data/lib/aws-sdk-euca.rb +79 -0
  6. data/lib/aws-sdk.rb +79 -0
  7. data/lib/aws.rb +14 -0
  8. data/lib/aws/api_config/AutoScaling-2011-01-01.yml +825 -0
  9. data/lib/aws/api_config/CloudFormation-2010-05-15.yml +322 -0
  10. data/lib/aws/api_config/CloudFront-2012-05-05.yml +2102 -0
  11. data/lib/aws/api_config/CloudSearch-2011-02-01.yml +681 -0
  12. data/lib/aws/api_config/CloudWatch-2010-08-01.yml +433 -0
  13. data/lib/aws/api_config/DataPipeline-2012-10-29.yml +422 -0
  14. data/lib/aws/api_config/DynamoDB-2011-12-05.yml +1160 -0
  15. data/lib/aws/api_config/EC2-2013-02-01.yml +4368 -0
  16. data/lib/aws/api_config/ELB-2012-06-01.yml +597 -0
  17. data/lib/aws/api_config/EMR-2009-03-31.yml +370 -0
  18. data/lib/aws/api_config/ElastiCache-2012-03-09.yml +777 -0
  19. data/lib/aws/api_config/ElastiCache-2012-11-15.yml +979 -0
  20. data/lib/aws/api_config/ElasticBeanstalk-2010-12-01.yml +823 -0
  21. data/lib/aws/api_config/ElasticTranscoder-2012-09-25.yml +1036 -0
  22. data/lib/aws/api_config/Glacier-2012-06-01.yml +618 -0
  23. data/lib/aws/api_config/IAM-2010-05-08.yml +1222 -0
  24. data/lib/aws/api_config/ImportExport-2010-06-01.yml +109 -0
  25. data/lib/aws/api_config/OpsWorks-2013-02-18.yml +1463 -0
  26. data/lib/aws/api_config/RDS-2012-09-17.yml +1861 -0
  27. data/lib/aws/api_config/RDS-2013-02-12.yml +2377 -0
  28. data/lib/aws/api_config/Redshift-2012-12-01.yml +1149 -0
  29. data/lib/aws/api_config/Route53-2012-02-29.yml +380 -0
  30. data/lib/aws/api_config/Route53-2012-12-12.yml +547 -0
  31. data/lib/aws/api_config/SNS-2010-03-31.yml +249 -0
  32. data/lib/aws/api_config/SQS-2012-11-05.yml +317 -0
  33. data/lib/aws/api_config/STS-2011-06-15.yml +81 -0
  34. data/lib/aws/api_config/SimpleDB-2009-04-15.yml +306 -0
  35. data/lib/aws/api_config/SimpleEmailService-2010-12-01.yml +346 -0
  36. data/lib/aws/api_config/SimpleWorkflow-2012-01-25.yml +2358 -0
  37. data/lib/aws/api_config/StorageGateway-2012-06-30.yml +748 -0
  38. data/lib/aws/auto_scaling.rb +164 -0
  39. data/lib/aws/auto_scaling/activity.rb +102 -0
  40. data/lib/aws/auto_scaling/activity_collection.rb +82 -0
  41. data/lib/aws/auto_scaling/client.rb +521 -0
  42. data/lib/aws/auto_scaling/config.rb +18 -0
  43. data/lib/aws/auto_scaling/errors.rb +22 -0
  44. data/lib/aws/auto_scaling/group.rb +420 -0
  45. data/lib/aws/auto_scaling/group_collection.rb +96 -0
  46. data/lib/aws/auto_scaling/group_options.rb +146 -0
  47. data/lib/aws/auto_scaling/instance.rb +192 -0
  48. data/lib/aws/auto_scaling/instance_collection.rb +63 -0
  49. data/lib/aws/auto_scaling/launch_configuration.rb +158 -0
  50. data/lib/aws/auto_scaling/launch_configuration_collection.rb +154 -0
  51. data/lib/aws/auto_scaling/notification_configuration.rb +89 -0
  52. data/lib/aws/auto_scaling/notification_configuration_collection.rb +184 -0
  53. data/lib/aws/auto_scaling/request.rb +29 -0
  54. data/lib/aws/auto_scaling/scaling_policy.rb +142 -0
  55. data/lib/aws/auto_scaling/scaling_policy_collection.rb +72 -0
  56. data/lib/aws/auto_scaling/scaling_policy_options.rb +64 -0
  57. data/lib/aws/auto_scaling/scheduled_action.rb +145 -0
  58. data/lib/aws/auto_scaling/scheduled_action_collection.rb +195 -0
  59. data/lib/aws/auto_scaling/tag.rb +59 -0
  60. data/lib/aws/auto_scaling/tag_collection.rb +112 -0
  61. data/lib/aws/cloud_formation.rb +272 -0
  62. data/lib/aws/cloud_formation/client.rb +369 -0
  63. data/lib/aws/cloud_formation/config.rb +18 -0
  64. data/lib/aws/cloud_formation/errors.rb +22 -0
  65. data/lib/aws/cloud_formation/request.rb +29 -0
  66. data/lib/aws/cloud_formation/stack.rb +255 -0
  67. data/lib/aws/cloud_formation/stack_collection.rb +209 -0
  68. data/lib/aws/cloud_formation/stack_event.rb +75 -0
  69. data/lib/aws/cloud_formation/stack_event_collection.rb +47 -0
  70. data/lib/aws/cloud_formation/stack_options.rb +72 -0
  71. data/lib/aws/cloud_formation/stack_output.rb +53 -0
  72. data/lib/aws/cloud_formation/stack_resource.rb +117 -0
  73. data/lib/aws/cloud_formation/stack_resource_collection.rb +84 -0
  74. data/lib/aws/cloud_formation/stack_resource_summary_collection.rb +64 -0
  75. data/lib/aws/cloud_formation/stack_summary_collection.rb +123 -0
  76. data/lib/aws/cloud_front.rb +73 -0
  77. data/lib/aws/cloud_front/client.rb +1307 -0
  78. data/lib/aws/cloud_front/config.rb +18 -0
  79. data/lib/aws/cloud_front/errors.rb +22 -0
  80. data/lib/aws/cloud_front/request.rb +44 -0
  81. data/lib/aws/cloud_search.rb +74 -0
  82. data/lib/aws/cloud_search/client.rb +558 -0
  83. data/lib/aws/cloud_search/config.rb +18 -0
  84. data/lib/aws/cloud_search/errors.rb +22 -0
  85. data/lib/aws/cloud_search/request.rb +23 -0
  86. data/lib/aws/cloud_watch.rb +119 -0
  87. data/lib/aws/cloud_watch/alarm.rb +272 -0
  88. data/lib/aws/cloud_watch/alarm_collection.rb +153 -0
  89. data/lib/aws/cloud_watch/alarm_history_item.rb +50 -0
  90. data/lib/aws/cloud_watch/alarm_history_item_collection.rb +84 -0
  91. data/lib/aws/cloud_watch/client.rb +247 -0
  92. data/lib/aws/cloud_watch/config.rb +18 -0
  93. data/lib/aws/cloud_watch/errors.rb +22 -0
  94. data/lib/aws/cloud_watch/metric.rb +135 -0
  95. data/lib/aws/cloud_watch/metric_alarm_collection.rb +160 -0
  96. data/lib/aws/cloud_watch/metric_collection.rb +131 -0
  97. data/lib/aws/cloud_watch/metric_statistics.rb +69 -0
  98. data/lib/aws/cloud_watch/request.rb +23 -0
  99. data/lib/aws/core.rb +587 -0
  100. data/lib/aws/core/async_handle.rb +90 -0
  101. data/lib/aws/core/autoloader.rb +64 -0
  102. data/lib/aws/core/cacheable.rb +78 -0
  103. data/lib/aws/core/client.rb +691 -0
  104. data/lib/aws/core/collection.rb +267 -0
  105. data/lib/aws/core/collection/simple.rb +82 -0
  106. data/lib/aws/core/collection/with_limit_and_next_token.rb +71 -0
  107. data/lib/aws/core/collection/with_next_token.rb +97 -0
  108. data/lib/aws/core/configuration.rb +546 -0
  109. data/lib/aws/core/credential_providers.rb +461 -0
  110. data/lib/aws/core/data.rb +247 -0
  111. data/lib/aws/core/http/curb_handler.rb +155 -0
  112. data/lib/aws/core/http/handler.rb +89 -0
  113. data/lib/aws/core/http/net_http_handler.rb +128 -0
  114. data/lib/aws/core/http/request.rb +263 -0
  115. data/lib/aws/core/http/response.rb +81 -0
  116. data/lib/aws/core/indifferent_hash.rb +88 -0
  117. data/lib/aws/core/inflection.rb +56 -0
  118. data/lib/aws/core/json_client.rb +47 -0
  119. data/lib/aws/core/json_parser.rb +76 -0
  120. data/lib/aws/core/json_request_builder.rb +35 -0
  121. data/lib/aws/core/json_response_parser.rb +79 -0
  122. data/lib/aws/core/lazy_error_classes.rb +90 -0
  123. data/lib/aws/core/log_formatter.rb +462 -0
  124. data/lib/aws/core/managed_file.rb +32 -0
  125. data/lib/aws/core/meta_utils.rb +45 -0
  126. data/lib/aws/core/model.rb +57 -0
  127. data/lib/aws/core/naming.rb +30 -0
  128. data/lib/aws/core/option_grammar.rb +735 -0
  129. data/lib/aws/core/options/json_serializer.rb +82 -0
  130. data/lib/aws/core/options/validator.rb +155 -0
  131. data/lib/aws/core/options/xml_serializer.rb +118 -0
  132. data/lib/aws/core/page_result.rb +75 -0
  133. data/lib/aws/core/policy.rb +916 -0
  134. data/lib/aws/core/query_client.rb +41 -0
  135. data/lib/aws/core/query_error_parser.rb +24 -0
  136. data/lib/aws/core/query_request_builder.rb +47 -0
  137. data/lib/aws/core/query_response_parser.rb +35 -0
  138. data/lib/aws/core/resource.rb +413 -0
  139. data/lib/aws/core/resource_cache.rb +40 -0
  140. data/lib/aws/core/response.rb +208 -0
  141. data/lib/aws/core/response_cache.rb +50 -0
  142. data/lib/aws/core/rest_error_parser.rb +24 -0
  143. data/lib/aws/core/rest_json_client.rb +40 -0
  144. data/lib/aws/core/rest_request_builder.rb +146 -0
  145. data/lib/aws/core/rest_response_parser.rb +66 -0
  146. data/lib/aws/core/rest_xml_client.rb +47 -0
  147. data/lib/aws/core/service_interface.rb +61 -0
  148. data/lib/aws/core/signature/version_2.rb +56 -0
  149. data/lib/aws/core/signature/version_3.rb +77 -0
  150. data/lib/aws/core/signature/version_3_https.rb +54 -0
  151. data/lib/aws/core/signature/version_4.rb +135 -0
  152. data/lib/aws/core/signer.rb +46 -0
  153. data/lib/aws/core/uri_escape.rb +44 -0
  154. data/lib/aws/core/xml/frame.rb +244 -0
  155. data/lib/aws/core/xml/frame_stack.rb +85 -0
  156. data/lib/aws/core/xml/grammar.rb +307 -0
  157. data/lib/aws/core/xml/parser.rb +70 -0
  158. data/lib/aws/core/xml/root_frame.rb +65 -0
  159. data/lib/aws/core/xml/sax_handlers/libxml.rb +47 -0
  160. data/lib/aws/core/xml/sax_handlers/nokogiri.rb +55 -0
  161. data/lib/aws/core/xml/sax_handlers/ox.rb +41 -0
  162. data/lib/aws/core/xml/sax_handlers/rexml.rb +43 -0
  163. data/lib/aws/core/xml/stub.rb +123 -0
  164. data/lib/aws/data_pipeline.rb +73 -0
  165. data/lib/aws/data_pipeline/client.rb +339 -0
  166. data/lib/aws/data_pipeline/config.rb +18 -0
  167. data/lib/aws/data_pipeline/errors.rb +20 -0
  168. data/lib/aws/data_pipeline/request.rb +26 -0
  169. data/lib/aws/dynamo_db.rb +206 -0
  170. data/lib/aws/dynamo_db/attribute_collection.rb +461 -0
  171. data/lib/aws/dynamo_db/batch_get.rb +213 -0
  172. data/lib/aws/dynamo_db/batch_write.rb +252 -0
  173. data/lib/aws/dynamo_db/binary.rb +35 -0
  174. data/lib/aws/dynamo_db/client.rb +904 -0
  175. data/lib/aws/dynamo_db/config.rb +24 -0
  176. data/lib/aws/dynamo_db/errors.rb +20 -0
  177. data/lib/aws/dynamo_db/expectations.rb +40 -0
  178. data/lib/aws/dynamo_db/item.rb +133 -0
  179. data/lib/aws/dynamo_db/item_collection.rb +852 -0
  180. data/lib/aws/dynamo_db/item_data.rb +31 -0
  181. data/lib/aws/dynamo_db/keys.rb +41 -0
  182. data/lib/aws/dynamo_db/primary_key_element.rb +48 -0
  183. data/lib/aws/dynamo_db/request.rb +26 -0
  184. data/lib/aws/dynamo_db/resource.rb +33 -0
  185. data/lib/aws/dynamo_db/table.rb +491 -0
  186. data/lib/aws/dynamo_db/table_collection.rb +165 -0
  187. data/lib/aws/dynamo_db/types.rb +111 -0
  188. data/lib/aws/ec2.rb +440 -0
  189. data/lib/aws/ec2/attachment.rb +140 -0
  190. data/lib/aws/ec2/attachment_collection.rb +54 -0
  191. data/lib/aws/ec2/availability_zone.rb +86 -0
  192. data/lib/aws/ec2/availability_zone_collection.rb +43 -0
  193. data/lib/aws/ec2/block_device_mappings.rb +53 -0
  194. data/lib/aws/ec2/client.rb +3621 -0
  195. data/lib/aws/ec2/collection.rb +36 -0
  196. data/lib/aws/ec2/config.rb +18 -0
  197. data/lib/aws/ec2/config_transform.rb +63 -0
  198. data/lib/aws/ec2/customer_gateway.rb +90 -0
  199. data/lib/aws/ec2/customer_gateway_collection.rb +73 -0
  200. data/lib/aws/ec2/dhcp_options.rb +106 -0
  201. data/lib/aws/ec2/dhcp_options_collection.rb +87 -0
  202. data/lib/aws/ec2/elastic_ip.rb +208 -0
  203. data/lib/aws/ec2/elastic_ip_collection.rb +97 -0
  204. data/lib/aws/ec2/errors.rb +32 -0
  205. data/lib/aws/ec2/export_task.rb +120 -0
  206. data/lib/aws/ec2/export_task_collection.rb +67 -0
  207. data/lib/aws/ec2/filtered_collection.rb +89 -0
  208. data/lib/aws/ec2/has_permissions.rb +44 -0
  209. data/lib/aws/ec2/image.rb +264 -0
  210. data/lib/aws/ec2/image_collection.rb +228 -0
  211. data/lib/aws/ec2/instance.rb +796 -0
  212. data/lib/aws/ec2/instance_collection.rb +372 -0
  213. data/lib/aws/ec2/internet_gateway.rb +122 -0
  214. data/lib/aws/ec2/internet_gateway/attachment.rb +78 -0
  215. data/lib/aws/ec2/internet_gateway_collection.rb +54 -0
  216. data/lib/aws/ec2/key_pair.rb +82 -0
  217. data/lib/aws/ec2/key_pair_collection.rb +99 -0
  218. data/lib/aws/ec2/network_acl.rb +256 -0
  219. data/lib/aws/ec2/network_acl/association.rb +56 -0
  220. data/lib/aws/ec2/network_acl/entry.rb +147 -0
  221. data/lib/aws/ec2/network_acl_collection.rb +64 -0
  222. data/lib/aws/ec2/network_interface.rb +228 -0
  223. data/lib/aws/ec2/network_interface/attachment.rb +100 -0
  224. data/lib/aws/ec2/network_interface_collection.rb +103 -0
  225. data/lib/aws/ec2/permission_collection.rb +174 -0
  226. data/lib/aws/ec2/region.rb +106 -0
  227. data/lib/aws/ec2/region_collection.rb +51 -0
  228. data/lib/aws/ec2/request.rb +21 -0
  229. data/lib/aws/ec2/reserved_instances.rb +56 -0
  230. data/lib/aws/ec2/reserved_instances_collection.rb +40 -0
  231. data/lib/aws/ec2/reserved_instances_offering.rb +60 -0
  232. data/lib/aws/ec2/reserved_instances_offering_collection.rb +39 -0
  233. data/lib/aws/ec2/resource.rb +161 -0
  234. data/lib/aws/ec2/resource_tag_collection.rb +211 -0
  235. data/lib/aws/ec2/route_table.rb +205 -0
  236. data/lib/aws/ec2/route_table/association.rb +119 -0
  237. data/lib/aws/ec2/route_table/route.rb +119 -0
  238. data/lib/aws/ec2/route_table_collection.rb +72 -0
  239. data/lib/aws/ec2/security_group.rb +484 -0
  240. data/lib/aws/ec2/security_group/ip_permission.rb +135 -0
  241. data/lib/aws/ec2/security_group/ip_permission_collection.rb +82 -0
  242. data/lib/aws/ec2/security_group_collection.rb +135 -0
  243. data/lib/aws/ec2/snapshot.rb +143 -0
  244. data/lib/aws/ec2/snapshot_collection.rb +132 -0
  245. data/lib/aws/ec2/subnet.rb +161 -0
  246. data/lib/aws/ec2/subnet_collection.rb +115 -0
  247. data/lib/aws/ec2/tag.rb +81 -0
  248. data/lib/aws/ec2/tag_collection.rb +107 -0
  249. data/lib/aws/ec2/tagged_collection.rb +53 -0
  250. data/lib/aws/ec2/tagged_item.rb +85 -0
  251. data/lib/aws/ec2/volume.rb +174 -0
  252. data/lib/aws/ec2/volume_collection.rb +101 -0
  253. data/lib/aws/ec2/vpc.rb +166 -0
  254. data/lib/aws/ec2/vpc_collection.rb +70 -0
  255. data/lib/aws/ec2/vpn_connection.rb +99 -0
  256. data/lib/aws/ec2/vpn_connection/telemetry.rb +49 -0
  257. data/lib/aws/ec2/vpn_connection_collection.rb +96 -0
  258. data/lib/aws/ec2/vpn_gateway.rb +123 -0
  259. data/lib/aws/ec2/vpn_gateway/attachment.rb +45 -0
  260. data/lib/aws/ec2/vpn_gateway_collection.rb +77 -0
  261. data/lib/aws/elastic_beanstalk.rb +50 -0
  262. data/lib/aws/elastic_beanstalk/client.rb +867 -0
  263. data/lib/aws/elastic_beanstalk/config.rb +18 -0
  264. data/lib/aws/elastic_beanstalk/errors.rb +22 -0
  265. data/lib/aws/elastic_beanstalk/request.rb +29 -0
  266. data/lib/aws/elastic_transcoder.rb +30 -0
  267. data/lib/aws/elastic_transcoder/client.rb +672 -0
  268. data/lib/aws/elastic_transcoder/config.rb +18 -0
  269. data/lib/aws/elastic_transcoder/errors.rb +23 -0
  270. data/lib/aws/elastic_transcoder/request.rb +30 -0
  271. data/lib/aws/elasticache.rb +50 -0
  272. data/lib/aws/elasticache/client.rb +920 -0
  273. data/lib/aws/elasticache/config.rb +18 -0
  274. data/lib/aws/elasticache/errors.rb +22 -0
  275. data/lib/aws/elasticache/request.rb +23 -0
  276. data/lib/aws/elb.rb +67 -0
  277. data/lib/aws/elb/availability_zone_collection.rb +138 -0
  278. data/lib/aws/elb/backend_server_policy_collection.rb +139 -0
  279. data/lib/aws/elb/client.rb +500 -0
  280. data/lib/aws/elb/config.rb +18 -0
  281. data/lib/aws/elb/errors.rb +26 -0
  282. data/lib/aws/elb/instance_collection.rb +173 -0
  283. data/lib/aws/elb/listener.rb +190 -0
  284. data/lib/aws/elb/listener_collection.rb +113 -0
  285. data/lib/aws/elb/listener_opts.rb +45 -0
  286. data/lib/aws/elb/load_balancer.rb +281 -0
  287. data/lib/aws/elb/load_balancer_collection.rb +134 -0
  288. data/lib/aws/elb/load_balancer_policy.rb +93 -0
  289. data/lib/aws/elb/load_balancer_policy_collection.rb +208 -0
  290. data/lib/aws/elb/request.rb +29 -0
  291. data/lib/aws/emr.rb +86 -0
  292. data/lib/aws/emr/client.rb +330 -0
  293. data/lib/aws/emr/config.rb +18 -0
  294. data/lib/aws/emr/errors.rb +22 -0
  295. data/lib/aws/emr/instance_group.rb +138 -0
  296. data/lib/aws/emr/instance_group_collection.rb +82 -0
  297. data/lib/aws/emr/job_flow.rb +306 -0
  298. data/lib/aws/emr/job_flow_collection.rb +185 -0
  299. data/lib/aws/emr/request.rb +23 -0
  300. data/lib/aws/errors.rb +162 -0
  301. data/lib/aws/glacier.rb +80 -0
  302. data/lib/aws/glacier/archive.rb +56 -0
  303. data/lib/aws/glacier/archive_collection.rb +146 -0
  304. data/lib/aws/glacier/client.rb +286 -0
  305. data/lib/aws/glacier/config.rb +19 -0
  306. data/lib/aws/glacier/errors.rb +22 -0
  307. data/lib/aws/glacier/request.rb +34 -0
  308. data/lib/aws/glacier/resource.rb +30 -0
  309. data/lib/aws/glacier/vault.rb +145 -0
  310. data/lib/aws/glacier/vault_collection.rb +75 -0
  311. data/lib/aws/glacier/vault_notification_configuration.rb +29 -0
  312. data/lib/aws/iam.rb +420 -0
  313. data/lib/aws/iam/access_key.rb +180 -0
  314. data/lib/aws/iam/access_key_collection.rb +128 -0
  315. data/lib/aws/iam/account_alias_collection.rb +79 -0
  316. data/lib/aws/iam/client.rb +1092 -0
  317. data/lib/aws/iam/collection.rb +83 -0
  318. data/lib/aws/iam/config.rb +18 -0
  319. data/lib/aws/iam/errors.rb +22 -0
  320. data/lib/aws/iam/group.rb +111 -0
  321. data/lib/aws/iam/group_collection.rb +132 -0
  322. data/lib/aws/iam/group_policy_collection.rb +47 -0
  323. data/lib/aws/iam/group_user_collection.rb +84 -0
  324. data/lib/aws/iam/login_profile.rb +99 -0
  325. data/lib/aws/iam/mfa_device.rb +52 -0
  326. data/lib/aws/iam/mfa_device_collection.rb +127 -0
  327. data/lib/aws/iam/policy.rb +46 -0
  328. data/lib/aws/iam/policy_collection.rb +188 -0
  329. data/lib/aws/iam/request.rb +29 -0
  330. data/lib/aws/iam/resource.rb +62 -0
  331. data/lib/aws/iam/server_certificate.rb +141 -0
  332. data/lib/aws/iam/server_certificate_collection.rb +138 -0
  333. data/lib/aws/iam/signing_certificate.rb +169 -0
  334. data/lib/aws/iam/signing_certificate_collection.rb +131 -0
  335. data/lib/aws/iam/user.rb +205 -0
  336. data/lib/aws/iam/user_collection.rb +133 -0
  337. data/lib/aws/iam/user_group_collection.rb +98 -0
  338. data/lib/aws/iam/user_policy.rb +90 -0
  339. data/lib/aws/iam/user_policy_collection.rb +45 -0
  340. data/lib/aws/iam/virtual_mfa_device.rb +139 -0
  341. data/lib/aws/iam/virtual_mfa_device_collection.rb +73 -0
  342. data/lib/aws/import_export.rb +73 -0
  343. data/lib/aws/import_export/client.rb +109 -0
  344. data/lib/aws/import_export/config.rb +19 -0
  345. data/lib/aws/import_export/errors.rb +22 -0
  346. data/lib/aws/import_export/request.rb +23 -0
  347. data/lib/aws/ops_works.rb +30 -0
  348. data/lib/aws/ops_works/client.rb +713 -0
  349. data/lib/aws/ops_works/config.rb +18 -0
  350. data/lib/aws/ops_works/errors.rb +20 -0
  351. data/lib/aws/ops_works/request.rb +27 -0
  352. data/lib/aws/rails.rb +195 -0
  353. data/lib/aws/rds.rb +71 -0
  354. data/lib/aws/rds/client.rb +2228 -0
  355. data/lib/aws/rds/config.rb +18 -0
  356. data/lib/aws/rds/db_instance.rb +205 -0
  357. data/lib/aws/rds/db_instance_collection.rb +75 -0
  358. data/lib/aws/rds/db_snapshot.rb +163 -0
  359. data/lib/aws/rds/db_snapshot_collection.rb +89 -0
  360. data/lib/aws/rds/errors.rb +22 -0
  361. data/lib/aws/rds/request.rb +23 -0
  362. data/lib/aws/record.rb +116 -0
  363. data/lib/aws/record/abstract_base.rb +701 -0
  364. data/lib/aws/record/attributes.rb +384 -0
  365. data/lib/aws/record/conversion.rb +38 -0
  366. data/lib/aws/record/dirty_tracking.rb +285 -0
  367. data/lib/aws/record/errors.rb +143 -0
  368. data/lib/aws/record/exceptions.rb +48 -0
  369. data/lib/aws/record/hash_model.rb +161 -0
  370. data/lib/aws/record/hash_model/attributes.rb +197 -0
  371. data/lib/aws/record/hash_model/finder_methods.rb +172 -0
  372. data/lib/aws/record/hash_model/scope.rb +108 -0
  373. data/lib/aws/record/model.rb +427 -0
  374. data/lib/aws/record/model/attributes.rb +379 -0
  375. data/lib/aws/record/model/finder_methods.rb +232 -0
  376. data/lib/aws/record/model/scope.rb +213 -0
  377. data/lib/aws/record/naming.rb +31 -0
  378. data/lib/aws/record/scope.rb +199 -0
  379. data/lib/aws/record/validations.rb +712 -0
  380. data/lib/aws/record/validator.rb +246 -0
  381. data/lib/aws/record/validators/acceptance.rb +51 -0
  382. data/lib/aws/record/validators/block.rb +38 -0
  383. data/lib/aws/record/validators/confirmation.rb +43 -0
  384. data/lib/aws/record/validators/count.rb +108 -0
  385. data/lib/aws/record/validators/exclusion.rb +43 -0
  386. data/lib/aws/record/validators/format.rb +57 -0
  387. data/lib/aws/record/validators/inclusion.rb +56 -0
  388. data/lib/aws/record/validators/length.rb +107 -0
  389. data/lib/aws/record/validators/method.rb +33 -0
  390. data/lib/aws/record/validators/numericality.rb +138 -0
  391. data/lib/aws/record/validators/presence.rb +45 -0
  392. data/lib/aws/redshift.rb +52 -0
  393. data/lib/aws/redshift/client.rb +1291 -0
  394. data/lib/aws/redshift/config.rb +18 -0
  395. data/lib/aws/redshift/errors.rb +22 -0
  396. data/lib/aws/redshift/request.rb +29 -0
  397. data/lib/aws/route_53.rb +87 -0
  398. data/lib/aws/route_53/change_batch.rb +159 -0
  399. data/lib/aws/route_53/change_info.rb +72 -0
  400. data/lib/aws/route_53/client.rb +387 -0
  401. data/lib/aws/route_53/config.rb +18 -0
  402. data/lib/aws/route_53/errors.rb +22 -0
  403. data/lib/aws/route_53/hosted_zone.rb +111 -0
  404. data/lib/aws/route_53/hosted_zone_collection.rb +100 -0
  405. data/lib/aws/route_53/request.rb +23 -0
  406. data/lib/aws/route_53/resource_record_set.rb +237 -0
  407. data/lib/aws/route_53/resource_record_set_collection.rb +110 -0
  408. data/lib/aws/s3.rb +155 -0
  409. data/lib/aws/s3/access_control_list.rb +257 -0
  410. data/lib/aws/s3/acl_object.rb +264 -0
  411. data/lib/aws/s3/acl_options.rb +204 -0
  412. data/lib/aws/s3/bucket.rb +742 -0
  413. data/lib/aws/s3/bucket_collection.rb +160 -0
  414. data/lib/aws/s3/bucket_lifecycle_configuration.rb +458 -0
  415. data/lib/aws/s3/bucket_tag_collection.rb +109 -0
  416. data/lib/aws/s3/bucket_version_collection.rb +77 -0
  417. data/lib/aws/s3/cipher_io.rb +119 -0
  418. data/lib/aws/s3/client.rb +1700 -0
  419. data/lib/aws/s3/client/xml.rb +231 -0
  420. data/lib/aws/s3/config.rb +36 -0
  421. data/lib/aws/s3/cors_rule.rb +106 -0
  422. data/lib/aws/s3/cors_rule_collection.rb +192 -0
  423. data/lib/aws/s3/data_options.rb +185 -0
  424. data/lib/aws/s3/encryption_utils.rb +139 -0
  425. data/lib/aws/s3/errors.rb +94 -0
  426. data/lib/aws/s3/multipart_upload.rb +320 -0
  427. data/lib/aws/s3/multipart_upload_collection.rb +68 -0
  428. data/lib/aws/s3/object_collection.rb +355 -0
  429. data/lib/aws/s3/object_metadata.rb +96 -0
  430. data/lib/aws/s3/object_upload_collection.rb +77 -0
  431. data/lib/aws/s3/object_version.rb +148 -0
  432. data/lib/aws/s3/object_version_collection.rb +89 -0
  433. data/lib/aws/s3/paginated_collection.rb +75 -0
  434. data/lib/aws/s3/policy.rb +74 -0
  435. data/lib/aws/s3/prefix_and_delimiter_collection.rb +47 -0
  436. data/lib/aws/s3/prefixed_collection.rb +81 -0
  437. data/lib/aws/s3/presigned_post.rb +555 -0
  438. data/lib/aws/s3/request.rb +201 -0
  439. data/lib/aws/s3/s3_object.rb +1690 -0
  440. data/lib/aws/s3/tree.rb +118 -0
  441. data/lib/aws/s3/tree/branch_node.rb +68 -0
  442. data/lib/aws/s3/tree/child_collection.rb +104 -0
  443. data/lib/aws/s3/tree/leaf_node.rb +94 -0
  444. data/lib/aws/s3/tree/node.rb +22 -0
  445. data/lib/aws/s3/tree/parent.rb +87 -0
  446. data/lib/aws/s3/uploaded_part.rb +80 -0
  447. data/lib/aws/s3/uploaded_part_collection.rb +84 -0
  448. data/lib/aws/s3/website_configuration.rb +102 -0
  449. data/lib/aws/simple_db.rb +219 -0
  450. data/lib/aws/simple_db/attribute.rb +154 -0
  451. data/lib/aws/simple_db/attribute_collection.rb +231 -0
  452. data/lib/aws/simple_db/client.rb +287 -0
  453. data/lib/aws/simple_db/config.rb +20 -0
  454. data/lib/aws/simple_db/consistent_read_option.rb +42 -0
  455. data/lib/aws/simple_db/delete_attributes.rb +62 -0
  456. data/lib/aws/simple_db/domain.rb +121 -0
  457. data/lib/aws/simple_db/domain_collection.rb +86 -0
  458. data/lib/aws/simple_db/domain_metadata.rb +110 -0
  459. data/lib/aws/simple_db/errors.rb +55 -0
  460. data/lib/aws/simple_db/expect_condition_option.rb +45 -0
  461. data/lib/aws/simple_db/item.rb +93 -0
  462. data/lib/aws/simple_db/item_collection.rb +649 -0
  463. data/lib/aws/simple_db/item_data.rb +73 -0
  464. data/lib/aws/simple_db/put_attributes.rb +60 -0
  465. data/lib/aws/simple_db/request.rb +23 -0
  466. data/lib/aws/simple_email_service.rb +428 -0
  467. data/lib/aws/simple_email_service/client.rb +276 -0
  468. data/lib/aws/simple_email_service/config.rb +19 -0
  469. data/lib/aws/simple_email_service/email_address_collection.rb +69 -0
  470. data/lib/aws/simple_email_service/errors.rb +22 -0
  471. data/lib/aws/simple_email_service/identity.rb +209 -0
  472. data/lib/aws/simple_email_service/identity_collection.rb +81 -0
  473. data/lib/aws/simple_email_service/quotas.rb +64 -0
  474. data/lib/aws/simple_email_service/request.rb +27 -0
  475. data/lib/aws/simple_workflow.rb +228 -0
  476. data/lib/aws/simple_workflow/activity_task.rb +173 -0
  477. data/lib/aws/simple_workflow/activity_task_collection.rb +123 -0
  478. data/lib/aws/simple_workflow/activity_type.rb +131 -0
  479. data/lib/aws/simple_workflow/activity_type_collection.rb +93 -0
  480. data/lib/aws/simple_workflow/client.rb +1204 -0
  481. data/lib/aws/simple_workflow/config.rb +18 -0
  482. data/lib/aws/simple_workflow/count.rb +49 -0
  483. data/lib/aws/simple_workflow/decision_task.rb +603 -0
  484. data/lib/aws/simple_workflow/decision_task_collection.rb +225 -0
  485. data/lib/aws/simple_workflow/domain.rb +122 -0
  486. data/lib/aws/simple_workflow/domain_collection.rb +169 -0
  487. data/lib/aws/simple_workflow/errors.rb +20 -0
  488. data/lib/aws/simple_workflow/history_event.rb +276 -0
  489. data/lib/aws/simple_workflow/history_event_collection.rb +76 -0
  490. data/lib/aws/simple_workflow/option_formatters.rb +82 -0
  491. data/lib/aws/simple_workflow/request.rb +33 -0
  492. data/lib/aws/simple_workflow/resource.rb +94 -0
  493. data/lib/aws/simple_workflow/type.rb +89 -0
  494. data/lib/aws/simple_workflow/type_collection.rb +140 -0
  495. data/lib/aws/simple_workflow/workflow_execution.rb +386 -0
  496. data/lib/aws/simple_workflow/workflow_execution_collection.rb +617 -0
  497. data/lib/aws/simple_workflow/workflow_type.rb +177 -0
  498. data/lib/aws/simple_workflow/workflow_type_collection.rb +91 -0
  499. data/lib/aws/sns.rb +76 -0
  500. data/lib/aws/sns/client.rb +266 -0
  501. data/lib/aws/sns/config.rb +18 -0
  502. data/lib/aws/sns/errors.rb +22 -0
  503. data/lib/aws/sns/has_delivery_policy.rb +68 -0
  504. data/lib/aws/sns/policy.rb +47 -0
  505. data/lib/aws/sns/request.rb +23 -0
  506. data/lib/aws/sns/subscription.rb +144 -0
  507. data/lib/aws/sns/subscription_collection.rb +78 -0
  508. data/lib/aws/sns/topic.rb +403 -0
  509. data/lib/aws/sns/topic_collection.rb +62 -0
  510. data/lib/aws/sns/topic_subscription_collection.rb +54 -0
  511. data/lib/aws/sqs.rb +81 -0
  512. data/lib/aws/sqs/client.rb +258 -0
  513. data/lib/aws/sqs/config.rb +18 -0
  514. data/lib/aws/sqs/errors.rb +101 -0
  515. data/lib/aws/sqs/policy.rb +48 -0
  516. data/lib/aws/sqs/queue.rb +764 -0
  517. data/lib/aws/sqs/queue_collection.rb +174 -0
  518. data/lib/aws/sqs/received_message.rb +181 -0
  519. data/lib/aws/sqs/received_sns_message.rb +116 -0
  520. data/lib/aws/sqs/request.rb +67 -0
  521. data/lib/aws/storage_gateway.rb +73 -0
  522. data/lib/aws/storage_gateway/client.rb +472 -0
  523. data/lib/aws/storage_gateway/config.rb +18 -0
  524. data/lib/aws/storage_gateway/errors.rb +22 -0
  525. data/lib/aws/storage_gateway/request.rb +28 -0
  526. data/lib/aws/sts.rb +163 -0
  527. data/lib/aws/sts/client.rb +157 -0
  528. data/lib/aws/sts/config.rb +18 -0
  529. data/lib/aws/sts/errors.rb +22 -0
  530. data/lib/aws/sts/federated_session.rb +56 -0
  531. data/lib/aws/sts/policy.rb +30 -0
  532. data/lib/aws/sts/request.rb +29 -0
  533. data/lib/aws/sts/session.rb +48 -0
  534. data/lib/aws/version.rb +18 -0
  535. data/lib/net/http/connection_pool.rb +226 -0
  536. data/lib/net/http/connection_pool/connection.rb +189 -0
  537. data/lib/net/http/connection_pool/session.rb +126 -0
  538. data/rails/init.rb +15 -0
  539. metadata +632 -0
@@ -0,0 +1,110 @@
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 'time'
15
+
16
+ module AWS
17
+ class Route53
18
+
19
+ # = Create new resource record set
20
+ #
21
+ # rrsets = AWS::Route53::HostedZone.new(hosted_zone_id).rrsets
22
+ # rrset = rrsets.create('foo.example.com.', 'A', :ttl => 300, :resource_records => [{:value => '127.0.0.1'}])
23
+ #
24
+ # = Find existing resource record set
25
+ #
26
+ # rrsets = AWS::Route53::HostedZone.new(hosted_zone_id).rrsets
27
+ # rrset = rrsets['foo.example.com.', 'A']
28
+ #
29
+ class ResourceRecordSetCollection
30
+
31
+ include Core::Collection::WithLimitAndNextToken
32
+
33
+ # @private
34
+ def initialize hosted_zone_id, options = {}
35
+ @hosted_zone_id = hosted_zone_id
36
+ @filters = options[:filters] || {}
37
+ super
38
+ end
39
+
40
+ # @return [String]
41
+ attr_reader :hosted_zone_id
42
+
43
+ # Find resource record set by its name, type and identifier.
44
+ # @param [String] name
45
+ # @param [String] type
46
+ # @param [String] set_identifier
47
+ # @return [ResourceRecordSet]
48
+ def [] name, type, set_identifier = nil
49
+ ResourceRecordSet.new(name, type, :set_identifier => set_identifier, :hosted_zone_id => hosted_zone_id, :config => config)
50
+ end
51
+
52
+ # Create new resource record set.
53
+ # @param [String] name
54
+ # @param [String] type
55
+ # @param [Hash] options
56
+ # @return [ResourceRecordSet]
57
+ def create name, type, options = {}
58
+ batch = ChangeBatch.new(hosted_zone_id, :comment => options[:comment], :config => config)
59
+ batch << CreateRequest.new(name, type, options)
60
+
61
+ change_info = batch.call()
62
+ if change_info
63
+ ResourceRecordSet.new(name,
64
+ type,
65
+ :set_identifier => options[:set_identifier],
66
+ :change_info => change_info,
67
+ :hosted_zone_id => hosted_zone_id,
68
+ :config => config)
69
+ end
70
+ end
71
+
72
+ private
73
+
74
+ def _each_item next_token, limit, options = {}, &block
75
+
76
+ options = @filters.merge(options)
77
+
78
+ options[:start_record_name] = next_token[:next_record_name] if next_token and next_token[:next_record_name]
79
+ options[:start_record_type] = next_token[:next_record_type] if next_token and next_token[:next_record_type]
80
+ options[:start_record_identifier] = next_token[:next_record_identifier] if next_token and next_token[:next_record_identifier]
81
+ options[:maxitems] = limit if limit
82
+
83
+ options[:hosted_zone_id] = hosted_zone_id
84
+
85
+ resp = client.list_resource_record_sets(options)
86
+ resp.data[:resource_record_sets].each do |details|
87
+ rrset = ResourceRecordSet.new_from(
88
+ :list_resource_record_sets,
89
+ details,
90
+ details[:name],
91
+ details[:type],
92
+ :set_identifier => details[:set_identifier],
93
+ :hosted_zone_id => hosted_zone_id, :config => config)
94
+
95
+ yield(rrset)
96
+
97
+ end
98
+
99
+ if resp.data[:is_truncated]
100
+ {
101
+ :next_record_name => resp.data[:next_record_name],
102
+ :next_record_type => resp.data[:next_record_type],
103
+ :next_record_identifier => resp.data[:next_record_identifier],
104
+ }
105
+ end
106
+ end
107
+
108
+ end
109
+ end
110
+ end
@@ -0,0 +1,155 @@
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 'aws/core'
15
+ require 'aws/s3/config'
16
+
17
+ module AWS
18
+
19
+ # Provides an expressive, object-oriented interface to Amazon S3.
20
+ #
21
+ # To use Amazon S3 you must first
22
+ # {sign up here}[http://aws.amazon.com/s3/].
23
+ #
24
+ # For more information about Amazon S3, see:
25
+ #
26
+ # * {Amazon S3}[http://aws.amazon.com/s3/]
27
+ # * {Amazon S3 Documentation}[http://aws.amazon.com/documentation/s3/]
28
+ #
29
+ # = Credentials
30
+ #
31
+ # You can setup default credentials for all AWS services via
32
+ # AWS.config:
33
+ #
34
+ # AWS.config(
35
+ # :access_key_id => 'YOUR_ACCESS_KEY_ID',
36
+ # :secret_access_key => 'YOUR_SECRET_ACCESS_KEY')
37
+ #
38
+ # Or you can set them directly on the S3 interface:
39
+ #
40
+ # s3 = AWS::S3.new(
41
+ # :access_key_id => 'YOUR_ACCESS_KEY_ID',
42
+ # :secret_access_key => 'YOUR_SECRET_ACCESS_KEY')
43
+ #
44
+ # = Buckets
45
+ #
46
+ # Before you can upload files to S3, you need to create a bucket.
47
+ #
48
+ # s3 = AWS::S3.new
49
+ # bucket = s3.buckets.create('my-bucket')
50
+ #
51
+ # If a bucket already exists, you can get a reference to the bucket.
52
+ #
53
+ # bucket = s3.buckets['my-bucket'] # no request made
54
+ #
55
+ # You can also enumerate all buckets in your account.
56
+ #
57
+ # s3.buckets.each do |bucket|
58
+ # puts bucket.name
59
+ # end
60
+ #
61
+ # See {BucketCollection} and {Bucket} for more information on working
62
+ # with buckets.
63
+ #
64
+ # = Objects
65
+ #
66
+ # Buckets contain objects. Each object in a bucket has a unique key.
67
+ #
68
+ # == Getting an Object
69
+ #
70
+ # If the object already exists, you can get a reference to the object.
71
+ #
72
+ # # makes no request, returns an AWS::S3::S3Object
73
+ # obj = bucket.objects['key']
74
+ #
75
+ # == Reading and Writing an Object
76
+ #
77
+ # The example above returns an {S3Object}. You call {S3Object#write} and
78
+ # {S3Object#read} to upload to and download from S3 respectively.
79
+ #
80
+ # # streaming upload a file to S3
81
+ # obj.write(Pathname.new('/path/to/file.txt'))
82
+ #
83
+ # # streaming download from S3 to a file on disk
84
+ # File.open('file.txt', 'w') do |file|
85
+ # obj.read do |chunk|
86
+ # file.write(chunk)
87
+ # end
88
+ # end
89
+ #
90
+ # == Enumerating Objects
91
+ #
92
+ # You can enumerate objects in your buckets.
93
+ #
94
+ # # enumerate ALL objects in the bucket (even if the bucket contains
95
+ # # more than 1k objects)
96
+ # bucket.objects.each do |obj|
97
+ # puts obj.key
98
+ # end
99
+ #
100
+ # # enumerate at most 20 objects with the given prefix
101
+ # bucket.objects.with_prefix('photos/').each(:limit => 20) do |photo|
102
+ # puts photo.key
103
+ # end
104
+ #
105
+ # See {ObjectCollection} and {S3Object} for more information on working
106
+ # with objects.
107
+ #
108
+ class S3
109
+
110
+ AWS.register_autoloads(self) do
111
+ autoload :AccessControlList, 'access_control_list'
112
+ autoload :ACLObject, 'acl_object'
113
+ autoload :ACLOptions, 'acl_options'
114
+ autoload :Bucket, 'bucket'
115
+ autoload :BucketCollection, 'bucket_collection'
116
+ autoload :BucketTagCollection, 'bucket_tag_collection'
117
+ autoload :BucketLifecycleConfiguration, 'bucket_lifecycle_configuration'
118
+ autoload :BucketVersionCollection, 'bucket_version_collection'
119
+ autoload :Client, 'client'
120
+ autoload :CORSRule, 'cors_rule'
121
+ autoload :CORSRuleCollection, 'cors_rule_collection'
122
+ autoload :DataOptions, 'data_options'
123
+ autoload :EncryptionUtils, 'encryption_utils'
124
+ autoload :CipherIO, 'cipher_io'
125
+ autoload :Errors, 'errors'
126
+ autoload :MultipartUpload, 'multipart_upload'
127
+ autoload :MultipartUploadCollection, 'multipart_upload_collection'
128
+ autoload :ObjectCollection, 'object_collection'
129
+ autoload :ObjectMetadata, 'object_metadata'
130
+ autoload :ObjectUploadCollection, 'object_upload_collection'
131
+ autoload :ObjectVersion, 'object_version'
132
+ autoload :ObjectVersionCollection, 'object_version_collection'
133
+ autoload :PaginatedCollection, 'paginated_collection'
134
+ autoload :Policy, 'policy'
135
+ autoload :PrefixAndDelimiterCollection, 'prefix_and_delimiter_collection'
136
+ autoload :PrefixedCollection, 'prefixed_collection'
137
+ autoload :PresignedPost, 'presigned_post'
138
+ autoload :Request, 'request'
139
+ autoload :S3Object, 's3_object'
140
+ autoload :Tree, 'tree'
141
+ autoload :UploadedPart, 'uploaded_part'
142
+ autoload :UploadedPartCollection, 'uploaded_part_collection'
143
+ autoload :WebsiteConfiguration, 'website_configuration'
144
+ end
145
+
146
+ include Core::ServiceInterface
147
+
148
+ # @return [BucketCollection] Returns a collection that represents all
149
+ # buckets in the account.
150
+ def buckets
151
+ BucketCollection.new(:config => @config)
152
+ end
153
+
154
+ end
155
+ end
@@ -0,0 +1,257 @@
1
+ # Copyright 2011-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License"). You
4
+ # may not use this file except in compliance with the License. A copy of
5
+ # the License is located at
6
+ #
7
+ # http://aws.amazon.com/apache2.0/
8
+ #
9
+ # or in the "license" file accompanying this file. This file is
10
+ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11
+ # ANY KIND, either express or implied. See the License for the specific
12
+ # language governing permissions and limitations under the License.
13
+
14
+ module AWS
15
+ class S3
16
+
17
+ # Represents an access control list for S3 objects and buckets. For example:
18
+ #
19
+ # acl = AccessControlList.new
20
+ # acl.grant(:full_control).
21
+ # to(:canonical_user_id => "8a6925ce4adf588a4f21c32aa379004fef")
22
+ # acl.to_xml # => '<AccessControlPolicy>...'
23
+ #
24
+ # You can also construct an AccessControlList from a hash:
25
+ #
26
+ # AccessControlList.new(
27
+ # :owner => { :id => "8a6925ce4adf588a4f21c32aa379004fef" },
28
+ # :grants => [{ :grantee => {
29
+ # :canonical_user_id => "8a6925ce4adf588a4f21c32aa379004fef",
30
+ # },
31
+ # :permission => :full_control }]
32
+ # )
33
+ #
34
+ # @see ACLObject
35
+ #
36
+ # @attr [AccessControlList::Owner] owner The owner of the access
37
+ # control list. You can set this as a hash, for example:
38
+ # acl.owner = { :id => '8a6925ce4adf588a4f21c32aa379004fef' }
39
+ # This attribute is required when setting an ACL.
40
+ #
41
+ # @attr [list of AccessControlList::Grant] grants The list of
42
+ # grants. You can set this as a list of hashes, for example:
43
+ # acl.grants = [{ :grantee => { :canonical_user_id =>
44
+ # "8a6925ce4adf588a4f21c32aa379004fef" },
45
+ # :permission => :full_control }]
46
+ class AccessControlList
47
+
48
+ # Represents an ACL owner. In the default ACL, this is the
49
+ # bucket owner.
50
+ #
51
+ # @attr [String] id The canonical user ID of the ACL owner.
52
+ # This attribute is required when setting an ACL.
53
+ #
54
+ # @attr [String] display_name The display name of the ACL
55
+ # owner. This value is ignored when setting an ACL.
56
+ class Owner
57
+ include ACLObject
58
+
59
+ string_attr "ID", :required => true
60
+ string_attr "DisplayName"
61
+ end
62
+
63
+ # Represents a user who is granted some kind of permission
64
+ # through a Grant. There are three ways to specify a grantee:
65
+ #
66
+ # * You can specify the canonical user ID, for example. When
67
+ # you read an ACL from S3, all grantees will be identified
68
+ # this way, and the display_name attribute will also be provided.
69
+ #
70
+ # Grantee.new(:canonical_user_id => "8a6925ce4adf588a4f21c32aa379004fef")
71
+ #
72
+ # * You can specify the e-mail address of an AWS customer, for example:
73
+ # Grantee.new(:amazon_customer_email => 'foo@example.com')
74
+ #
75
+ # * You can specify a group URI, for example:
76
+ # Grantee.new(:group_uri => 'http://acs.amazonaws.com/groups/global/AllUsers')
77
+ # For more details about group URIs, see:
78
+ # http://docs.amazonwebservices.com/AmazonS3/latest/dev/ACLOverview.html
79
+ #
80
+ # When constructing a grantee, you must provide a value for
81
+ # exactly one of the following attributes:
82
+ #
83
+ # * +amazon_customer_email+
84
+ # * +canonical_user_id+
85
+ # * +group_uri+
86
+ #
87
+ # @attr [String] amazon_customer_email The e-mail address of
88
+ # an AWS customer.
89
+ #
90
+ # @attr [String] canonical_user_id The canonical user ID of an
91
+ # AWS customer.
92
+ #
93
+ # @attr [String] group_uri A URI that identifies a particular
94
+ # group of users.
95
+ #
96
+ # @attr [String] display_name The display name associated with
97
+ # the grantee. This is provided by S3 when reading an ACL.
98
+ class Grantee
99
+ include ACLObject
100
+
101
+ SIGNAL_ATTRIBUTES = [
102
+ :amazon_customer_email,
103
+ :canonical_user_id,
104
+ :group_uri,
105
+ :uri,
106
+ ]
107
+
108
+ string_attr "EmailAddress", :method_name => "amazon_customer_email"
109
+ string_attr "ID", :method_name => "canonical_user_id"
110
+ string_attr "URI", :method_name => "group_uri"
111
+ string_attr "URI", :method_name => "uri"
112
+ string_attr "DisplayName"
113
+
114
+ # (see ACLObject#validate!)
115
+ def validate!
116
+ attr = signal_attribute
117
+ raise "missing amazon_customer_email, canonical_user_id, "+
118
+ "or group_uri" unless attr
119
+ raise "display_name is invalid with #{attr}" if
120
+ attr != :canonical_user_id and display_name
121
+ end
122
+
123
+ # @private
124
+ def stag
125
+ if attr = signal_attribute
126
+ super + " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" +
127
+ " xsi:type=\"#{type_for_attr(attr)}\""
128
+ else
129
+ super
130
+ end
131
+ end
132
+
133
+ # @private
134
+ def signal_attribute
135
+ SIGNAL_ATTRIBUTES.find { |att| send(att) }
136
+ end
137
+
138
+ # @private
139
+ def type_for_attr(attr)
140
+ {
141
+ :amazon_customer_email => "AmazonCustomerByEmail",
142
+ :canonical_user_id => "CanonicalUser",
143
+ :group_uri => "Group",
144
+ :uri => "Group",
145
+ }[attr]
146
+ end
147
+
148
+ end
149
+
150
+ # Represents the permission being granted in a Grant object.
151
+ # Typically you will not need to construct an instance of this
152
+ # class directly.
153
+ # @see Grant#permission
154
+ class Permission
155
+ include ACLObject
156
+
157
+ # The permission expressed as a symbol following Ruby
158
+ # conventions. For example, S3's FULL_CONTROL permission
159
+ # will be returned as +:full_control+.
160
+ attr_reader :name
161
+
162
+ # @private
163
+ def initialize(name)
164
+ raise "expected string or symbol" unless
165
+ name.respond_to?(:to_str) or name.respond_to?(:to_sym)
166
+ @name = name.to_sym
167
+ end
168
+
169
+ def body_xml
170
+ name.to_s.upcase
171
+ end
172
+
173
+ end
174
+
175
+ # Represents a single grant in an ACL. Both +grantee+ and
176
+ # +permission+ are required for each grant when setting an
177
+ # ACL.
178
+ #
179
+ # See
180
+ # http://docs.amazonwebservices.com/AmazonS3/latest/dev/ACLOverview.html
181
+ # for more information on how grantees and permissions are
182
+ # interpreted by S3.
183
+ #
184
+ # @attr [Grantee] grantee The user or users who are granted
185
+ # access according to this grant. You can specify this as a
186
+ # hash:
187
+ # grant.grantee = { :amazon_customer_email => "foo@example.com" }
188
+ #
189
+ # @attr [Permission or Symbol] permission The type of
190
+ # permission that is granted by this grant. Valid values are:
191
+ # * +:read+
192
+ # * +:write+
193
+ # * +:read_acp+
194
+ # * +:write_acp+
195
+ # * +:full_control+
196
+ class Grant
197
+
198
+ include ACLObject
199
+
200
+ object_attr Grantee, :required => true
201
+ object_attr Permission, :required => true, :cast => Symbol
202
+
203
+ end
204
+
205
+ include ACLObject
206
+
207
+ # @private
208
+ def stag
209
+ super()+" xmlns=\"http://s3.amazonaws.com/doc/2006-03-01/\""
210
+ end
211
+
212
+ # @private
213
+ def element_name
214
+ "AccessControlPolicy"
215
+ end
216
+
217
+ class GrantBuilder
218
+
219
+ # @private
220
+ def initialize(acl, grant)
221
+ @acl = acl
222
+ @grant = grant
223
+ end
224
+
225
+ # Specifies the grantee.
226
+ #
227
+ # @param [Grantee or Hash] grantee A Grantee object or hash;
228
+ # for example:
229
+ # acl.grant(:full_control).to(:amazon_customer_email => "foo@example.com")
230
+ def to(grantee)
231
+ @grant.grantee = grantee
232
+ @acl.grants << @grant
233
+ end
234
+
235
+ end
236
+
237
+ # Convenience method for constructing a new grant and adding
238
+ # it to the ACL. Example usage:
239
+ #
240
+ # acl.grants.size # => 0
241
+ # acl.grant(:full_control).
242
+ # to(:canonical_user_id => "8a6925ce4adf588a4f21c32aa379004fef")
243
+ # acl.grants.size # => 1
244
+ #
245
+ # @return [GrantBuilder]
246
+ def grant(permission)
247
+ GrantBuilder.new(self, Grant.new(:permission => permission))
248
+ end
249
+
250
+ object_attr Owner, :required => true
251
+ object_list_attr("AccessControlList", Grant,
252
+ :required => true, :method_name => :grants)
253
+
254
+ end
255
+
256
+ end
257
+ end