aws-sdk 1.8.5 → 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (386) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +1 -0
  3. data/README.rdoc +8 -0
  4. data/lib/aws-sdk.rb +39 -35
  5. data/lib/aws/api_config/CloudFront-2012-07-01.yml +2398 -0
  6. data/lib/aws/api_config/DirectConnect-2012-10-25.yml +475 -0
  7. data/lib/aws/api_config/DynamoDB-2011-12-05.yml +8 -0
  8. data/lib/aws/api_config/DynamoDB-2012-08-10.yml +1516 -0
  9. data/lib/aws/api_config/OpsWorks-2013-02-18.yml +2 -2
  10. data/lib/aws/auto_scaling.rb +44 -44
  11. data/lib/aws/auto_scaling/activity.rb +1 -1
  12. data/lib/aws/auto_scaling/activity_collection.rb +14 -15
  13. data/lib/aws/auto_scaling/client.rb +277 -277
  14. data/lib/aws/auto_scaling/config.rb +1 -1
  15. data/lib/aws/auto_scaling/group.rb +35 -36
  16. data/lib/aws/auto_scaling/group_collection.rb +10 -10
  17. data/lib/aws/auto_scaling/group_options.rb +19 -19
  18. data/lib/aws/auto_scaling/instance.rb +27 -27
  19. data/lib/aws/auto_scaling/instance_collection.rb +10 -10
  20. data/lib/aws/auto_scaling/launch_configuration.rb +3 -3
  21. data/lib/aws/auto_scaling/launch_configuration_collection.rb +1 -1
  22. data/lib/aws/auto_scaling/notification_configuration.rb +2 -2
  23. data/lib/aws/auto_scaling/notification_configuration_collection.rb +37 -38
  24. data/lib/aws/auto_scaling/scaling_policy.rb +3 -3
  25. data/lib/aws/auto_scaling/scaling_policy_collection.rb +6 -6
  26. data/lib/aws/auto_scaling/scaling_policy_options.rb +8 -7
  27. data/lib/aws/auto_scaling/scheduled_action.rb +3 -3
  28. data/lib/aws/auto_scaling/scheduled_action_collection.rb +28 -28
  29. data/lib/aws/auto_scaling/tag_collection.rb +30 -28
  30. data/lib/aws/cloud_formation.rb +95 -94
  31. data/lib/aws/cloud_formation/client.rb +136 -133
  32. data/lib/aws/cloud_formation/config.rb +1 -1
  33. data/lib/aws/cloud_formation/stack.rb +37 -37
  34. data/lib/aws/cloud_formation/stack_collection.rb +28 -27
  35. data/lib/aws/cloud_formation/stack_event.rb +9 -11
  36. data/lib/aws/cloud_formation/stack_output.rb +1 -1
  37. data/lib/aws/cloud_formation/stack_resource.rb +6 -6
  38. data/lib/aws/cloud_formation/stack_resource_collection.rb +11 -12
  39. data/lib/aws/cloud_formation/stack_resource_summary_collection.rb +11 -11
  40. data/lib/aws/cloud_formation/stack_summary_collection.rb +39 -39
  41. data/lib/aws/cloud_front.rb +21 -21
  42. data/lib/aws/cloud_front/client.rb +853 -652
  43. data/lib/aws/cloud_front/request.rb +3 -0
  44. data/lib/aws/cloud_search.rb +22 -22
  45. data/lib/aws/cloud_search/client.rb +322 -315
  46. data/lib/aws/cloud_search/config.rb +1 -1
  47. data/lib/aws/cloud_watch.rb +39 -39
  48. data/lib/aws/cloud_watch/alarm.rb +55 -37
  49. data/lib/aws/cloud_watch/alarm_collection.rb +18 -18
  50. data/lib/aws/cloud_watch/alarm_history_item_collection.rb +2 -2
  51. data/lib/aws/cloud_watch/client.rb +360 -146
  52. data/lib/aws/cloud_watch/config.rb +1 -1
  53. data/lib/aws/cloud_watch/metric.rb +15 -15
  54. data/lib/aws/cloud_watch/metric_alarm_collection.rb +17 -17
  55. data/lib/aws/cloud_watch/metric_collection.rb +16 -16
  56. data/lib/aws/cloud_watch/metric_statistics.rb +11 -11
  57. data/lib/aws/core.rb +243 -225
  58. data/lib/aws/core/async_handle.rb +13 -13
  59. data/lib/aws/core/cacheable.rb +14 -15
  60. data/lib/aws/core/client.rb +40 -15
  61. data/lib/aws/core/collection.rb +42 -46
  62. data/lib/aws/core/collection/with_limit_and_next_token.rb +1 -1
  63. data/lib/aws/core/collection/with_next_token.rb +1 -1
  64. data/lib/aws/core/configuration.rb +97 -133
  65. data/lib/aws/core/credential_providers.rb +16 -16
  66. data/lib/aws/core/data.rb +23 -23
  67. data/lib/aws/core/http/connection_pool.rb +348 -0
  68. data/lib/aws/core/http/net_http_handler.rb +17 -26
  69. data/lib/aws/core/http/patch.rb +102 -0
  70. data/lib/aws/core/http/request.rb +13 -19
  71. data/lib/aws/core/http/response.rb +2 -2
  72. data/lib/aws/core/lazy_error_classes.rb +17 -17
  73. data/lib/aws/core/log_formatter.rb +70 -104
  74. data/lib/aws/core/options/json_serializer.rb +1 -1
  75. data/lib/aws/core/options/validator.rb +4 -4
  76. data/lib/aws/core/page_result.rb +8 -8
  77. data/lib/aws/core/policy.rb +49 -49
  78. data/lib/aws/core/region.rb +72 -0
  79. data/lib/aws/core/region_collection.rb +106 -0
  80. data/lib/aws/core/resource.rb +5 -5
  81. data/lib/aws/core/response.rb +20 -17
  82. data/lib/aws/core/rest_request_builder.rb +4 -4
  83. data/lib/aws/core/service_interface.rb +24 -2
  84. data/lib/aws/core/signature/version_3.rb +2 -2
  85. data/lib/aws/core/uri_escape.rb +1 -1
  86. data/lib/aws/core/xml/frame_stack.rb +1 -1
  87. data/lib/aws/core/xml/grammar.rb +3 -4
  88. data/lib/aws/core/xml/sax_handlers/libxml.rb +2 -2
  89. data/lib/aws/core/xml/sax_handlers/nokogiri.rb +3 -3
  90. data/lib/aws/core/xml/sax_handlers/rexml.rb +5 -5
  91. data/lib/aws/core/xml/stub.rb +9 -9
  92. data/lib/aws/data_pipeline.rb +21 -21
  93. data/lib/aws/data_pipeline/client.rb +189 -133
  94. data/lib/aws/data_pipeline/config.rb +1 -1
  95. data/lib/aws/direct_connect.rb +74 -0
  96. data/lib/aws/direct_connect/client.rb +253 -0
  97. data/lib/aws/direct_connect/config.rb +18 -0
  98. data/lib/aws/direct_connect/errors.rb +22 -0
  99. data/lib/aws/direct_connect/request.rb +27 -0
  100. data/lib/aws/dynamo_db.rb +71 -69
  101. data/lib/aws/dynamo_db/attribute_collection.rb +53 -58
  102. data/lib/aws/dynamo_db/batch_get.rb +23 -23
  103. data/lib/aws/dynamo_db/batch_write.rb +43 -43
  104. data/lib/aws/dynamo_db/binary.rb +9 -9
  105. data/lib/aws/dynamo_db/client.rb +494 -509
  106. data/lib/aws/dynamo_db/client_base.rb +91 -0
  107. data/lib/aws/dynamo_db/client_v2.rb +825 -0
  108. data/lib/aws/dynamo_db/config.rb +1 -1
  109. data/lib/aws/dynamo_db/item.rb +10 -10
  110. data/lib/aws/dynamo_db/item_collection.rb +75 -75
  111. data/lib/aws/dynamo_db/table.rb +85 -85
  112. data/lib/aws/dynamo_db/table_collection.rb +13 -13
  113. data/lib/aws/ec2.rb +132 -142
  114. data/lib/aws/ec2/attachment.rb +31 -36
  115. data/lib/aws/ec2/attachment_collection.rb +1 -1
  116. data/lib/aws/ec2/availability_zone.rb +4 -4
  117. data/lib/aws/ec2/client.rb +2272 -2125
  118. data/lib/aws/ec2/config.rb +1 -1
  119. data/lib/aws/ec2/customer_gateway.rb +6 -6
  120. data/lib/aws/ec2/customer_gateway_collection.rb +6 -6
  121. data/lib/aws/ec2/dhcp_options.rb +3 -3
  122. data/lib/aws/ec2/dhcp_options_collection.rb +10 -10
  123. data/lib/aws/ec2/elastic_ip.rb +15 -15
  124. data/lib/aws/ec2/elastic_ip_collection.rb +11 -15
  125. data/lib/aws/ec2/export_task.rb +4 -4
  126. data/lib/aws/ec2/export_task_collection.rb +11 -11
  127. data/lib/aws/ec2/filtered_collection.rb +6 -8
  128. data/lib/aws/ec2/image.rb +46 -40
  129. data/lib/aws/ec2/image_collection.rb +44 -52
  130. data/lib/aws/ec2/instance.rb +64 -62
  131. data/lib/aws/ec2/instance_collection.rb +47 -50
  132. data/lib/aws/ec2/internet_gateway.rb +6 -6
  133. data/lib/aws/ec2/internet_gateway/attachment.rb +13 -13
  134. data/lib/aws/ec2/internet_gateway_collection.rb +3 -3
  135. data/lib/aws/ec2/key_pair.rb +3 -3
  136. data/lib/aws/ec2/key_pair_collection.rb +12 -12
  137. data/lib/aws/ec2/network_acl.rb +39 -39
  138. data/lib/aws/ec2/network_acl/association.rb +2 -2
  139. data/lib/aws/ec2/network_acl/entry.rb +22 -22
  140. data/lib/aws/ec2/network_acl_collection.rb +2 -2
  141. data/lib/aws/ec2/network_interface.rb +13 -4
  142. data/lib/aws/ec2/network_interface/attachment.rb +3 -3
  143. data/lib/aws/ec2/network_interface_collection.rb +5 -5
  144. data/lib/aws/ec2/permission_collection.rb +1 -1
  145. data/lib/aws/ec2/region.rb +6 -6
  146. data/lib/aws/ec2/region_collection.rb +1 -1
  147. data/lib/aws/ec2/reserved_instances_collection.rb +2 -2
  148. data/lib/aws/ec2/reserved_instances_offering_collection.rb +2 -2
  149. data/lib/aws/ec2/resource_tag_collection.rb +5 -5
  150. data/lib/aws/ec2/route_table.rb +14 -14
  151. data/lib/aws/ec2/route_table/association.rb +22 -22
  152. data/lib/aws/ec2/route_table/route.rb +8 -8
  153. data/lib/aws/ec2/route_table_collection.rb +3 -3
  154. data/lib/aws/ec2/security_group.rb +39 -41
  155. data/lib/aws/ec2/security_group_collection.rb +19 -21
  156. data/lib/aws/ec2/snapshot.rb +3 -3
  157. data/lib/aws/ec2/snapshot_collection.rb +11 -12
  158. data/lib/aws/ec2/subnet.rb +2 -2
  159. data/lib/aws/ec2/subnet_collection.rb +17 -17
  160. data/lib/aws/ec2/tag_collection.rb +1 -1
  161. data/lib/aws/ec2/tagged_collection.rb +7 -7
  162. data/lib/aws/ec2/tagged_item.rb +10 -10
  163. data/lib/aws/ec2/volume.rb +16 -16
  164. data/lib/aws/ec2/volume_collection.rb +9 -12
  165. data/lib/aws/ec2/vpc.rb +6 -6
  166. data/lib/aws/ec2/vpc_collection.rb +10 -10
  167. data/lib/aws/ec2/vpn_connection.rb +4 -4
  168. data/lib/aws/ec2/vpn_connection/telemetry.rb +1 -1
  169. data/lib/aws/ec2/vpn_connection_collection.rb +6 -6
  170. data/lib/aws/ec2/vpn_gateway.rb +2 -2
  171. data/lib/aws/ec2/vpn_gateway_collection.rb +5 -5
  172. data/lib/aws/elastic_beanstalk.rb +12 -12
  173. data/lib/aws/elastic_beanstalk/client.rb +376 -368
  174. data/lib/aws/elastic_beanstalk/config.rb +1 -1
  175. data/lib/aws/elastic_transcoder.rb +5 -5
  176. data/lib/aws/elastic_transcoder/client.rb +283 -283
  177. data/lib/aws/elastic_transcoder/config.rb +1 -1
  178. data/lib/aws/elasticache.rb +12 -12
  179. data/lib/aws/elasticache/client.rb +484 -479
  180. data/lib/aws/elasticache/config.rb +1 -1
  181. data/lib/aws/elb.rb +23 -23
  182. data/lib/aws/elb/availability_zone_collection.rb +34 -34
  183. data/lib/aws/elb/backend_server_policy_collection.rb +24 -24
  184. data/lib/aws/elb/client.rb +153 -153
  185. data/lib/aws/elb/config.rb +1 -1
  186. data/lib/aws/elb/errors.rb +1 -1
  187. data/lib/aws/elb/instance_collection.rb +20 -25
  188. data/lib/aws/elb/listener.rb +3 -3
  189. data/lib/aws/elb/listener_collection.rb +8 -8
  190. data/lib/aws/elb/load_balancer.rb +15 -16
  191. data/lib/aws/elb/load_balancer_collection.rb +36 -24
  192. data/lib/aws/elb/load_balancer_policy.rb +1 -1
  193. data/lib/aws/elb/load_balancer_policy_collection.rb +5 -5
  194. data/lib/aws/emr.rb +28 -26
  195. data/lib/aws/emr/client.rb +165 -149
  196. data/lib/aws/emr/config.rb +1 -1
  197. data/lib/aws/emr/instance_group.rb +1 -1
  198. data/lib/aws/emr/instance_group_collection.rb +1 -1
  199. data/lib/aws/emr/job_flow.rb +27 -26
  200. data/lib/aws/emr/job_flow_collection.rb +34 -34
  201. data/lib/aws/errors.rb +7 -7
  202. data/lib/aws/glacier.rb +21 -21
  203. data/lib/aws/glacier/archive_collection.rb +2 -2
  204. data/lib/aws/glacier/client.rb +139 -140
  205. data/lib/aws/glacier/config.rb +1 -1
  206. data/lib/aws/glacier/vault.rb +2 -2
  207. data/lib/aws/glacier/vault_collection.rb +1 -1
  208. data/lib/aws/iam.rb +133 -144
  209. data/lib/aws/iam/access_key.rb +17 -17
  210. data/lib/aws/iam/access_key_collection.rb +22 -22
  211. data/lib/aws/iam/account_alias_collection.rb +2 -2
  212. data/lib/aws/iam/client.rb +429 -420
  213. data/lib/aws/iam/collection.rb +1 -1
  214. data/lib/aws/iam/config.rb +2 -2
  215. data/lib/aws/iam/group.rb +8 -8
  216. data/lib/aws/iam/group_collection.rb +16 -16
  217. data/lib/aws/iam/group_policy_collection.rb +6 -6
  218. data/lib/aws/iam/group_user_collection.rb +3 -3
  219. data/lib/aws/iam/mfa_device.rb +1 -1
  220. data/lib/aws/iam/mfa_device_collection.rb +9 -9
  221. data/lib/aws/iam/policy_collection.rb +4 -4
  222. data/lib/aws/iam/resource.rb +2 -2
  223. data/lib/aws/iam/server_certificate.rb +1 -1
  224. data/lib/aws/iam/server_certificate_collection.rb +15 -15
  225. data/lib/aws/iam/signing_certificate.rb +29 -29
  226. data/lib/aws/iam/signing_certificate_collection.rb +23 -23
  227. data/lib/aws/iam/user.rb +33 -38
  228. data/lib/aws/iam/user_collection.rb +27 -27
  229. data/lib/aws/iam/user_group_collection.rb +3 -3
  230. data/lib/aws/iam/user_policy_collection.rb +6 -6
  231. data/lib/aws/iam/virtual_mfa_device.rb +12 -12
  232. data/lib/aws/iam/virtual_mfa_device_collection.rb +4 -4
  233. data/lib/aws/import_export.rb +22 -21
  234. data/lib/aws/import_export/client.rb +47 -43
  235. data/lib/aws/ops_works.rb +5 -5
  236. data/lib/aws/ops_works/client.rb +484 -438
  237. data/lib/aws/ops_works/config.rb +1 -1
  238. data/lib/aws/rails.rb +34 -34
  239. data/lib/aws/rds.rb +18 -18
  240. data/lib/aws/rds/client.rb +1286 -1277
  241. data/lib/aws/rds/config.rb +1 -1
  242. data/lib/aws/rds/db_instance.rb +15 -4
  243. data/lib/aws/rds/db_snapshot.rb +1 -1
  244. data/lib/aws/record.rb +50 -24
  245. data/lib/aws/record/abstract_base.rb +52 -60
  246. data/lib/aws/record/attributes.rb +79 -79
  247. data/lib/aws/record/conversion.rb +1 -1
  248. data/lib/aws/record/dirty_tracking.rb +69 -67
  249. data/lib/aws/record/errors.rb +21 -21
  250. data/lib/aws/record/exceptions.rb +2 -2
  251. data/lib/aws/record/hash_model.rb +20 -21
  252. data/lib/aws/record/hash_model/attributes.rb +13 -15
  253. data/lib/aws/record/hash_model/finder_methods.rb +46 -46
  254. data/lib/aws/record/hash_model/scope.rb +31 -31
  255. data/lib/aws/record/model.rb +136 -136
  256. data/lib/aws/record/model/attributes.rb +57 -59
  257. data/lib/aws/record/model/finder_methods.rb +67 -67
  258. data/lib/aws/record/model/scope.rb +48 -49
  259. data/lib/aws/record/naming.rb +1 -1
  260. data/lib/aws/record/scope.rb +23 -19
  261. data/lib/aws/record/validations.rb +253 -271
  262. data/lib/aws/record/validator.rb +3 -3
  263. data/lib/aws/record/validators/acceptance.rb +1 -3
  264. data/lib/aws/record/validators/block.rb +1 -3
  265. data/lib/aws/record/validators/confirmation.rb +1 -3
  266. data/lib/aws/record/validators/count.rb +2 -4
  267. data/lib/aws/record/validators/exclusion.rb +2 -4
  268. data/lib/aws/record/validators/format.rb +2 -4
  269. data/lib/aws/record/validators/inclusion.rb +1 -3
  270. data/lib/aws/record/validators/length.rb +5 -7
  271. data/lib/aws/record/validators/method.rb +1 -3
  272. data/lib/aws/record/validators/numericality.rb +6 -8
  273. data/lib/aws/record/validators/presence.rb +1 -3
  274. data/lib/aws/redshift.rb +14 -14
  275. data/lib/aws/redshift/client.rb +596 -592
  276. data/lib/aws/redshift/config.rb +1 -1
  277. data/lib/aws/route_53.rb +30 -30
  278. data/lib/aws/route_53/change_batch.rb +7 -7
  279. data/lib/aws/route_53/client.rb +188 -152
  280. data/lib/aws/route_53/hosted_zone.rb +4 -4
  281. data/lib/aws/route_53/hosted_zone_collection.rb +7 -7
  282. data/lib/aws/route_53/resource_record_set.rb +10 -10
  283. data/lib/aws/route_53/resource_record_set_collection.rb +6 -6
  284. data/lib/aws/s3.rb +79 -79
  285. data/lib/aws/s3/access_control_list.rb +44 -36
  286. data/lib/aws/s3/acl_options.rb +51 -51
  287. data/lib/aws/s3/bucket.rb +146 -146
  288. data/lib/aws/s3/bucket_collection.rb +21 -21
  289. data/lib/aws/s3/bucket_lifecycle_configuration.rb +81 -82
  290. data/lib/aws/s3/bucket_tag_collection.rb +4 -2
  291. data/lib/aws/s3/cipher_io.rb +5 -4
  292. data/lib/aws/s3/client.rb +89 -84
  293. data/lib/aws/s3/client/xml.rb +1 -1
  294. data/lib/aws/s3/config.rb +7 -1
  295. data/lib/aws/s3/cors_rule.rb +2 -0
  296. data/lib/aws/s3/cors_rule_collection.rb +42 -40
  297. data/lib/aws/s3/data_options.rb +16 -11
  298. data/lib/aws/s3/encryption_utils.rb +2 -2
  299. data/lib/aws/s3/errors.rb +7 -7
  300. data/lib/aws/s3/multipart_upload.rb +30 -33
  301. data/lib/aws/s3/multipart_upload_collection.rb +8 -6
  302. data/lib/aws/s3/object_collection.rb +35 -35
  303. data/lib/aws/s3/object_metadata.rb +6 -6
  304. data/lib/aws/s3/object_version.rb +4 -4
  305. data/lib/aws/s3/object_version_collection.rb +15 -15
  306. data/lib/aws/s3/policy.rb +2 -2
  307. data/lib/aws/s3/prefixed_collection.rb +9 -5
  308. data/lib/aws/s3/presigned_post.rb +39 -37
  309. data/lib/aws/s3/request.rb +11 -11
  310. data/lib/aws/s3/s3_object.rb +210 -200
  311. data/lib/aws/s3/tree.rb +25 -27
  312. data/lib/aws/s3/tree/child_collection.rb +3 -3
  313. data/lib/aws/s3/tree/leaf_node.rb +2 -2
  314. data/lib/aws/s3/tree/parent.rb +1 -1
  315. data/lib/aws/s3/website_configuration.rb +13 -13
  316. data/lib/aws/simple_db.rb +83 -83
  317. data/lib/aws/simple_db/attribute.rb +9 -7
  318. data/lib/aws/simple_db/attribute_collection.rb +22 -13
  319. data/lib/aws/simple_db/client.rb +107 -107
  320. data/lib/aws/simple_db/config.rb +7 -1
  321. data/lib/aws/simple_db/consistent_read_option.rb +5 -5
  322. data/lib/aws/simple_db/domain.rb +4 -2
  323. data/lib/aws/simple_db/domain_collection.rb +4 -4
  324. data/lib/aws/simple_db/domain_metadata.rb +5 -5
  325. data/lib/aws/simple_db/errors.rb +9 -9
  326. data/lib/aws/simple_db/item.rb +5 -5
  327. data/lib/aws/simple_db/item_collection.rb +83 -81
  328. data/lib/aws/simple_db/item_data.rb +4 -4
  329. data/lib/aws/simple_db/put_attributes.rb +3 -3
  330. data/lib/aws/simple_email_service.rb +140 -140
  331. data/lib/aws/simple_email_service/client.rb +82 -76
  332. data/lib/aws/simple_email_service/config.rb +1 -2
  333. data/lib/aws/simple_email_service/email_address_collection.rb +3 -3
  334. data/lib/aws/simple_email_service/identity.rb +8 -8
  335. data/lib/aws/simple_email_service/quotas.rb +8 -6
  336. data/lib/aws/simple_workflow.rb +106 -106
  337. data/lib/aws/simple_workflow/activity_task.rb +15 -22
  338. data/lib/aws/simple_workflow/activity_task_collection.rb +15 -15
  339. data/lib/aws/simple_workflow/activity_type.rb +23 -23
  340. data/lib/aws/simple_workflow/activity_type_collection.rb +23 -23
  341. data/lib/aws/simple_workflow/client.rb +1004 -956
  342. data/lib/aws/simple_workflow/config.rb +1 -1
  343. data/lib/aws/simple_workflow/count.rb +5 -5
  344. data/lib/aws/simple_workflow/decision_task.rb +129 -129
  345. data/lib/aws/simple_workflow/decision_task_collection.rb +59 -59
  346. data/lib/aws/simple_workflow/domain.rb +11 -11
  347. data/lib/aws/simple_workflow/domain_collection.rb +26 -26
  348. data/lib/aws/simple_workflow/history_event.rb +32 -32
  349. data/lib/aws/simple_workflow/history_event_collection.rb +3 -3
  350. data/lib/aws/simple_workflow/option_formatters.rb +5 -5
  351. data/lib/aws/simple_workflow/request.rb +1 -1
  352. data/lib/aws/simple_workflow/resource.rb +1 -1
  353. data/lib/aws/simple_workflow/type.rb +8 -8
  354. data/lib/aws/simple_workflow/type_collection.rb +15 -15
  355. data/lib/aws/simple_workflow/workflow_execution.rb +70 -72
  356. data/lib/aws/simple_workflow/workflow_execution_collection.rb +130 -130
  357. data/lib/aws/simple_workflow/workflow_type.rb +27 -25
  358. data/lib/aws/simple_workflow/workflow_type_collection.rb +20 -20
  359. data/lib/aws/sns.rb +25 -25
  360. data/lib/aws/sns/client.rb +55 -55
  361. data/lib/aws/sns/config.rb +1 -1
  362. data/lib/aws/sns/policy.rb +1 -1
  363. data/lib/aws/sns/subscription.rb +7 -7
  364. data/lib/aws/sns/subscription_collection.rb +5 -5
  365. data/lib/aws/sns/topic.rb +49 -49
  366. data/lib/aws/sns/topic_collection.rb +2 -2
  367. data/lib/aws/sns/topic_subscription_collection.rb +5 -5
  368. data/lib/aws/sqs.rb +20 -20
  369. data/lib/aws/sqs/client.rb +78 -78
  370. data/lib/aws/sqs/config.rb +1 -1
  371. data/lib/aws/sqs/errors.rb +12 -12
  372. data/lib/aws/sqs/queue.rb +66 -67
  373. data/lib/aws/sqs/queue_collection.rb +16 -8
  374. data/lib/aws/sqs/received_message.rb +7 -6
  375. data/lib/aws/storage_gateway.rb +21 -21
  376. data/lib/aws/storage_gateway/client.rb +269 -202
  377. data/lib/aws/storage_gateway/config.rb +1 -1
  378. data/lib/aws/sts.rb +10 -8
  379. data/lib/aws/sts/client.rb +35 -35
  380. data/lib/aws/sts/session.rb +3 -3
  381. data/lib/aws/version.rb +1 -2
  382. metadata +23 -21
  383. data/lib/aws/core/autoloader.rb +0 -64
  384. data/lib/net/http/connection_pool.rb +0 -226
  385. data/lib/net/http/connection_pool/connection.rb +0 -189
  386. data/lib/net/http/connection_pool/session.rb +0 -126
@@ -14,22 +14,22 @@
14
14
  module AWS
15
15
  class S3
16
16
 
17
- # Represents a collection of buckets.
17
+ # Represents a collection of buckets.
18
18
  #
19
19
  # You can use this to create a bucket:
20
20
  #
21
- # s3.buckets.create(:name => "mybucket")
21
+ # s3.buckets.create(:name => "mybucket")
22
22
  #
23
23
  # You can get a handle for a specific bucket with indifferent
24
24
  # access:
25
25
  #
26
- # bucket = s3.buckets[:mybucket]
27
- # bucket = s3.buckets['mybucket']
26
+ # bucket = s3.buckets[:mybucket]
27
+ # bucket = s3.buckets['mybucket']
28
28
  #
29
29
  # You can also use it to find out which buckets are in your account:
30
30
  #
31
- # s3.buckets.collect(&:name)
32
- # #=> ['bucket1', 'bucket2', ...]
31
+ # s3.buckets.collect(&:name)
32
+ # #=> ['bucket1', 'bucket2', ...]
33
33
  #
34
34
  class BucketCollection
35
35
 
@@ -43,8 +43,8 @@ module AWS
43
43
  # against the bucket using the S3 endpoint specific to the
44
44
  # region in which your bucket resides. For example:
45
45
  #
46
- # s3 = AWS::S3.new(:s3_endpoint => "s3-eu-west-1.amazonaws.com")
47
- # bucket = s3.buckets.create("my.eu.bucket")
46
+ # s3 = AWS::S3.new(:region => "eu-west-1")
47
+ # bucket = s3.buckets.create("my.eu.bucket")
48
48
  #
49
49
  # For a full list of endpoints and regions, see
50
50
  # {http://docs.amazonwebservices.com/general/latest/gr/index.html?rande.html
@@ -68,17 +68,17 @@ module AWS
68
68
  # appropriate location constraint for the endpoint. For
69
69
  # example:
70
70
  #
71
- # s3 = AWS::S3.new(:s3_endpoint => "s3-us-west-1.amazonaws.com")
72
- # bucket = s3.buckets.create("my-us-west-bucket")
73
- # bucket.location_constraint # => "us-west-1"
71
+ # s3 = AWS::S3.new(:region => "us-west-1")
72
+ # bucket = s3.buckets.create("my-us-west-bucket")
73
+ # bucket.location_constraint # => "us-west-1"
74
74
  #
75
- # @option options [Symbol,String] :acl (:private) Sets the ACL of the
75
+ # @option options [Symbol,String] :acl (:private) Sets the ACL of the
76
76
  # bucket you are creating. Valid Values include:
77
- # * +:private+
78
- # * +:public_read+
79
- # * +:public_read_write+
80
- # * +:authenticated_read+
81
- # * +:log_delivery_write+
77
+ # * `:private`
78
+ # * `:public_read`
79
+ # * `:public_read_write`
80
+ # * `:authenticated_read`
81
+ # * `:log_delivery_write`
82
82
  #
83
83
  # @option options [String] :grant_read
84
84
  # @option options [String] :grant_write
@@ -95,10 +95,10 @@ module AWS
95
95
  options[:acl] = acl.to_s.tr('_', '-')
96
96
  end
97
97
 
98
- # auto set the location constraint for the user if it is not
99
- # passed in and the endpoint is not the us-standard region. don't
100
- # override the location constraint though, even it is wrong,
101
- unless
98
+ # auto set the location constraint for the user if it is not
99
+ # passed in and the endpoint is not the us-standard region. don't
100
+ # override the location constraint though, even it is wrong,
101
+ unless
102
102
  config.s3_endpoint == 's3.amazonaws.com' or
103
103
  options[:location_constraint]
104
104
  then
@@ -21,7 +21,7 @@ module AWS
21
21
  # Amazon S3 stores objects. The rules apply to objects whose keys match
22
22
  # the rule's prefix.
23
23
  #
24
- # == Rules
24
+ # ## Rules
25
25
  #
26
26
  # A rule is comprised primarily of an id, prefix and set of
27
27
  # configuration options. Configuration options on the rules can specify:
@@ -33,84 +33,84 @@ module AWS
33
33
  # See {Rule} for more information on all of the attributes and methods
34
34
  # available for rules.
35
35
  #
36
- # == Expiring Objects
36
+ # ## Expiring Objects
37
37
  #
38
38
  # You can add a rule to a bucket lifecycle configuration using {#add_rule}
39
39
  # inside of an {#update} block that will expire an object after a given
40
40
  # number of days:
41
41
  #
42
- # # delete backups after they are 1 year old
43
- # bucket.lifecycle_configuration.update do
44
- # add_rule('backups/', :expiration_time => 365)
45
- # end
42
+ # # delete backups after they are 1 year old
43
+ # bucket.lifecycle_configuration.update do
44
+ # add_rule('backups/', :expiration_time => 365)
45
+ # end
46
46
  #
47
47
  # You can also define the rule to expire objects at a specific date:
48
48
  #
49
- # # delete backups on January 1st of next year
50
- # bucket.lifecycle_configuration.update do
51
- # date = Date.new(Time.now.year + 1, 01, 01)
52
- # add_rule('backups/', :expiration_time => date)
53
- # end
49
+ # # delete backups on January 1st of next year
50
+ # bucket.lifecycle_configuration.update do
51
+ # date = Date.new(Time.now.year + 1, 01, 01)
52
+ # add_rule('backups/', :expiration_time => date)
53
+ # end
54
54
  #
55
- # == Transitioning Objects to Glacier
55
+ # ## Transitioning Objects to Glacier
56
56
  #
57
57
  # You can add a rule to a bucket lifecycle configuration using {#add_rule}
58
58
  # inside of an {#update} block that will transition objects to Glacier
59
59
  # after a given number of days:
60
60
  #
61
- # # move backups to Glacier after 3 days
62
- # bucket.lifecycle_configuration.update do
63
- # add_rule('backups/', :glacier_transition_time => 3)
64
- # end
61
+ # # move backups to Glacier after 3 days
62
+ # bucket.lifecycle_configuration.update do
63
+ # add_rule('backups/', :glacier_transition_time => 3)
64
+ # end
65
65
  #
66
66
  # You can also define the rule to transition objects at a specific date:
67
67
  #
68
- # # transition all backups on January 1st of next year
69
- # bucket.lifecycle_configuration.update do
70
- # date = Date.new(Time.now.year + 1, 01, 01)
71
- # add_rule('backups/', :glacier_transition_time => date)
72
- # end
68
+ # # transition all backups on January 1st of next year
69
+ # bucket.lifecycle_configuration.update do
70
+ # date = Date.new(Time.now.year + 1, 01, 01)
71
+ # add_rule('backups/', :glacier_transition_time => date)
72
+ # end
73
73
  #
74
- # == Replacing Rules
74
+ # ## Replacing Rules
75
75
  #
76
76
  # If you prefer to completely replace a lifecycle configuration, call
77
- # {#add_rule} inside a {#replace} block instead of an +#update+ block:
77
+ # {#add_rule} inside a {#replace} block instead of an `#update` block:
78
78
  #
79
- # # replace all existing rules with the following
80
- # bucket.lifecycle_configuration.replace do
81
- # add_rule('backups/', :glacier_transition_time => 10)
82
- # add_rule('temp/', :expiration_time => 30)
83
- # end
79
+ # # replace all existing rules with the following
80
+ # bucket.lifecycle_configuration.replace do
81
+ # add_rule('backups/', :glacier_transition_time => 10)
82
+ # add_rule('temp/', :expiration_time => 30)
83
+ # end
84
84
  #
85
- # == Removing Rules
85
+ # ## Removing Rules
86
86
  #
87
87
  # You can delete specific rules with {#remove_rule}.
88
88
  #
89
- # # delete all disabled rules
90
- # bucket.lifecycle_configuration.update do
91
- # rules.each do |rule|
92
- # remove_rule(rule) if rule.disabled?
89
+ # # delete all disabled rules
90
+ # bucket.lifecycle_configuration.update do
91
+ # rules.each do |rule|
92
+ # remove_rule(rule) if rule.disabled?
93
+ # end
93
94
  # end
94
- # end
95
95
  #
96
96
  # You can also remove all rules in a single call with {#clear}:
97
97
  #
98
- # # remove all rules from this lifecycle configuration
99
- # bucket.lifecycle_configuration.clear
98
+ # # remove all rules from this lifecycle configuration
99
+ # bucket.lifecycle_configuration.clear
100
100
  #
101
- # == Editing Existing Rules
101
+ # ## Editing Existing Rules
102
102
  #
103
103
  # You can also make changes to existing rules.
104
104
  #
105
- # # change the expiration days to 10 for EVERY rule
106
- # bucket.lifecycle_configuration.update do
107
- # rules.each do |rule|
108
- # rule.expiration_time = 10
105
+ # # change the expiration days to 10 for EVERY rule
106
+ # bucket.lifecycle_configuration.update do
107
+ # rules.each do |rule|
108
+ # rule.expiration_time = 10
109
+ # end
109
110
  # end
110
- # end
111
111
  #
112
112
  # Please be aware, if you add, remove or edit rules outside of an
113
- # {#update} or {#replace} block, then you must call +#update+ yourself
113
+ # {#update} or {#replace} block, then you must call `#update` yourself
114
114
  # or the changes will not be persisted.
115
115
  #
116
116
  class BucketLifecycleConfiguration
@@ -148,7 +148,7 @@ module AWS
148
148
  #
149
149
  # @option options [Boolean] :disabled (false) By default, all rules
150
150
  # will have the status of enabled. You can override this default
151
- # by passing +:disabled+ => true.
151
+ # by passing `:disabled` => true.
152
152
  #
153
153
  # @option options [Date, Integer] :expiration_time (nil) Indicates
154
154
  # the lifetime for objects matching the given prefix.
@@ -179,17 +179,17 @@ module AWS
179
179
  # Removes a single rule. You can pass a rule id or a {Rule}
180
180
  # object.
181
181
  #
182
- # # remove a single rule by its ID
183
- # bucket.lifecycle_configuration.update do
184
- # remove_rule('rule-id')
185
- # end
182
+ # # remove a single rule by its ID
183
+ # bucket.lifecycle_configuration.update do
184
+ # remove_rule('rule-id')
185
+ # end
186
186
  #
187
- # # remove all disabled rules
188
- # bucket.lifecycle_configuration.update do
189
- # rules.each do |rule|
190
- # remove_rule(rule) if rule.disabled?
187
+ # # remove all disabled rules
188
+ # bucket.lifecycle_configuration.update do
189
+ # rules.each do |rule|
190
+ # remove_rule(rule) if rule.disabled?
191
+ # end
191
192
  # end
192
- # end
193
193
  #
194
194
  # If you call #remove_rule outside an update block
195
195
  # you need to call #update to save the changes.
@@ -210,34 +210,34 @@ module AWS
210
210
 
211
211
  # Saves changes made to this lifecycle configuration.
212
212
  #
213
- # # set the number of days before expiration for all rules to 10
214
- # config = bucket.lifecycle_configuration
215
- # config.rules.each do |rule|
216
- # rule.expiration_time = 10
217
- # end
218
- # config.update
213
+ # # set the number of days before expiration for all rules to 10
214
+ # config = bucket.lifecycle_configuration
215
+ # config.rules.each do |rule|
216
+ # rule.expiration_time = 10
217
+ # end
218
+ # config.update
219
219
  #
220
220
  # You can call #update with a block. Changes are persisted at the
221
221
  # end of the block.
222
222
  #
223
- # # shorter version of the example above
224
- # bucket.lifecycle_configuration.update do
225
- # rules.each {|rule| rule.expiration_time = 10 }
226
- # end
223
+ # # shorter version of the example above
224
+ # bucket.lifecycle_configuration.update do
225
+ # rules.each {|rule| rule.expiration_time = 10 }
226
+ # end
227
227
  #
228
228
  # A block method for updating a BucketLifecycleConfiguration.
229
229
  # All modifications made inside the block are persisted at the end of
230
230
  # the block.
231
231
  #
232
- # # 1 request
233
- # bucket.lifecycle_configuration.update do
234
- # add_rule 'prefix/a', 10
235
- # add_rule 'prefix/b', 5
236
- # end
232
+ # # 1 request
233
+ # bucket.lifecycle_configuration.update do
234
+ # add_rule 'prefix/a', 10
235
+ # add_rule 'prefix/b', 5
236
+ # end
237
237
  #
238
- # # 2 requests
239
- # bucket.lifecycle_configuration.add_rule 'prefix/a', 10
240
- # bucket.lifecycle_configuration.add_rule 'prefix/b', 5
238
+ # # 2 requests
239
+ # bucket.lifecycle_configuration.add_rule 'prefix/a', 10
240
+ # bucket.lifecycle_configuration.add_rule 'prefix/b', 5
241
241
  #
242
242
  # @return [nil]
243
243
  #
@@ -259,15 +259,14 @@ module AWS
259
259
  # When the block is complete, a single call will be made to save
260
260
  # the new rules.
261
261
  #
262
- # bucket.lifecycle_configuration.rules.size #=> 3
262
+ # bucket.lifecycle_configuration.rules.size #=> 3
263
263
  #
264
- # # replace the existing 3 rules with a single rule
265
- # bucket.lifecycle_configuration.replace
266
- # add_rule 'temp/', 10
267
- # end
268
- #
269
- # bucket.lifecycle_configuration.rules.size #=> 1
264
+ # # replace the existing 3 rules with a single rule
265
+ # bucket.lifecycle_configuration.replace
266
+ # add_rule 'temp/', 10
267
+ # end
270
268
  #
269
+ # bucket.lifecycle_configuration.rules.size #=> 1
271
270
  def replace &block
272
271
  @rules = []
273
272
  update(&block)
@@ -326,11 +325,11 @@ module AWS
326
325
  # Represents a single rule from an Amazon S3 bucket lifecycle
327
326
  # configuration.
328
327
  #
329
- # # delete all objects with the prefix 'temporary/' after 10 days
330
- # bucket.lifecycle_configuration.add_rule 'temporary/', 10
328
+ # # delete all objects with the prefix 'temporary/' after 10 days
329
+ # bucket.lifecycle_configuration.add_rule 'temporary/', 10
331
330
  #
332
- # # remove the rule created above
333
- # bucket.lifecycle_configuration.remove_rule 'temporary/'
331
+ # # remove the rule created above
332
+ # bucket.lifecycle_configuration.remove_rule 'temporary/'
334
333
  #
335
334
  #
336
335
  class Rule
@@ -50,7 +50,7 @@ module AWS
50
50
 
51
51
  # @param [String] key
52
52
  # @return [String,nil] Returns the tag for the given key. If there
53
- # Returns +nil+ if the key does not exist.
53
+ # Returns `nil` if the key does not exist.
54
54
  def [] key
55
55
  self.to_h[key]
56
56
  end
@@ -74,6 +74,8 @@ module AWS
74
74
 
75
75
  # Removes all tags from the bucket.
76
76
  #
77
+ # @example
78
+ #
77
79
  # bucket.tags.clear
78
80
  # bucket.tags.to_h #=> {}
79
81
  #
@@ -92,7 +94,7 @@ module AWS
92
94
  alias_method :to_hash, :to_h
93
95
 
94
96
  # @param [Hash] other
95
- # @return [Boolean] Returns +true+ if the tags for this bucket match
97
+ # @return [Boolean] Returns `true` if the tags for this bucket match
96
98
  # the passed hash.
97
99
  def eql? other
98
100
  self.to_h == other
@@ -44,15 +44,16 @@ module AWS
44
44
 
45
45
  # @return [String] Returns the requested number of bytes. If no byte
46
46
  # amount is given, it will return the entire body of encrypted data
47
- def read bytes = nil
48
- if bytes
47
+ def read bytes = nil, output_buffer = nil
48
+ data = if bytes
49
49
  (@eof) ? nil : read_chunk(bytes)
50
50
  else
51
- (@eof) ? "" : read_all()
51
+ (@eof) ? "" : read_all
52
52
  end
53
+ output_buffer ? output_buffer.replace(data || '') : data
53
54
  end
54
55
 
55
- # @return [Boolean] Returns +true+ when the entire stream has been read.
56
+ # @return [Boolean] Returns `true` when the entire stream has been read.
56
57
  def eof?
57
58
  @eof
58
59
  end
@@ -29,9 +29,7 @@ module AWS
29
29
 
30
30
  XMLNS = "http://s3.amazonaws.com/doc/#{API_VERSION}/"
31
31
 
32
- AWS.register_autoloads(self) do
33
- autoload :XML, 'xml'
34
- end
32
+ autoload :XML, 'aws/s3/client/xml'
35
33
 
36
34
  # @private
37
35
  EMPTY_BODY_ERRORS = {
@@ -161,7 +159,6 @@ module AWS
161
159
  bucket_method(:put_bucket_website, :put, 'website') do
162
160
 
163
161
  configure_request do |req, options|
164
- validate_bucket_name!(options[:bucket_name])
165
162
  req.body = Nokogiri::XML::Builder.new do |xml|
166
163
  xml.WebsiteConfiguration(:xmlns => XMLNS) do
167
164
 
@@ -221,10 +218,10 @@ module AWS
221
218
  # @param [Hash] options
222
219
  # @option options [required,String] :bucket_name
223
220
  # @return [Core::Response]
224
- # * +:index_document+ - (Hash)
225
- # * +:suffix+ - (String)
226
- # * +:error_document+ - (Hash)
227
- # * +:key+ - (String)
221
+ # * `:index_document` - (Hash)
222
+ # * `:suffix` - (String)
223
+ # * `:error_document` - (Hash)
224
+ # * `:key` - (String)
228
225
  bucket_method(:get_bucket_website, :get, 'website', XML::GetBucketWebsite)
229
226
 
230
227
  # @overload delete_bucket_website(options = {})
@@ -292,16 +289,16 @@ module AWS
292
289
  # @param [Hash] options
293
290
  # @option options [required,String] :bucket_name
294
291
  # @option options [required,Array<Hash>] :rules An array of rule hashes.
295
- # * +:id+ - (String) A unique identifier for the rule. The ID
292
+ # * `:id` - (String) A unique identifier for the rule. The ID
296
293
  # value can be up to 255 characters long. The IDs help you find
297
294
  # a rule in the configuration.
298
- # * +:allowed_methods+ - (required,Array<String>) A list of HTTP
295
+ # * `:allowed_methods` - (required,Array<String>) A list of HTTP
299
296
  # methods that you want to allow the origin to execute.
300
297
  # Each rule must identify at least one method.
301
- # * +:allowed_origins+ - (required,Array<String>) A list of origins
298
+ # * `:allowed_origins` - (required,Array<String>) A list of origins
302
299
  # you want to allow cross-domain requests from. This can
303
300
  # contain at most one * wild character.
304
- # * +:allowed_headers+ - (Array<String>) A list of headers allowed
301
+ # * `:allowed_headers` - (Array<String>) A list of headers allowed
305
302
  # in a pre-flight OPTIONS request via the
306
303
  # Access-Control-Request-Headers header. Each header name
307
304
  # specified in the Access-Control-Request-Headers header must
@@ -309,10 +306,10 @@ module AWS
309
306
  # Amazon S3 will send only the allowed headers in a response
310
307
  # that were requested. This can contain at most one * wild
311
308
  # character.
312
- # * +:max_age_seconds+ - (Integer) The time in seconds that your
309
+ # * `:max_age_seconds` - (Integer) The time in seconds that your
313
310
  # browser is to cache the preflight response for the specified
314
311
  # resource.
315
- # * +:expose_headers+ - (Array<String>) One or more headers in
312
+ # * `:expose_headers` - (Array<String>) One or more headers in
316
313
  # the response that you want customers to be able to access
317
314
  # from their applications (for example, from a JavaScript
318
315
  # XMLHttpRequest object).
@@ -472,7 +469,7 @@ module AWS
472
469
  # @param [Hash] options
473
470
  # @option options [required,String] :bucket_name
474
471
  # @option options [required,String] :policy This can be a String
475
- # or any object that responds to +#to_json+.
472
+ # or any object that responds to `#to_json`.
476
473
  # @return [Core::Response]
477
474
  bucket_method(:set_bucket_policy, :put, 'policy') do
478
475
 
@@ -586,9 +583,9 @@ module AWS
586
583
  # Sets the access control list for a bucket. You must specify an ACL
587
584
  # via one of the following methods:
588
585
  #
589
- # * as a canned ACL (via +:acl+)
590
- # * as a list of grants (via the +:grant_*+ options)
591
- # * as an access control policy document (via +:access_control_policy+)
586
+ # * as a canned ACL (via `:acl`)
587
+ # * as a list of grants (via the `:grant_*` options)
588
+ # * as an access control policy document (via `:access_control_policy`)
592
589
  #
593
590
  # @example Using a canned acl
594
591
  # s3_client.put_bucket_acl(
@@ -675,9 +672,9 @@ module AWS
675
672
  # Sets the access control list for an object. You must specify an ACL
676
673
  # via one of the following methods:
677
674
  #
678
- # * as a canned ACL (via +:acl+)
679
- # * as a list of grants (via the +:grant_*+ options)
680
- # * as an access control policy document (via +:access_control_policy+)
675
+ # * as a canned ACL (via `:acl`)
676
+ # * as a list of grants (via the `:grant_*` options)
677
+ # * as an access control policy document (via `:access_control_policy`)
681
678
  #
682
679
  # @example Using a canned acl
683
680
  # s3_client.put_object_acl(
@@ -774,7 +771,7 @@ module AWS
774
771
  # :data => 'This is the readme for ...',
775
772
  # })
776
773
  #
777
- # == Block Form
774
+ # ## Block Form
778
775
  #
779
776
  # In block form, this method yields a stream to the block that
780
777
  # accepts data chunks. For example:
@@ -808,24 +805,24 @@ module AWS
808
805
  # @option options [required,String,Pathname,File,IO] :data
809
806
  # The data to upload. This can be provided as a string,
810
807
  # a Pathname object, or any object that responds to
811
- # +#read+ and +#eof?+ (e.g. IO, File, Tempfile, StringIO, etc).
808
+ # `#read` and `#eof?` (e.g. IO, File, Tempfile, StringIO, etc).
812
809
  # @option options [Integer] :content_length
813
810
  # Required if you are using block form to write data or if it is
814
- # not possible to determine the size of +:data+. A best effort
811
+ # not possible to determine the size of `:data`. A best effort
815
812
  # is made to determine the content length of strings, files,
816
813
  # tempfiles, io objects, and any object that responds
817
- # to +#length+ or +#size+.
814
+ # to `#length` or `#size`.
818
815
  # @option options [String] :website_redirect_location If the bucket is
819
816
  # configured as a website, redirects requests for this object to
820
817
  # another object in the same bucket or to an external URL.
821
818
  # @option options [Hash] :metadata
822
819
  # A hash of metadata to be included with the
823
820
  # object. These will be sent to S3 as headers prefixed with
824
- # +x-amz-meta+.
821
+ # `x-amz-meta`.
825
822
  # @option options [Symbol] :acl (:private) A canned access
826
823
  # control policy. Accepted values include:
827
- # * +:private+
828
- # * +:public_read+
824
+ # * `:private`
825
+ # * `:public_read`
829
826
  # * ...
830
827
  # @option options [String] :storage_class+ ('STANDARD')
831
828
  # Controls whether Reduced Redundancy Storage is enabled for
@@ -834,7 +831,7 @@ module AWS
834
831
  # @option options [Symbol,String] :server_side_encryption (nil) The
835
832
  # algorithm used to encrypt the object on the server side
836
833
  # (e.g. :aes256).
837
- # object on the server side, e.g. +:aes256+)
834
+ # object on the server side, e.g. `:aes256`)
838
835
  # @option options [String] :cache_control
839
836
  # Can be used to specify caching behavior.
840
837
  # @option options [String] :content_disposition
@@ -842,7 +839,7 @@ module AWS
842
839
  # @option options [String] :content_encoding
843
840
  # Specifies the content encoding.
844
841
  # @option options [String] :content_md5
845
- # The base64 encoded content md5 of the +:data+.
842
+ # The base64 encoded content md5 of the `:data`.
846
843
  # @option options [String] :content_type
847
844
  # Specifies the content type.
848
845
  # @option options [String] :expires The date and time at which the
@@ -903,25 +900,25 @@ module AWS
903
900
  # @option options [required,String] :bucket_name
904
901
  # @option options [required,String] :key
905
902
  # @option options [Time] :if_modified_since If specified, the
906
- # response will contain an additional +:modified+ value that
903
+ # response will contain an additional `:modified` value that
907
904
  # returns true if the object was modified after the given
908
- # time. If +:modified+ is false, then the response
909
- # +:data+ value will be +nil+.
905
+ # time. If `:modified` is false, then the response
906
+ # `:data` value will be `nil`.
910
907
  # @option options [Time] :if_unmodified_since If specified, the
911
- # response will contain an additional +:unmodified+ value
908
+ # response will contain an additional `:unmodified` value
912
909
  # that is true if the object was not modified after the
913
- # given time. If +:unmodified+ returns false, the +:data+
914
- # value will be +nil+.
910
+ # given time. If `:unmodified` returns false, the `:data`
911
+ # value will be `nil`.
915
912
  # @option options [String] :if_match If specified, the response
916
- # will contain an additional +:matches+ value that is true
913
+ # will contain an additional `:matches` value that is true
917
914
  # if the object ETag matches the value for this option. If
918
- # +:matches+ is false, the +:data+ value of the
919
- # response will be +nil+.
915
+ # `:matches` is false, the `:data` value of the
916
+ # response will be `nil`.
920
917
  # @option options [String] :if_none_match If specified, the
921
- # response will contain an additional +:matches+ value that
918
+ # response will contain an additional `:matches` value that
922
919
  # is true if and only if the object ETag matches the value for
923
- # this option. If +:matches+ is true, the +:data+ value
924
- # of the response will be +nil+.
920
+ # this option. If `:matches` is true, the `:data` value
921
+ # of the response will be `nil`.
925
922
  # @option options [Range<Integer>] :range A byte range of data to request.
926
923
  # @return [Core::Response]
927
924
  #
@@ -1150,31 +1147,34 @@ module AWS
1150
1147
  # @overload delete_objects(options = {})
1151
1148
  # @param [Hash] options
1152
1149
  # @option options [required,String] :bucket_name
1153
- # @option options [required,Array<String>] :keys
1150
+ # @option options [required,Array<Hash>] :objects Each entry should be
1151
+ # a hash with the following keys:
1152
+ # * `:key` - *required*
1153
+ # * `:version_id`
1154
1154
  # @option options [Boolean] :quiet (true)
1155
1155
  # @option options [String] :mfa
1156
1156
  # @return [Core::Response]
1157
- bucket_method(:delete_objects, :post, 'delete', XML::DeleteObjects, :header_options => { :mfa => "x-amz-mfa" }) do
1157
+ bucket_method(:delete_objects, :post, 'delete', XML::DeleteObjects,
1158
+ :header_options => { :mfa => "x-amz-mfa" }
1159
+ ) do
1160
+
1158
1161
  configure_request do |req, options|
1159
1162
 
1160
1163
  super(req, options)
1161
1164
 
1162
- quiet = options.key?(:quiet) ? options[:quiet] : true
1163
-
1164
- # previously named this option :objects, since renamed
1165
- keys = options[:objects] || options[:keys]
1166
-
1167
- objects = keys.inject('') do |xml,o|
1168
- xml << "<Object><Key>#{REXML::Text.normalize(o[:key])}</Key>"
1169
- xml << "<VersionId>#{o[:version_id]}</VersionId>" if o[:version_id]
1170
- xml << "</Object>"
1171
- end
1165
+ req.body = Nokogiri::XML::Builder.new do |xml|
1166
+ xml.Delete do
1167
+ xml.Quiet(options.key?(:quiet) ? options[:quiet] : true)
1168
+ (options[:objects] || options[:keys]).each do |obj|
1169
+ xml.Object do
1170
+ xml.Key(obj[:key])
1171
+ xml.VersionId(obj[:version_id]) if obj[:version_id]
1172
+ end
1173
+ end
1174
+ end
1175
+ end.doc.root.to_xml
1172
1176
 
1173
- xml = '<?xml version="1.0" encoding="UTF-8"?>'
1174
- xml << "<Delete><Quiet>#{quiet}</Quiet>#{objects}</Delete>"
1175
-
1176
- req.body = xml
1177
- req.headers['content-md5'] = md5(xml)
1177
+ req.headers['content-md5'] = md5(req.body)
1178
1178
 
1179
1179
  end
1180
1180
  end
@@ -1188,7 +1188,7 @@ module AWS
1188
1188
  # @option options [required,String,Pathname,File,IO] :data
1189
1189
  # The data to upload. This can be provided as a string,
1190
1190
  # a Pathname object, or any object that responds to
1191
- # +#read+ and +#eof?+ (e.g. IO, File, Tempfile, StringIO, etc).
1191
+ # `#read` and `#eof?` (e.g. IO, File, Tempfile, StringIO, etc).
1192
1192
  # @return [Core::Response]
1193
1193
  object_method(:upload_part, :put,
1194
1194
  :header_options => {
@@ -1223,7 +1223,10 @@ module AWS
1223
1223
  # @option options [required,String] :bucket_name
1224
1224
  # @option options [required,String] :key
1225
1225
  # @option options [required,String] :upload_id
1226
- # @option options [required,Array<String>] :parts
1226
+ # @option options [required,Array<Hash>] :parts An array of hashes
1227
+ # with the following keys:
1228
+ # * `:part_number` [Integer] - *required*
1229
+ # * `:etag` [String] - *required*
1227
1230
  # @return [Core::Response]
1228
1231
  object_method(:complete_multipart_upload, :post,
1229
1232
  XML::CompleteMultipartUpload) do
@@ -1232,14 +1235,18 @@ module AWS
1232
1235
  validate_parts!(options[:parts])
1233
1236
  super(req, options)
1234
1237
  req.add_param('uploadId', options[:upload_id])
1235
- parts_xml = options[:parts].map do |part|
1236
- "<Part>"+
1237
- "<PartNumber>#{part[:part_number].to_i}</PartNumber>"+
1238
- "<ETag>#{REXML::Text.normalize(part[:etag].to_s)}</ETag>"+
1239
- "</Part>"
1240
- end.join
1241
- req.body =
1242
- "<CompleteMultipartUpload>#{parts_xml}</CompleteMultipartUpload>"
1238
+
1239
+ req.body = Nokogiri::XML::Builder.new do |xml|
1240
+ xml.CompleteMultipartUpload do
1241
+ options[:parts].each do |part|
1242
+ xml.Part do
1243
+ xml.PartNumber(part[:part_number])
1244
+ xml.ETag(part[:etag])
1245
+ end
1246
+ end
1247
+ end
1248
+ end.doc.root.to_xml
1249
+
1243
1250
  end
1244
1251
 
1245
1252
  process_response do |resp|
@@ -1413,7 +1420,7 @@ module AWS
1413
1420
  end
1414
1421
 
1415
1422
  # @param [String] possible_xml
1416
- # @return [Boolean] Returns +true+ if the given string is a valid xml
1423
+ # @return [Boolean] Returns `true` if the given string is a valid xml
1417
1424
  # document.
1418
1425
  def is_xml? possible_xml
1419
1426
  begin
@@ -1466,6 +1473,7 @@ module AWS
1466
1473
  'content-type' => :content_type,
1467
1474
  'content-encoding' => :content_encoding,
1468
1475
  'cache-control' => :cache_control,
1476
+ 'expires' => :expires,
1469
1477
  'etag' => :etag,
1470
1478
  'x-amz-website-redirect-location' => :website_redirect_location,
1471
1479
  'accept-ranges' => :accept_ranges,
@@ -1496,16 +1504,16 @@ module AWS
1496
1504
  validate_bucket_name!(bucket_name) rescue false
1497
1505
  end
1498
1506
 
1499
- # Returns true if the given +bucket_name+ is DNS compatible.
1507
+ # Returns true if the given `bucket_name` is DNS compatible.
1500
1508
  #
1501
1509
  # DNS compatible bucket names may be accessed like:
1502
1510
  #
1503
- # http://dns.compat.bucket.name.s3.amazonaws.com/
1511
+ # http://dns.compat.bucket.name.s3.amazonaws.com/
1504
1512
  #
1505
1513
  # Whereas non-dns compatible bucket names must place the bucket
1506
1514
  # name in the url path, like:
1507
1515
  #
1508
- # http://s3.amazonaws.com/dns_incompat_bucket_name/
1516
+ # http://s3.amazonaws.com/dns_incompat_bucket_name/
1509
1517
  #
1510
1518
  # @return [Boolean] Returns true if the given bucket name may be
1511
1519
  # is dns compatible.
@@ -1515,14 +1523,15 @@ module AWS
1515
1523
  return false if
1516
1524
  !valid_bucket_name?(bucket_name) or
1517
1525
 
1518
- # Bucket names should not contain underscores (_)
1519
- bucket_name["_"] or
1520
-
1521
1526
  # Bucket names should be between 3 and 63 characters long
1522
1527
  bucket_name.size > 63 or
1523
1528
 
1524
- # Bucket names should not end with a dash
1525
- bucket_name[-1,1] == '-' or
1529
+ # Bucket names must only contain lowercase letters, numbers, dots, and dashes
1530
+ # and must start and end with a lowercase letter or a number
1531
+ bucket_name !~ /^[a-z0-9][a-z0-9.-]+[a-z0-9]$/ or
1532
+
1533
+ # Bucket names should not be formatted like an IP address (e.g., 192.168.5.4)
1534
+ bucket_name =~ /(\d+\.){3}\d+/ or
1526
1535
 
1527
1536
  # Bucket names cannot contain two, adjacent periods
1528
1537
  bucket_name['..'] or
@@ -1585,15 +1594,11 @@ module AWS
1585
1594
  case
1586
1595
  when bucket_name.nil? || bucket_name == ''
1587
1596
  'may not be blank'
1588
- when bucket_name !~ /^[a-z0-9._\-]+$/
1589
- 'may only contain lowercase letters, numbers, periods (.), ' +
1597
+ when bucket_name !~ /^[A-Za-z0-9._\-]+$/
1598
+ 'may only contain uppercase letters, lowercase letters, numbers, periods (.), ' +
1590
1599
  'underscores (_), and dashes (-)'
1591
- when bucket_name !~ /^[a-z0-9]/
1592
- 'must start with a letter or a number'
1593
1600
  when !(3..255).include?(bucket_name.size)
1594
1601
  'must be between 3 and 255 characters long'
1595
- when bucket_name =~ /(\d+\.){3}\d+/
1596
- 'must not be formatted like an IP address (e.g., 192.168.5.4)'
1597
1602
  when bucket_name =~ /\n/
1598
1603
  'must not contain a newline character'
1599
1604
  end