aws-sdk 1.8.0 → 1.8.1

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 (521) hide show
  1. data/LICENSE.txt +1 -1
  2. data/lib/aws-sdk.rb +3 -1
  3. data/lib/aws.rb +1 -1
  4. data/lib/aws/api_config/AutoScaling-2011-01-01.yml +31 -2
  5. data/lib/aws/api_config/CloudFormation-2010-05-15.yml +16 -8
  6. data/lib/aws/api_config/CloudFront-2012-05-05.yml +1 -1
  7. data/lib/aws/api_config/CloudSearch-2011-02-01.yml +1 -1
  8. data/lib/aws/api_config/CloudWatch-2010-08-01.yml +1 -1
  9. data/lib/aws/api_config/DataPipeline-2012-10-29.yml +1 -1
  10. data/lib/aws/api_config/DynamoDB-2011-12-05.yml +1 -1
  11. data/lib/aws/api_config/{EC2-2012-07-20.yml → EC2-2012-12-01.yml} +26 -2
  12. data/lib/aws/api_config/ELB-2012-06-01.yml +1 -1
  13. data/lib/aws/api_config/EMR-2009-03-31.yml +1 -1
  14. data/lib/aws/api_config/ElastiCache-2012-03-09.yml +1 -1
  15. data/lib/aws/api_config/ElasticBeanstalk-2010-12-01.yml +1 -1
  16. data/lib/aws/api_config/ElasticTranscoder-2012-09-25.yml +1036 -0
  17. data/lib/aws/api_config/Glacier-2012-06-01.yml +7 -11
  18. data/lib/aws/api_config/IAM-2010-05-08.yml +1 -1
  19. data/lib/aws/api_config/ImportExport-2010-06-01.yml +1 -1
  20. data/lib/aws/api_config/{RDS-2012-07-31.yml → RDS-2012-09-17.yml} +247 -7
  21. data/lib/aws/api_config/Route53-2012-02-29.yml +1 -1
  22. data/lib/aws/api_config/SNS-2010-03-31.yml +1 -1
  23. data/lib/aws/api_config/SQS-2012-11-05.yml +1 -1
  24. data/lib/aws/api_config/STS-2011-06-15.yml +1 -1
  25. data/lib/aws/api_config/SimpleDB-2009-04-15.yml +1 -1
  26. data/lib/aws/api_config/SimpleEmailService-2010-12-01.yml +1 -1
  27. data/lib/aws/api_config/SimpleWorkflow-2012-01-25.yml +1 -1
  28. data/lib/aws/api_config/StorageGateway-2012-06-30.yml +1 -1
  29. data/lib/aws/auto_scaling.rb +1 -1
  30. data/lib/aws/auto_scaling/activity.rb +1 -1
  31. data/lib/aws/auto_scaling/activity_collection.rb +1 -1
  32. data/lib/aws/auto_scaling/client.rb +19 -6
  33. data/lib/aws/auto_scaling/config.rb +1 -1
  34. data/lib/aws/auto_scaling/errors.rb +1 -1
  35. data/lib/aws/auto_scaling/group.rb +2 -2
  36. data/lib/aws/auto_scaling/group_collection.rb +1 -1
  37. data/lib/aws/auto_scaling/group_options.rb +1 -1
  38. data/lib/aws/auto_scaling/instance.rb +1 -1
  39. data/lib/aws/auto_scaling/instance_collection.rb +1 -1
  40. data/lib/aws/auto_scaling/launch_configuration.rb +1 -1
  41. data/lib/aws/auto_scaling/launch_configuration_collection.rb +2 -2
  42. data/lib/aws/auto_scaling/notification_configuration.rb +1 -1
  43. data/lib/aws/auto_scaling/notification_configuration_collection.rb +1 -1
  44. data/lib/aws/auto_scaling/request.rb +1 -1
  45. data/lib/aws/auto_scaling/scaling_policy.rb +1 -1
  46. data/lib/aws/auto_scaling/scaling_policy_collection.rb +1 -1
  47. data/lib/aws/auto_scaling/scaling_policy_options.rb +1 -1
  48. data/lib/aws/auto_scaling/scheduled_action.rb +1 -1
  49. data/lib/aws/auto_scaling/scheduled_action_collection.rb +1 -1
  50. data/lib/aws/auto_scaling/tag.rb +1 -1
  51. data/lib/aws/auto_scaling/tag_collection.rb +1 -1
  52. data/lib/aws/cloud_formation.rb +1 -1
  53. data/lib/aws/cloud_formation/client.rb +154 -52
  54. data/lib/aws/cloud_formation/config.rb +1 -1
  55. data/lib/aws/cloud_formation/errors.rb +1 -1
  56. data/lib/aws/cloud_formation/request.rb +1 -1
  57. data/lib/aws/cloud_formation/stack.rb +1 -2
  58. data/lib/aws/cloud_formation/stack_collection.rb +7 -4
  59. data/lib/aws/cloud_formation/stack_event.rb +1 -1
  60. data/lib/aws/cloud_formation/stack_event_collection.rb +1 -1
  61. data/lib/aws/cloud_formation/stack_options.rb +1 -1
  62. data/lib/aws/cloud_formation/stack_output.rb +1 -1
  63. data/lib/aws/cloud_formation/stack_resource.rb +1 -1
  64. data/lib/aws/cloud_formation/stack_resource_collection.rb +1 -1
  65. data/lib/aws/cloud_formation/stack_resource_summary_collection.rb +1 -1
  66. data/lib/aws/cloud_formation/stack_summary_collection.rb +1 -1
  67. data/lib/aws/cloud_front.rb +2 -2
  68. data/lib/aws/cloud_front/client.rb +5 -5
  69. data/lib/aws/cloud_front/config.rb +1 -1
  70. data/lib/aws/cloud_front/errors.rb +1 -1
  71. data/lib/aws/cloud_front/request.rb +1 -1
  72. data/lib/aws/cloud_search.rb +42 -1
  73. data/lib/aws/cloud_search/client.rb +5 -5
  74. data/lib/aws/cloud_search/config.rb +1 -1
  75. data/lib/aws/cloud_search/errors.rb +1 -1
  76. data/lib/aws/cloud_search/request.rb +1 -1
  77. data/lib/aws/cloud_watch.rb +43 -1
  78. data/lib/aws/cloud_watch/alarm.rb +1 -1
  79. data/lib/aws/cloud_watch/alarm_collection.rb +1 -1
  80. data/lib/aws/cloud_watch/alarm_history_item.rb +1 -1
  81. data/lib/aws/cloud_watch/alarm_history_item_collection.rb +1 -1
  82. data/lib/aws/cloud_watch/client.rb +5 -5
  83. data/lib/aws/cloud_watch/config.rb +1 -1
  84. data/lib/aws/cloud_watch/errors.rb +1 -1
  85. data/lib/aws/cloud_watch/metric.rb +1 -1
  86. data/lib/aws/cloud_watch/metric_alarm_collection.rb +1 -1
  87. data/lib/aws/cloud_watch/metric_collection.rb +1 -1
  88. data/lib/aws/cloud_watch/metric_statistics.rb +1 -1
  89. data/lib/aws/cloud_watch/request.rb +1 -1
  90. data/lib/aws/core.rb +6 -10
  91. data/lib/aws/core/async_handle.rb +1 -1
  92. data/lib/aws/core/autoloader.rb +1 -1
  93. data/lib/aws/core/cacheable.rb +1 -1
  94. data/lib/aws/core/client.rb +2 -2
  95. data/lib/aws/core/collection.rb +1 -1
  96. data/lib/aws/core/collection/simple.rb +1 -1
  97. data/lib/aws/core/collection/with_limit_and_next_token.rb +1 -1
  98. data/lib/aws/core/collection/with_next_token.rb +1 -1
  99. data/lib/aws/core/configuration.rb +5 -2
  100. data/lib/aws/core/credential_providers.rb +23 -4
  101. data/lib/aws/core/data.rb +1 -1
  102. data/lib/aws/core/http/curb_handler.rb +1 -1
  103. data/lib/aws/core/http/handler.rb +1 -1
  104. data/lib/aws/core/http/net_http_handler.rb +19 -14
  105. data/lib/aws/core/http/request.rb +1 -1
  106. data/lib/aws/core/http/response.rb +7 -4
  107. data/lib/aws/core/indifferent_hash.rb +1 -1
  108. data/lib/aws/core/inflection.rb +1 -1
  109. data/lib/aws/core/json_client.rb +1 -1
  110. data/lib/aws/core/json_parser.rb +1 -1
  111. data/lib/aws/core/json_request_builder.rb +1 -1
  112. data/lib/aws/core/json_response_parser.rb +1 -1
  113. data/lib/aws/core/lazy_error_classes.rb +1 -1
  114. data/lib/aws/core/log_formatter.rb +1 -1
  115. data/lib/aws/core/managed_file.rb +1 -1
  116. data/lib/aws/core/meta_utils.rb +1 -1
  117. data/lib/aws/core/model.rb +1 -1
  118. data/lib/aws/core/naming.rb +1 -1
  119. data/lib/aws/core/option_grammar.rb +1 -1
  120. data/lib/aws/core/options/json_serializer.rb +1 -1
  121. data/lib/aws/core/options/validator.rb +1 -1
  122. data/lib/aws/core/options/xml_serializer.rb +2 -2
  123. data/lib/aws/core/page_result.rb +1 -1
  124. data/lib/aws/core/policy.rb +1 -1
  125. data/lib/aws/core/query_client.rb +1 -1
  126. data/lib/aws/core/query_error_parser.rb +1 -1
  127. data/lib/aws/core/query_request_builder.rb +1 -1
  128. data/lib/aws/core/query_response_parser.rb +1 -1
  129. data/lib/aws/core/resource.rb +1 -1
  130. data/lib/aws/core/resource_cache.rb +1 -1
  131. data/lib/aws/core/response.rb +1 -1
  132. data/lib/aws/core/response_cache.rb +1 -1
  133. data/lib/aws/core/rest_error_parser.rb +1 -1
  134. data/lib/aws/core/rest_json_client.rb +1 -1
  135. data/lib/aws/core/rest_request_builder.rb +4 -4
  136. data/lib/aws/core/rest_response_parser.rb +13 -4
  137. data/lib/aws/core/rest_xml_client.rb +1 -1
  138. data/lib/aws/core/service_interface.rb +1 -1
  139. data/lib/aws/core/signature/version_2.rb +1 -1
  140. data/lib/aws/core/signature/version_3.rb +1 -1
  141. data/lib/aws/core/signature/version_3_https.rb +1 -1
  142. data/lib/aws/core/signature/version_4.rb +1 -1
  143. data/lib/aws/core/signer.rb +1 -1
  144. data/lib/aws/core/uri_escape.rb +1 -1
  145. data/lib/aws/core/xml/frame.rb +1 -1
  146. data/lib/aws/core/xml/frame_stack.rb +1 -1
  147. data/lib/aws/core/xml/grammar.rb +1 -1
  148. data/lib/aws/core/xml/parser.rb +1 -1
  149. data/lib/aws/core/xml/root_frame.rb +1 -1
  150. data/lib/aws/core/xml/sax_handlers/libxml.rb +1 -1
  151. data/lib/aws/core/xml/sax_handlers/nokogiri.rb +1 -1
  152. data/lib/aws/core/xml/sax_handlers/ox.rb +1 -1
  153. data/lib/aws/core/xml/sax_handlers/rexml.rb +1 -1
  154. data/lib/aws/core/xml/stub.rb +1 -1
  155. data/lib/aws/data_pipeline.rb +42 -1
  156. data/lib/aws/data_pipeline/client.rb +91 -144
  157. data/lib/aws/data_pipeline/config.rb +1 -1
  158. data/lib/aws/data_pipeline/errors.rb +1 -1
  159. data/lib/aws/data_pipeline/request.rb +1 -1
  160. data/lib/aws/dynamo_db.rb +1 -1
  161. data/lib/aws/dynamo_db/attribute_collection.rb +1 -1
  162. data/lib/aws/dynamo_db/batch_get.rb +1 -1
  163. data/lib/aws/dynamo_db/batch_write.rb +1 -1
  164. data/lib/aws/dynamo_db/binary.rb +1 -1
  165. data/lib/aws/dynamo_db/client.rb +5 -5
  166. data/lib/aws/dynamo_db/config.rb +1 -1
  167. data/lib/aws/dynamo_db/errors.rb +1 -1
  168. data/lib/aws/dynamo_db/expectations.rb +1 -1
  169. data/lib/aws/dynamo_db/item.rb +1 -1
  170. data/lib/aws/dynamo_db/item_collection.rb +11 -11
  171. data/lib/aws/dynamo_db/item_data.rb +1 -1
  172. data/lib/aws/dynamo_db/keys.rb +1 -1
  173. data/lib/aws/dynamo_db/primary_key_element.rb +1 -1
  174. data/lib/aws/dynamo_db/request.rb +1 -1
  175. data/lib/aws/dynamo_db/resource.rb +1 -1
  176. data/lib/aws/dynamo_db/table.rb +1 -1
  177. data/lib/aws/dynamo_db/table_collection.rb +1 -1
  178. data/lib/aws/dynamo_db/types.rb +1 -1
  179. data/lib/aws/ec2.rb +1 -1
  180. data/lib/aws/ec2/attachment.rb +1 -1
  181. data/lib/aws/ec2/attachment_collection.rb +1 -1
  182. data/lib/aws/ec2/availability_zone.rb +1 -1
  183. data/lib/aws/ec2/availability_zone_collection.rb +1 -1
  184. data/lib/aws/ec2/block_device_mappings.rb +1 -1
  185. data/lib/aws/ec2/client.rb +26 -5
  186. data/lib/aws/ec2/collection.rb +1 -1
  187. data/lib/aws/ec2/config.rb +1 -1
  188. data/lib/aws/ec2/config_transform.rb +1 -1
  189. data/lib/aws/ec2/customer_gateway.rb +1 -1
  190. data/lib/aws/ec2/customer_gateway_collection.rb +1 -1
  191. data/lib/aws/ec2/dhcp_options.rb +1 -1
  192. data/lib/aws/ec2/dhcp_options_collection.rb +1 -1
  193. data/lib/aws/ec2/elastic_ip.rb +1 -1
  194. data/lib/aws/ec2/elastic_ip_collection.rb +1 -1
  195. data/lib/aws/ec2/errors.rb +1 -1
  196. data/lib/aws/ec2/export_task.rb +1 -1
  197. data/lib/aws/ec2/export_task_collection.rb +1 -1
  198. data/lib/aws/ec2/filtered_collection.rb +1 -1
  199. data/lib/aws/ec2/has_permissions.rb +1 -1
  200. data/lib/aws/ec2/image.rb +1 -1
  201. data/lib/aws/ec2/image_collection.rb +1 -1
  202. data/lib/aws/ec2/instance.rb +1 -1
  203. data/lib/aws/ec2/instance_collection.rb +2 -2
  204. data/lib/aws/ec2/internet_gateway.rb +1 -1
  205. data/lib/aws/ec2/internet_gateway/attachment.rb +1 -1
  206. data/lib/aws/ec2/internet_gateway_collection.rb +1 -1
  207. data/lib/aws/ec2/key_pair.rb +1 -1
  208. data/lib/aws/ec2/key_pair_collection.rb +1 -1
  209. data/lib/aws/ec2/network_acl.rb +1 -1
  210. data/lib/aws/ec2/network_acl/association.rb +1 -1
  211. data/lib/aws/ec2/network_acl/entry.rb +1 -1
  212. data/lib/aws/ec2/network_acl_collection.rb +1 -1
  213. data/lib/aws/ec2/network_interface.rb +1 -1
  214. data/lib/aws/ec2/network_interface/attachment.rb +1 -1
  215. data/lib/aws/ec2/network_interface_collection.rb +1 -1
  216. data/lib/aws/ec2/permission_collection.rb +1 -1
  217. data/lib/aws/ec2/region.rb +27 -19
  218. data/lib/aws/ec2/region_collection.rb +1 -1
  219. data/lib/aws/ec2/request.rb +1 -1
  220. data/lib/aws/ec2/reserved_instances.rb +1 -1
  221. data/lib/aws/ec2/reserved_instances_collection.rb +1 -1
  222. data/lib/aws/ec2/reserved_instances_offering.rb +1 -1
  223. data/lib/aws/ec2/reserved_instances_offering_collection.rb +1 -1
  224. data/lib/aws/ec2/resource.rb +1 -1
  225. data/lib/aws/ec2/resource_tag_collection.rb +1 -1
  226. data/lib/aws/ec2/route_table.rb +1 -1
  227. data/lib/aws/ec2/route_table/association.rb +1 -1
  228. data/lib/aws/ec2/route_table/route.rb +7 -1
  229. data/lib/aws/ec2/route_table_collection.rb +1 -1
  230. data/lib/aws/ec2/security_group.rb +15 -5
  231. data/lib/aws/ec2/security_group/ip_permission.rb +6 -2
  232. data/lib/aws/ec2/security_group/ip_permission_collection.rb +1 -1
  233. data/lib/aws/ec2/security_group_collection.rb +1 -1
  234. data/lib/aws/ec2/snapshot.rb +1 -1
  235. data/lib/aws/ec2/snapshot_collection.rb +1 -1
  236. data/lib/aws/ec2/subnet.rb +1 -1
  237. data/lib/aws/ec2/subnet_collection.rb +1 -1
  238. data/lib/aws/ec2/tag.rb +1 -1
  239. data/lib/aws/ec2/tag_collection.rb +1 -1
  240. data/lib/aws/ec2/tagged_collection.rb +1 -1
  241. data/lib/aws/ec2/tagged_item.rb +1 -1
  242. data/lib/aws/ec2/volume.rb +1 -1
  243. data/lib/aws/ec2/volume_collection.rb +1 -1
  244. data/lib/aws/ec2/vpc.rb +1 -1
  245. data/lib/aws/ec2/vpc_collection.rb +1 -1
  246. data/lib/aws/ec2/vpn_connection.rb +1 -1
  247. data/lib/aws/ec2/vpn_connection/telemetry.rb +1 -1
  248. data/lib/aws/ec2/vpn_connection_collection.rb +1 -1
  249. data/lib/aws/ec2/vpn_gateway.rb +1 -1
  250. data/lib/aws/ec2/vpn_gateway/attachment.rb +1 -1
  251. data/lib/aws/ec2/vpn_gateway_collection.rb +1 -1
  252. data/lib/aws/elastic_beanstalk.rb +1 -1
  253. data/lib/aws/elastic_beanstalk/client.rb +5 -5
  254. data/lib/aws/elastic_beanstalk/config.rb +1 -1
  255. data/lib/aws/elastic_beanstalk/errors.rb +1 -1
  256. data/lib/aws/elastic_beanstalk/request.rb +1 -1
  257. data/lib/aws/elastic_transcoder.rb +30 -0
  258. data/lib/aws/elastic_transcoder/client.rb +672 -0
  259. data/lib/aws/elastic_transcoder/config.rb +18 -0
  260. data/lib/aws/elastic_transcoder/errors.rb +23 -0
  261. data/lib/aws/elastic_transcoder/request.rb +30 -0
  262. data/lib/aws/elasticache.rb +1 -1
  263. data/lib/aws/elasticache/client.rb +5 -6
  264. data/lib/aws/elasticache/config.rb +1 -1
  265. data/lib/aws/elasticache/errors.rb +1 -1
  266. data/lib/aws/elasticache/request.rb +1 -1
  267. data/lib/aws/elb.rb +1 -1
  268. data/lib/aws/elb/availability_zone_collection.rb +1 -1
  269. data/lib/aws/elb/backend_server_policy_collection.rb +1 -1
  270. data/lib/aws/elb/client.rb +5 -5
  271. data/lib/aws/elb/config.rb +1 -1
  272. data/lib/aws/elb/errors.rb +1 -1
  273. data/lib/aws/elb/instance_collection.rb +1 -1
  274. data/lib/aws/elb/listener.rb +1 -1
  275. data/lib/aws/elb/listener_collection.rb +1 -1
  276. data/lib/aws/elb/listener_opts.rb +1 -1
  277. data/lib/aws/elb/load_balancer.rb +1 -1
  278. data/lib/aws/elb/load_balancer_collection.rb +1 -1
  279. data/lib/aws/elb/load_balancer_policy.rb +1 -1
  280. data/lib/aws/elb/load_balancer_policy_collection.rb +1 -1
  281. data/lib/aws/elb/request.rb +8 -2
  282. data/lib/aws/emr.rb +1 -1
  283. data/lib/aws/emr/client.rb +5 -5
  284. data/lib/aws/emr/config.rb +1 -1
  285. data/lib/aws/emr/errors.rb +1 -1
  286. data/lib/aws/emr/instance_group.rb +1 -1
  287. data/lib/aws/emr/instance_group_collection.rb +1 -1
  288. data/lib/aws/emr/job_flow.rb +1 -1
  289. data/lib/aws/emr/job_flow_collection.rb +1 -1
  290. data/lib/aws/emr/request.rb +1 -1
  291. data/lib/aws/errors.rb +1 -1
  292. data/lib/aws/glacier.rb +29 -1
  293. data/lib/aws/glacier/archive.rb +3 -1
  294. data/lib/aws/glacier/archive_collection.rb +19 -14
  295. data/lib/aws/glacier/client.rb +5 -5
  296. data/lib/aws/glacier/config.rb +1 -1
  297. data/lib/aws/glacier/errors.rb +1 -1
  298. data/lib/aws/glacier/request.rb +1 -1
  299. data/lib/aws/glacier/resource.rb +1 -1
  300. data/lib/aws/glacier/vault.rb +10 -2
  301. data/lib/aws/glacier/vault_collection.rb +1 -1
  302. data/lib/aws/glacier/vault_notification_configuration.rb +3 -1
  303. data/lib/aws/iam.rb +1 -1
  304. data/lib/aws/iam/access_key.rb +1 -1
  305. data/lib/aws/iam/access_key_collection.rb +1 -1
  306. data/lib/aws/iam/account_alias_collection.rb +1 -1
  307. data/lib/aws/iam/client.rb +5 -5
  308. data/lib/aws/iam/collection.rb +1 -1
  309. data/lib/aws/iam/config.rb +1 -1
  310. data/lib/aws/iam/errors.rb +1 -1
  311. data/lib/aws/iam/group.rb +1 -1
  312. data/lib/aws/iam/group_collection.rb +1 -1
  313. data/lib/aws/iam/group_policy_collection.rb +1 -1
  314. data/lib/aws/iam/group_user_collection.rb +1 -1
  315. data/lib/aws/iam/login_profile.rb +1 -1
  316. data/lib/aws/iam/mfa_device.rb +1 -1
  317. data/lib/aws/iam/mfa_device_collection.rb +1 -1
  318. data/lib/aws/iam/policy.rb +1 -1
  319. data/lib/aws/iam/policy_collection.rb +1 -1
  320. data/lib/aws/iam/request.rb +1 -1
  321. data/lib/aws/iam/resource.rb +5 -14
  322. data/lib/aws/iam/server_certificate.rb +1 -1
  323. data/lib/aws/iam/server_certificate_collection.rb +1 -1
  324. data/lib/aws/iam/signing_certificate.rb +1 -1
  325. data/lib/aws/iam/signing_certificate_collection.rb +1 -1
  326. data/lib/aws/iam/user.rb +1 -1
  327. data/lib/aws/iam/user_collection.rb +1 -1
  328. data/lib/aws/iam/user_group_collection.rb +1 -1
  329. data/lib/aws/iam/user_policy.rb +1 -1
  330. data/lib/aws/iam/user_policy_collection.rb +1 -1
  331. data/lib/aws/iam/virtual_mfa_device.rb +1 -1
  332. data/lib/aws/iam/virtual_mfa_device_collection.rb +1 -1
  333. data/lib/aws/import_export.rb +1 -1
  334. data/lib/aws/import_export/client.rb +5 -5
  335. data/lib/aws/import_export/config.rb +1 -1
  336. data/lib/aws/import_export/errors.rb +1 -1
  337. data/lib/aws/import_export/request.rb +1 -1
  338. data/lib/aws/rails.rb +1 -1
  339. data/lib/aws/rds.rb +1 -1
  340. data/lib/aws/rds/client.rb +193 -7
  341. data/lib/aws/rds/config.rb +1 -1
  342. data/lib/aws/rds/db_instance.rb +5 -1
  343. data/lib/aws/rds/db_instance_collection.rb +1 -1
  344. data/lib/aws/rds/db_snapshot.rb +1 -1
  345. data/lib/aws/rds/db_snapshot_collection.rb +1 -1
  346. data/lib/aws/rds/errors.rb +1 -1
  347. data/lib/aws/rds/request.rb +1 -1
  348. data/lib/aws/record.rb +1 -1
  349. data/lib/aws/record/abstract_base.rb +119 -63
  350. data/lib/aws/record/attributes.rb +1 -1
  351. data/lib/aws/record/conversion.rb +1 -1
  352. data/lib/aws/record/dirty_tracking.rb +1 -1
  353. data/lib/aws/record/errors.rb +1 -1
  354. data/lib/aws/record/exceptions.rb +2 -2
  355. data/lib/aws/record/hash_model.rb +1 -1
  356. data/lib/aws/record/hash_model/attributes.rb +1 -1
  357. data/lib/aws/record/hash_model/finder_methods.rb +1 -1
  358. data/lib/aws/record/hash_model/scope.rb +1 -1
  359. data/lib/aws/record/model.rb +1 -1
  360. data/lib/aws/record/model/attributes.rb +1 -1
  361. data/lib/aws/record/model/finder_methods.rb +1 -1
  362. data/lib/aws/record/model/scope.rb +1 -1
  363. data/lib/aws/record/naming.rb +1 -1
  364. data/lib/aws/record/scope.rb +2 -2
  365. data/lib/aws/record/validations.rb +21 -3
  366. data/lib/aws/record/validator.rb +11 -2
  367. data/lib/aws/record/validators/acceptance.rb +2 -2
  368. data/lib/aws/record/validators/block.rb +2 -2
  369. data/lib/aws/record/validators/confirmation.rb +1 -1
  370. data/lib/aws/record/validators/count.rb +1 -1
  371. data/lib/aws/record/validators/exclusion.rb +2 -2
  372. data/lib/aws/record/validators/format.rb +2 -2
  373. data/lib/aws/record/validators/inclusion.rb +2 -2
  374. data/lib/aws/record/validators/length.rb +2 -2
  375. data/lib/aws/record/validators/method.rb +1 -1
  376. data/lib/aws/record/validators/numericality.rb +2 -2
  377. data/lib/aws/record/validators/presence.rb +2 -2
  378. data/lib/aws/route_53.rb +17 -3
  379. data/lib/aws/route_53/change_batch.rb +159 -0
  380. data/lib/aws/route_53/change_info.rb +72 -0
  381. data/lib/aws/route_53/client.rb +5 -5
  382. data/lib/aws/route_53/config.rb +1 -1
  383. data/lib/aws/route_53/errors.rb +1 -1
  384. data/lib/aws/route_53/hosted_zone.rb +111 -0
  385. data/lib/aws/route_53/hosted_zone_collection.rb +100 -0
  386. data/lib/aws/route_53/request.rb +1 -1
  387. data/lib/aws/route_53/resource_record_set.rb +212 -0
  388. data/lib/aws/route_53/resource_record_set_collection.rb +110 -0
  389. data/lib/aws/s3.rb +3 -2
  390. data/lib/aws/s3/access_control_list.rb +1 -1
  391. data/lib/aws/s3/acl_object.rb +1 -1
  392. data/lib/aws/s3/acl_options.rb +1 -1
  393. data/lib/aws/s3/bucket.rb +114 -1
  394. data/lib/aws/s3/bucket_collection.rb +1 -1
  395. data/lib/aws/s3/bucket_lifecycle_configuration.rb +1 -1
  396. data/lib/aws/s3/bucket_tag_collection.rb +1 -1
  397. data/lib/aws/s3/bucket_version_collection.rb +1 -1
  398. data/lib/aws/s3/cipher_io.rb +1 -1
  399. data/lib/aws/s3/client.rb +148 -98
  400. data/lib/aws/s3/client/xml.rb +10 -1
  401. data/lib/aws/s3/config.rb +1 -1
  402. data/lib/aws/s3/cors_rule.rb +1 -1
  403. data/lib/aws/s3/cors_rule_collection.rb +1 -1
  404. data/lib/aws/s3/data_options.rb +1 -1
  405. data/lib/aws/s3/encryption_utils.rb +1 -1
  406. data/lib/aws/s3/errors.rb +1 -1
  407. data/lib/aws/s3/multipart_upload.rb +1 -1
  408. data/lib/aws/s3/multipart_upload_collection.rb +1 -1
  409. data/lib/aws/s3/object_collection.rb +1 -1
  410. data/lib/aws/s3/object_metadata.rb +1 -1
  411. data/lib/aws/s3/object_upload_collection.rb +1 -1
  412. data/lib/aws/s3/object_version.rb +1 -1
  413. data/lib/aws/s3/object_version_collection.rb +1 -1
  414. data/lib/aws/s3/paginated_collection.rb +1 -1
  415. data/lib/aws/s3/policy.rb +1 -1
  416. data/lib/aws/s3/prefix_and_delimiter_collection.rb +1 -1
  417. data/lib/aws/s3/prefixed_collection.rb +1 -1
  418. data/lib/aws/s3/presigned_post.rb +1 -1
  419. data/lib/aws/s3/request.rb +4 -2
  420. data/lib/aws/s3/s3_object.rb +77 -83
  421. data/lib/aws/s3/tree.rb +1 -1
  422. data/lib/aws/s3/tree/branch_node.rb +1 -1
  423. data/lib/aws/s3/tree/child_collection.rb +1 -1
  424. data/lib/aws/s3/tree/leaf_node.rb +1 -1
  425. data/lib/aws/s3/tree/node.rb +1 -1
  426. data/lib/aws/s3/tree/parent.rb +1 -1
  427. data/lib/aws/s3/uploaded_part.rb +1 -1
  428. data/lib/aws/s3/uploaded_part_collection.rb +1 -1
  429. data/lib/aws/s3/website_configuration.rb +60 -0
  430. data/lib/aws/simple_db.rb +1 -1
  431. data/lib/aws/simple_db/attribute.rb +1 -1
  432. data/lib/aws/simple_db/attribute_collection.rb +1 -1
  433. data/lib/aws/simple_db/client.rb +5 -5
  434. data/lib/aws/simple_db/config.rb +1 -1
  435. data/lib/aws/simple_db/consistent_read_option.rb +1 -1
  436. data/lib/aws/simple_db/delete_attributes.rb +1 -1
  437. data/lib/aws/simple_db/domain.rb +1 -1
  438. data/lib/aws/simple_db/domain_collection.rb +1 -1
  439. data/lib/aws/simple_db/domain_metadata.rb +1 -1
  440. data/lib/aws/simple_db/errors.rb +1 -1
  441. data/lib/aws/simple_db/expect_condition_option.rb +1 -1
  442. data/lib/aws/simple_db/item.rb +1 -1
  443. data/lib/aws/simple_db/item_collection.rb +1 -1
  444. data/lib/aws/simple_db/item_data.rb +1 -1
  445. data/lib/aws/simple_db/put_attributes.rb +1 -1
  446. data/lib/aws/simple_db/request.rb +1 -1
  447. data/lib/aws/simple_email_service.rb +1 -1
  448. data/lib/aws/simple_email_service/client.rb +5 -5
  449. data/lib/aws/simple_email_service/config.rb +1 -1
  450. data/lib/aws/simple_email_service/email_address_collection.rb +1 -1
  451. data/lib/aws/simple_email_service/errors.rb +1 -1
  452. data/lib/aws/simple_email_service/identity.rb +1 -1
  453. data/lib/aws/simple_email_service/identity_collection.rb +1 -1
  454. data/lib/aws/simple_email_service/quotas.rb +1 -1
  455. data/lib/aws/simple_email_service/request.rb +1 -1
  456. data/lib/aws/simple_workflow.rb +1 -1
  457. data/lib/aws/simple_workflow/activity_task.rb +1 -1
  458. data/lib/aws/simple_workflow/activity_task_collection.rb +1 -1
  459. data/lib/aws/simple_workflow/activity_type.rb +1 -1
  460. data/lib/aws/simple_workflow/activity_type_collection.rb +1 -1
  461. data/lib/aws/simple_workflow/client.rb +5 -5
  462. data/lib/aws/simple_workflow/config.rb +1 -1
  463. data/lib/aws/simple_workflow/count.rb +1 -1
  464. data/lib/aws/simple_workflow/decision_task.rb +4 -2
  465. data/lib/aws/simple_workflow/decision_task_collection.rb +1 -1
  466. data/lib/aws/simple_workflow/domain.rb +1 -1
  467. data/lib/aws/simple_workflow/domain_collection.rb +1 -1
  468. data/lib/aws/simple_workflow/errors.rb +1 -1
  469. data/lib/aws/simple_workflow/history_event.rb +1 -1
  470. data/lib/aws/simple_workflow/history_event_collection.rb +1 -1
  471. data/lib/aws/simple_workflow/option_formatters.rb +1 -1
  472. data/lib/aws/simple_workflow/request.rb +1 -1
  473. data/lib/aws/simple_workflow/resource.rb +1 -1
  474. data/lib/aws/simple_workflow/type.rb +1 -1
  475. data/lib/aws/simple_workflow/type_collection.rb +1 -1
  476. data/lib/aws/simple_workflow/workflow_execution.rb +1 -1
  477. data/lib/aws/simple_workflow/workflow_execution_collection.rb +1 -1
  478. data/lib/aws/simple_workflow/workflow_type.rb +1 -1
  479. data/lib/aws/simple_workflow/workflow_type_collection.rb +1 -1
  480. data/lib/aws/sns.rb +1 -1
  481. data/lib/aws/sns/client.rb +5 -5
  482. data/lib/aws/sns/config.rb +1 -1
  483. data/lib/aws/sns/errors.rb +1 -1
  484. data/lib/aws/sns/has_delivery_policy.rb +1 -1
  485. data/lib/aws/sns/policy.rb +1 -1
  486. data/lib/aws/sns/request.rb +1 -1
  487. data/lib/aws/sns/subscription.rb +1 -1
  488. data/lib/aws/sns/subscription_collection.rb +1 -1
  489. data/lib/aws/sns/topic.rb +1 -1
  490. data/lib/aws/sns/topic_collection.rb +1 -1
  491. data/lib/aws/sns/topic_subscription_collection.rb +1 -1
  492. data/lib/aws/sqs.rb +1 -1
  493. data/lib/aws/sqs/client.rb +5 -5
  494. data/lib/aws/sqs/config.rb +1 -1
  495. data/lib/aws/sqs/errors.rb +1 -1
  496. data/lib/aws/sqs/policy.rb +1 -1
  497. data/lib/aws/sqs/queue.rb +2 -2
  498. data/lib/aws/sqs/queue_collection.rb +1 -1
  499. data/lib/aws/sqs/received_message.rb +1 -1
  500. data/lib/aws/sqs/received_sns_message.rb +6 -2
  501. data/lib/aws/sqs/request.rb +1 -1
  502. data/lib/aws/storage_gateway.rb +1 -1
  503. data/lib/aws/storage_gateway/client.rb +5 -5
  504. data/lib/aws/storage_gateway/config.rb +1 -1
  505. data/lib/aws/storage_gateway/errors.rb +1 -1
  506. data/lib/aws/storage_gateway/request.rb +1 -1
  507. data/lib/aws/sts.rb +1 -1
  508. data/lib/aws/sts/client.rb +5 -5
  509. data/lib/aws/sts/config.rb +1 -1
  510. data/lib/aws/sts/errors.rb +1 -1
  511. data/lib/aws/sts/federated_session.rb +1 -1
  512. data/lib/aws/sts/policy.rb +1 -1
  513. data/lib/aws/sts/request.rb +1 -1
  514. data/lib/aws/sts/session.rb +1 -1
  515. data/lib/aws/version.rb +2 -2
  516. data/lib/net/http/connection_pool.rb +1 -1
  517. data/lib/net/http/connection_pool/connection.rb +1 -1
  518. data/lib/net/http/connection_pool/session.rb +1 -1
  519. data/rails/init.rb +1 -1
  520. metadata +18 -6
  521. data/lib/aws/core/http/httparty_handler.rb +0 -115
@@ -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
@@ -1,4 +1,4 @@
1
- # Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
1
+ # Copyright 2011-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License"). You
4
4
  # may not use this file except in compliance with the License. A copy of
@@ -98,7 +98,7 @@ module AWS
98
98
  # end
99
99
  #
100
100
  # # enumerate at most 20 objects with the given prefix
101
- # bucket.objects.with_prefix('photos/').each(:limit => 20).each do |photo|
101
+ # bucket.objects.with_prefix('photos/').each(:limit => 20) do |photo|
102
102
  # puts photo.key
103
103
  # end
104
104
  #
@@ -140,6 +140,7 @@ module AWS
140
140
  autoload :Tree, 'tree'
141
141
  autoload :UploadedPart, 'uploaded_part'
142
142
  autoload :UploadedPartCollection, 'uploaded_part_collection'
143
+ autoload :WebsiteConfiguration, 'website_configuration'
143
144
  end
144
145
 
145
146
  include Core::ServiceInterface
@@ -1,4 +1,4 @@
1
- # Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
1
+ # Copyright 2011-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License"). You
4
4
  # may not use this file except in compliance with the License. A copy of
@@ -1,4 +1,4 @@
1
- # Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
1
+ # Copyright 2011-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License"). You
4
4
  # may not use this file except in compliance with the License. A copy of
@@ -1,4 +1,4 @@
1
- # Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
1
+ # Copyright 2011-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License"). You
4
4
  # may not use this file except in compliance with the License. A copy of
@@ -1,4 +1,4 @@
1
- # Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
1
+ # Copyright 2011-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License"). You
4
4
  # may not use this file except in compliance with the License. A copy of
@@ -68,6 +68,33 @@ module AWS
68
68
  # See {ObjectCollection} and {S3Object} for more information on working
69
69
  # with objects.
70
70
  #
71
+ # = Website Configuration
72
+ #
73
+ # It is easy to enable website hosting for a bucket.
74
+ #
75
+ # bucket.configure_website
76
+ #
77
+ # You can specify the index and error documents by passing a block.
78
+ # If your bucket is already configured as a website, the current
79
+ # configuration will be yielded. If you bucket it not currently
80
+ # configured as a website, a new configuration will be yielded
81
+ # with default values.
82
+ #
83
+ # bucket.configure_website do |cfg|
84
+ # cfg.index_document_suffix = 'index.html'
85
+ # cfg.error_document_key = 'error.html'
86
+ # end
87
+ #
88
+ # You can disable website hosting two ways:
89
+ #
90
+ # bucket.remove_website_configuration
91
+ # bucket.website_configuration = nil
92
+ #
93
+ # You can use {#website_configuration=} to copy a website configuration
94
+ # from one bucket to another.
95
+ #
96
+ # bucket.website_configuration = other_bucket.website_configuration
97
+ #
71
98
  # = Bucket Policies and ACLs
72
99
  #
73
100
  # You can control access to your bucket and its contents a number
@@ -231,6 +258,92 @@ module AWS
231
258
  client.get_bucket_location(:bucket_name => name).location_constraint
232
259
  end
233
260
 
261
+ # Configure the current bucket as a website.
262
+ #
263
+ # bucket.configure_website
264
+ #
265
+ # If you pass a block, the website configuration object
266
+ # will be yielded. You can modify it before it is saved.
267
+ #
268
+ # bucket.configure_website do |cfg|
269
+ # cfg.index_document_suffix = 'index.html'
270
+ # cfg.error_document_key = 'error.html'
271
+ # end
272
+ #
273
+ # If the bucket already has a website configuration, it will be loaded
274
+ # and yielded. This makes it possible to modify an existing
275
+ # configuration.
276
+ #
277
+ # # only rename the error document
278
+ # bucket.configure_website do |cfg|
279
+ # cfg.error_document_key = 'oops.html'
280
+ # end
281
+ #
282
+ # @yieldparam [WebsiteConfiguration] website_config
283
+ # @return [WebsiteConfiguration]
284
+ # @see #website_configuration
285
+ # @see #website_configuration=
286
+ # @see #remove_website_configuration
287
+ # @see #website?
288
+ def configure_website &block
289
+ website_config = self.website_configuration
290
+ website_config ||= WebsiteConfiguration.new
291
+ yield(website_config) if block_given?
292
+ self.website_configuration = website_config
293
+ end
294
+
295
+ # Returns the bucket website configuration. Returns +nil+ if the bucket
296
+ # is not configured as a website.
297
+ # @return [WebsiteConfiguration,nil]
298
+ # @see #configure_website
299
+ # @see #website_configuration=
300
+ # @see #remove_website_configuration
301
+ # @see #website?
302
+ def website_configuration
303
+ resp = client.get_bucket_website(:bucket_name => name)
304
+ WebsiteConfiguration.new(resp.data)
305
+ rescue Errors::NoSuchWebsiteConfiguration
306
+ nil
307
+ end
308
+
309
+ # Sets the website configuration. Deletes the configuration if
310
+ # +nil+ is passed.
311
+ # @param [WebsiteConfiguration,nil] website_configuration
312
+ # @see #configure_website
313
+ # @see #website_configuration
314
+ # @see #remove_website_configuration
315
+ # @see #website?
316
+ def website_configuration= website_configuration
317
+ if website_configuration
318
+ client_opts = website_configuration.to_hash
319
+ client_opts[:bucket_name] = name
320
+ client.put_bucket_website(client_opts)
321
+ else
322
+ remove_website_configuration
323
+ end
324
+ end
325
+
326
+ # @return [nil] Deletes the bucket website configuration.
327
+ # @see #configure_website
328
+ # @see #website_configuration
329
+ # @see #website_configuration=
330
+ # @see #website?
331
+ def remove_website_configuration
332
+ client.delete_bucket_website(:bucket_name => name)
333
+ @website_configuration = false
334
+ nil
335
+ end
336
+
337
+ # @return [Boolean] Returns +true+ if this bucket is configured as
338
+ # a website.
339
+ # @see #configure_website
340
+ # @see #website_configuration
341
+ # @see #website_configuration=
342
+ # @see #remove_website_configuration
343
+ def website?
344
+ !!website_configuration
345
+ end
346
+
234
347
  # Returns the tags for this bucket.
235
348
  #
236
349
  # tags = bucket.tags
@@ -1,4 +1,4 @@
1
- # Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
1
+ # Copyright 2011-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License"). You
4
4
  # may not use this file except in compliance with the License. A copy of
@@ -1,4 +1,4 @@
1
- # Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
1
+ # Copyright 2011-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License"). You
4
4
  # may not use this file except in compliance with the License. A copy of
@@ -1,4 +1,4 @@
1
- # Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
1
+ # Copyright 2011-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License"). You
4
4
  # may not use this file except in compliance with the License. A copy of
@@ -1,4 +1,4 @@
1
- # Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
1
+ # Copyright 2011-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License"). You
4
4
  # may not use this file except in compliance with the License. A copy of
@@ -1,4 +1,4 @@
1
- # Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
1
+ # Copyright 2011-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License"). You
4
4
  # may not use this file except in compliance with the License. A copy of
@@ -1,4 +1,4 @@
1
- # Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
1
+ # Copyright 2011-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License"). You
4
4
  # may not use this file except in compliance with the License. A copy of
@@ -37,6 +37,7 @@ module AWS
37
37
  EMPTY_BODY_ERRORS = {
38
38
  304 => Errors::NotModified,
39
39
  403 => Errors::Forbidden,
40
+ 400 => Errors::BadRequest,
40
41
  404 => Errors::NoSuchKey,
41
42
  }
42
43
 
@@ -152,6 +153,58 @@ module AWS
152
153
  end
153
154
  alias_method :put_bucket, :create_bucket
154
155
 
156
+ # @overload put_bucket_website(options = {})
157
+ # @param [Hash] options
158
+ # @option options [required,String] :bucket_name
159
+ # @option options [required,Hash] :index_document
160
+ # * +:suffix+ - (*required*, String) - A suffix that is appended to
161
+ # a request that is for a directory on the website endpoint
162
+ # (e.g. if the suffix is index.html and you make a request to
163
+ # samplebucket/images/ the data that is returned will be for
164
+ # the object with the key name images/index.html).
165
+ # The suffix must not be empty and must not include a
166
+ # slash character.
167
+ # @option options [Hash] :error_document
168
+ # * +:key+ - (*required*, String) - The object key name to use
169
+ # when a 4XX class error occurs.
170
+ # @return [Core::Response]
171
+ bucket_method(:put_bucket_website, :put, 'website') do
172
+
173
+ configure_request do |req, options|
174
+ validate_bucket_name!(options[:bucket_name])
175
+ req.body = Nokogiri::XML::Builder.new do |xml|
176
+ xml.WebsiteConfiguration(:xmlns => XMLNS) do
177
+ xml.IndexDocument do
178
+ xml.Suffix(options[:index_document][:suffix])
179
+ end
180
+ if options[:error_document]
181
+ xml.ErrorDocument do
182
+ xml.Key(options[:error_document][:key])
183
+ end
184
+ end
185
+ end
186
+ end.doc.root.to_xml
187
+ super(req, options)
188
+ end
189
+
190
+ end
191
+
192
+ # @overload get_bucket_website(options = {})
193
+ # @param [Hash] options
194
+ # @option options [required,String] :bucket_name
195
+ # @return [Core::Response]
196
+ # * +:index_document+ - (Hash)
197
+ # * +:suffix+ - (String)
198
+ # * +:error_document+ - (Hash)
199
+ # * +:key+ - (String)
200
+ bucket_method(:get_bucket_website, :get, 'website', XML::GetBucketWebsite)
201
+
202
+ # @overload delete_bucket_website(options = {})
203
+ # @param [Hash] options
204
+ # @option options [required,String] :bucket_name
205
+ # @return [Core::Response]
206
+ bucket_method(:delete_bucket_website, :delete, 'website')
207
+
155
208
  # Deletes an empty bucket.
156
209
  # @overload delete_bucket(options = {})
157
210
  # @param [Hash] options
@@ -734,6 +787,9 @@ module AWS
734
787
  # is made to determine the content length of strings, files,
735
788
  # tempfiles, io objects, and any object that responds
736
789
  # to +#length+ or +#size+.
790
+ # @option options [String] :website_redirect_location If the bucket is
791
+ # configured as a website, redirects requests for this object to
792
+ # another object in the same bucket or to an external URL.
737
793
  # @option options [Hash] :metadata
738
794
  # A hash of metadata to be included with the
739
795
  # object. These will be sent to S3 as headers prefixed with
@@ -761,7 +817,8 @@ module AWS
761
817
  # The base64 encoded content md5 of the +:data+.
762
818
  # @option options [String] :content_type
763
819
  # Specifies the content type.
764
- # @option options [String] :expires
820
+ # @option options [String] :expires The date and time at which the
821
+ # object is no longer cacheable.
765
822
  # @option options [String] :acl A canned ACL (e.g. 'private',
766
823
  # 'public-read', etc). See the S3 API documentation for
767
824
  # a complete list of valid values.
@@ -773,6 +830,7 @@ module AWS
773
830
  # @return [Core::Response]
774
831
  #
775
832
  object_method(:put_object, :put, :header_options => {
833
+ :website_redirect_location => 'x-amz-website-redirect-location',
776
834
  :acl => 'x-amz-acl',
777
835
  :grant_read => 'x-amz-grant-read',
778
836
  :grant_write => 'x-amz-grant-write',
@@ -784,7 +842,7 @@ module AWS
784
842
  :content_disposition => 'Content-Disposition',
785
843
  :content_encoding => 'Content-Encoding',
786
844
  :content_type => 'Content-Type',
787
- :expires => 'Expires'
845
+ :expires => 'Expires',
788
846
  }) do
789
847
 
790
848
  configure_request do |request, options|
@@ -800,19 +858,8 @@ module AWS
800
858
 
801
859
  end
802
860
 
803
- process_response do |response|
804
-
805
- response.data[:version_id] =
806
- response.http_response.header('x-amz-version-id')
807
-
808
- response.data[:etag] = response.http_response.header('ETag')
809
-
810
- if time = response.http_response.header('Last-Modified')
811
- response.data[:last_modified] = Time.parse(time)
812
- end
813
-
814
- add_sse_to_response(response)
815
-
861
+ process_response do |resp|
862
+ extract_object_headers(resp)
816
863
  end
817
864
 
818
865
  simulate_response do |response|
@@ -884,10 +931,10 @@ module AWS
884
931
  end
885
932
 
886
933
  process_response do |resp|
934
+ extract_object_headers(resp)
887
935
  resp.data[:data] = resp.http_response.body
888
- resp.data[:version_id] = resp.http_response.header('x-amz-version-id')
889
- add_sse_to_response(resp)
890
936
  end
937
+
891
938
  end
892
939
 
893
940
  # @overload head_object(options = {})
@@ -906,58 +953,9 @@ module AWS
906
953
  end
907
954
 
908
955
  process_response do |resp|
909
-
910
- # create a hash of user-supplied metadata
911
- meta = {}
912
- resp.http_response.headers.each_pair do |name,value|
913
- if name =~ /^x-amz-meta-(.+)$/i
914
- meta[$1] = [value].flatten.join
915
- end
916
- end
917
- meta
918
- resp.data[:meta] = meta
919
-
920
- if expiry = resp.http_response.headers['x-amz-expiration']
921
- expiry.first =~ /^expiry-date="(.+)", rule-id="(.+)"$/
922
- exp_date = DateTime.parse($1)
923
- exp_rule_id = $2
924
- else
925
- exp_date = nil
926
- exp_rule_id = nil
927
- end
928
-
929
- if restore = resp.http_response.headers['x-amz-restore']
930
- restore.first =~ /ongoing-request="(.+?)", expiry-date="(.+?)"/
931
- restoring = $1 == "true"
932
- restore_date = DateTime.parse($2)
933
- else
934
- restoring = false
935
- restore_date = nil
936
- end
937
-
938
- resp.data[:expiration_date] = exp_date
939
- resp.data[:expiration_rule_id] = exp_rule_id
940
- resp.data[:restore_in_progress] = restoring
941
- resp.data[:restore_expiration_date] = restore_date
942
-
943
- {
944
- 'x-amz-version-id' => :version_id,
945
- 'content-type' => :content_type,
946
- 'etag' => :etag,
947
- }.each_pair do |header,method|
948
- resp.data[method] = resp.http_response.header(header)
949
- end
950
-
951
- if time = resp.http_response.header('Last-Modified')
952
- resp.data[:last_modified] = Time.parse(time)
953
- end
954
-
955
- resp.data[:content_length] =
956
- resp.http_response.header('content-length').to_i
957
-
958
- add_sse_to_response(resp)
959
-
956
+ extract_object_headers(resp)
960
957
  end
958
+
961
959
  end
962
960
 
963
961
  # @overload delete_object(options = {})
@@ -1039,6 +1037,9 @@ module AWS
1039
1037
  # @param [Hash] options
1040
1038
  # @option options [required,String] :bucket_name
1041
1039
  # @option options [required,String] :key
1040
+ # @option options [String] :website_redirect_location If the bucket is
1041
+ # configured as a website, redirects requests for this object to
1042
+ # another object in the same bucket or to an external URL.
1042
1043
  # @option options [Hash] :metadata
1043
1044
  # @option options [Symbol] :acl
1044
1045
  # @option options [String] :cache_control
@@ -1052,7 +1053,8 @@ module AWS
1052
1053
  # @option options [Symbol,String] :server_side_encryption (nil) The
1053
1054
  # algorithm used to encrypt the object on the server side
1054
1055
  # (e.g. :aes256).
1055
- # @option options [String] :expires
1056
+ # @option options [String] :expires The date and time at which the
1057
+ # object is no longer cacheable.
1056
1058
  # @option options [String] :acl A canned ACL (e.g. 'private',
1057
1059
  # 'public-read', etc). See the S3 API documentation for
1058
1060
  # a complete list of valid values.
@@ -1065,6 +1067,7 @@ module AWS
1065
1067
  object_method(:initiate_multipart_upload, :post, 'uploads',
1066
1068
  XML::InitiateMultipartUpload,
1067
1069
  :header_options => {
1070
+ :website_redirect_location => 'x-amz-website-redirect-location',
1068
1071
  :acl => 'x-amz-acl',
1069
1072
  :grant_read => 'x-amz-grant-read',
1070
1073
  :grant_write => 'x-amz-grant-write',
@@ -1075,7 +1078,7 @@ module AWS
1075
1078
  :content_disposition => 'Content-Disposition',
1076
1079
  :content_encoding => 'Content-Encoding',
1077
1080
  :content_type => 'Content-Type',
1078
- :expires => 'Expires'
1081
+ :expires => 'Expires',
1079
1082
  }) do
1080
1083
 
1081
1084
  configure_request do |req, options|
@@ -1085,8 +1088,8 @@ module AWS
1085
1088
  super(req, options)
1086
1089
  end
1087
1090
 
1088
- process_response do |response|
1089
- add_sse_to_response(response)
1091
+ process_response do |resp|
1092
+ extract_object_headers(resp)
1090
1093
  end
1091
1094
 
1092
1095
  end
@@ -1178,12 +1181,8 @@ module AWS
1178
1181
 
1179
1182
  end
1180
1183
 
1181
- process_response do |response|
1182
- response.data[:etag] = response.http_response.header('ETag')
1183
- if time = response.http_response.header('Last-Modified')
1184
- response.data[:last_modified] = Time.parse(time)
1185
- end
1186
- add_sse_to_response(response)
1184
+ process_response do |resp|
1185
+ extract_object_headers(resp)
1187
1186
  end
1188
1187
 
1189
1188
  simulate_response do |response|
@@ -1215,15 +1214,14 @@ module AWS
1215
1214
  "<CompleteMultipartUpload>#{parts_xml}</CompleteMultipartUpload>"
1216
1215
  end
1217
1216
 
1218
- process_response do |response|
1219
- add_sse_to_response(response)
1220
- response.data[:version_id] =
1221
- response.http_response.header('x-amz-version-id')
1217
+ process_response do |resp|
1218
+ extract_object_headers(resp)
1222
1219
  end
1223
1220
 
1224
1221
  simulate_response do |response|
1225
1222
  response.data[:version_id] = nil
1226
1223
  end
1224
+
1227
1225
  end
1228
1226
 
1229
1227
  # @overload abort_multipart_upload(options = {})
@@ -1267,6 +1265,9 @@ module AWS
1267
1265
  # to copy a object into.
1268
1266
  # @option options [required, String] :key Where (object key) in the
1269
1267
  # bucket the object should be copied to.
1268
+ # @option options [String] :website_redirect_location If the bucket is
1269
+ # configured as a website, redirects requests for this object to
1270
+ # another object in the same bucket or to an external URL.
1270
1271
  # @option options [required, String] :copy_source The source
1271
1272
  # bucket name and key, joined by a forward slash ('/').
1272
1273
  # This string must be URL-encoded. Additionally, you must
@@ -1281,6 +1282,8 @@ module AWS
1281
1282
  # Controls whether Reduced Redundancy Storage is enabled for
1282
1283
  # the object. Valid values are 'STANDARD' and
1283
1284
  # 'REDUCED_REDUNDANCY'.
1285
+ # @option options [String] :expires The date and time at which the
1286
+ # object is no longer cacheable.
1284
1287
  # @option options [String] :grant_read
1285
1288
  # @option options [String] :grant_write
1286
1289
  # @option options [String] :grant_read_acp
@@ -1288,6 +1291,7 @@ module AWS
1288
1291
  # @option options [String] :grant_full_control
1289
1292
  # @return [Core::Response]
1290
1293
  object_method(:copy_object, :put, :header_options => {
1294
+ :website_redirect_location => 'x-amz-website-redirect-location',
1291
1295
  :acl => 'x-amz-acl',
1292
1296
  :grant_read => 'x-amz-grant-read',
1293
1297
  :grant_write => 'x-amz-grant-write',
@@ -1299,6 +1303,7 @@ module AWS
1299
1303
  :metadata_directive => 'x-amz-metadata-directive',
1300
1304
  :content_type => 'Content-Type',
1301
1305
  :content_disposition => 'Content-Disposition',
1306
+ :expires => 'Expires',
1302
1307
  }) do
1303
1308
 
1304
1309
  configure_request do |req, options|
@@ -1318,14 +1323,8 @@ module AWS
1318
1323
  end
1319
1324
  end
1320
1325
 
1321
- process_response do |response|
1322
- response.data[:version_id] =
1323
- response.http_response.header('x-amz-version-id')
1324
- response.data[:etag] = response.http_response.header('ETag')
1325
- if time = response.http_response.header('Last-Modified')
1326
- response.data[:last_modified] = Time.parse(time)
1327
- end
1328
- add_sse_to_response(response)
1326
+ process_response do |resp|
1327
+ extract_object_headers(resp)
1329
1328
  end
1330
1329
 
1331
1330
  end
@@ -1372,13 +1371,6 @@ module AWS
1372
1371
  req
1373
1372
  end
1374
1373
 
1375
- def add_sse_to_response response
1376
- if sse = response.http_response.header('x-amz-server-side-encryption')
1377
- sse = sse.downcase.to_sym
1378
- end
1379
- response.data[:server_side_encryption] = sse
1380
- end
1381
-
1382
1374
  # Previously the access control policy could be specified via :acl
1383
1375
  # as a string or an object that responds to #to_xml. The prefered
1384
1376
  # method now is to pass :access_control_policy an xml document.
@@ -1407,6 +1399,64 @@ module AWS
1407
1399
  Base64.encode64(Digest::MD5.digest(str)).strip
1408
1400
  end
1409
1401
 
1402
+ def extract_object_headers resp
1403
+ meta = {}
1404
+ resp.http_response.headers.each_pair do |name,value|
1405
+ if name =~ /^x-amz-meta-(.+)$/i
1406
+ meta[$1] = [value].flatten.join
1407
+ end
1408
+ end
1409
+ resp.data[:meta] = meta
1410
+
1411
+ if expiry = resp.http_response.headers['x-amz-expiration']
1412
+ expiry.first =~ /^expiry-date="(.+)", rule-id="(.+)"$/
1413
+ exp_date = DateTime.parse($1)
1414
+ exp_rule_id = $2
1415
+ else
1416
+ exp_date = nil
1417
+ exp_rule_id = nil
1418
+ end
1419
+ resp.data[:expiration_date] = exp_date if exp_date
1420
+ resp.data[:expiration_rule_id] = exp_rule_id if exp_rule_id
1421
+
1422
+ restoring = false
1423
+ restore_date = nil
1424
+
1425
+ if restore = resp.http_response.headers['x-amz-restore']
1426
+ if restore.first =~ /ongoing-request="(.+?)", expiry-date="(.+?)"/
1427
+ restoring = $1 == "true"
1428
+ restore_date = DateTime.parse($2)
1429
+ elsif restore.first =~ /ongoing-request="(.+?)"/
1430
+ restoring = $1 == "true"
1431
+ end
1432
+ end
1433
+ resp.data[:restore_in_progress] = restoring
1434
+ resp.data[:restore_expiration_date] = restore_date if restore_date
1435
+
1436
+ {
1437
+ 'x-amz-version-id' => :version_id,
1438
+ 'content-type' => :content_type,
1439
+ 'etag' => :etag,
1440
+ 'x-amz-website-redirect-location' => :website_redirect_location,
1441
+ }.each_pair do |header,method|
1442
+ if value = resp.http_response.header(header)
1443
+ resp.data[method] = value
1444
+ end
1445
+ end
1446
+
1447
+ if time = resp.http_response.header('Last-Modified')
1448
+ resp.data[:last_modified] = Time.parse(time)
1449
+ end
1450
+
1451
+ if length = resp.http_response.header('content-length')
1452
+ resp.data[:content_length] = length.to_i
1453
+ end
1454
+
1455
+ if sse = resp.http_response.header('x-amz-server-side-encryption')
1456
+ resp.data[:server_side_encryption] = sse.downcase.to_sym
1457
+ end
1458
+ end
1459
+
1410
1460
  module Validators
1411
1461
 
1412
1462
  # @return [Boolean] Returns true if the given bucket name is valid.