aws-sdk 1.8.5 → 1.9.0

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 (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