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
@@ -13,6 +13,6 @@
13
13
 
14
14
  AWS::Core::Configuration.module_eval do
15
15
 
16
- add_service 'StorageGateway', 'storage_gateway', 'storagegateway.us-east-1.amazonaws.com'
16
+ add_service 'StorageGateway', 'storage_gateway', 'storagegateway.%s.amazonaws.com'
17
17
 
18
18
  end
@@ -23,6 +23,7 @@ module AWS
23
23
  # IAM users.
24
24
  #
25
25
  # @example Getting temporary credentials and using them to make an EC2 request
26
+ #
26
27
  # sts = AWS::STS.new(:access_key_id => "LONG_TERM_KEY",
27
28
  # :secret_access_key => "LONG_TERM_SECRET")
28
29
  # session = sts.new_session(:duration => 60*60)
@@ -30,6 +31,7 @@ module AWS
30
31
  # ec2.instances.to_a
31
32
  #
32
33
  # @example Getting temporary credentials with restricted permissions
34
+ #
33
35
  # policy = AWS::STS::Policy.new
34
36
  # policy.allow(:actions => ["s3:*", "ec2:*"],
35
37
  # :resources => :any)
@@ -41,17 +43,17 @@ module AWS
41
43
  # @return [Client] the low-level STS client object
42
44
  class STS
43
45
 
44
- AWS.register_autoloads(self) do
45
- autoload :Client, 'client'
46
- autoload :Errors, 'errors'
47
- autoload :FederatedSession, 'federated_session'
48
- autoload :Policy, 'policy'
49
- autoload :Request, 'request'
50
- autoload :Session, 'session'
51
- end
46
+ autoload :Client, 'aws/sts/client'
47
+ autoload :Errors, 'aws/sts/errors'
48
+ autoload :FederatedSession, 'aws/sts/federated_session'
49
+ autoload :Policy, 'aws/sts/policy'
50
+ autoload :Request, 'aws/sts/request'
51
+ autoload :Session, 'aws/sts/session'
52
52
 
53
53
  include Core::ServiceInterface
54
54
 
55
+ endpoint_prefix 'sts', :global => true
56
+
55
57
  # (see Client#assume_role)
56
58
  def assume_role options = {}
57
59
  client.assume_role(options).data
@@ -25,7 +25,7 @@ module AWS
25
25
  def initialize *args
26
26
  super
27
27
  unless config.use_ssl?
28
- msg = 'AWS Security Token Service (STS) requires ssl but the ' +
28
+ msg = 'AWS Security Token Service (STS) requires ssl but the ' +
29
29
  ':use_ssl option is set to false. Try passing :use_ssl => true'
30
30
  raise ArgumentError, msg
31
31
  end
@@ -36,12 +36,12 @@ module AWS
36
36
  # @!method assume_role(options = {})
37
37
  # Calls the AssumeRole API operation.
38
38
  # @param [Hash] options
39
- # * +:role_arn+ - *required* - (String) The Amazon Resource Name (ARN)
39
+ # * `:role_arn` - *required* - (String) The Amazon Resource Name (ARN)
40
40
  # of the role that the caller is assuming.
41
- # * +:role_session_name+ - *required* - (String) An identifier for the
41
+ # * `:role_session_name` - *required* - (String) An identifier for the
42
42
  # assumed role session. The session name is included as part of the
43
43
  # AssumedRoleUser.
44
- # * +:policy+ - (String) A supplemental policy that can be associated
44
+ # * `:policy` - (String) A supplemental policy that can be associated
45
45
  # with the temporary security credentials. The caller can restrict
46
46
  # the permissions that are available on the role's temporary security
47
47
  # credentials to maintain the least amount of privileges. When a
@@ -50,11 +50,11 @@ module AWS
50
50
  # For more information about how permissions work in the context of
51
51
  # temporary credentials, see Controlling Permissions in Temporary
52
52
  # Credentials.
53
- # * +:duration_seconds+ - (Integer) The duration, in seconds, of the
53
+ # * `:duration_seconds` - (Integer) The duration, in seconds, of the
54
54
  # role session. The value can range from 900 seconds (15 minutes) to
55
55
  # 3600 seconds (1 hour). By default, the value is set to 3600 seconds
56
56
  # (1 hour).
57
- # * +:external_id+ - (String) A unique identifier that is generated by
57
+ # * `:external_id` - (String) A unique identifier that is generated by
58
58
  # a third party for each of their customers. For each role that the
59
59
  # third party can assume, they should instruct their customers to
60
60
  # create a role with the external ID that was generated by the third
@@ -66,29 +66,29 @@ module AWS
66
66
  # @return [Core::Response]
67
67
  # The #data method of the response object returns
68
68
  # a hash with the following structure:
69
- # * +:credentials+ - (Hash)
70
- # * +:access_key_id+ - (String)
71
- # * +:secret_access_key+ - (String)
72
- # * +:session_token+ - (String)
73
- # * +:expiration+ - (Time)
74
- # * +:assumed_role_user+ - (Hash)
75
- # * +:assumed_role_id+ - (String)
76
- # * +:arn+ - (String)
77
- # * +:packed_policy_size+ - (Integer)
69
+ # * `:credentials` - (Hash)
70
+ # * `:access_key_id` - (String)
71
+ # * `:secret_access_key` - (String)
72
+ # * `:session_token` - (String)
73
+ # * `:expiration` - (Time)
74
+ # * `:assumed_role_user` - (Hash)
75
+ # * `:assumed_role_id` - (String)
76
+ # * `:arn` - (String)
77
+ # * `:packed_policy_size` - (Integer)
78
78
 
79
79
  # @!method get_federation_token(options = {})
80
80
  # Calls the GetFederationToken API operation.
81
81
  # @param [Hash] options
82
- # * +:name+ - *required* - (String) The name of the federated user
82
+ # * `:name` - *required* - (String) The name of the federated user
83
83
  # associated with the credentials. For information about limitations
84
84
  # on user names, go to Limitations on IAM Entities in Using IAM.
85
- # * +:policy+ - (String) A policy specifying the permissions to
85
+ # * `:policy` - (String) A policy specifying the permissions to
86
86
  # associate with the credentials. The caller can delegate their own
87
87
  # permissions by specifying a policy, and both policies will be
88
88
  # checked when a service call is made. For more information about how
89
89
  # permissions work in the context of temporary credentials, see
90
90
  # Controlling Permissions in Temporary Credentials in Using IAM.
91
- # * +:duration_seconds+ - (Integer) The duration, in seconds, that the
91
+ # * `:duration_seconds` - (Integer) The duration, in seconds, that the
92
92
  # session should last. Acceptable durations for federation sessions
93
93
  # range from 900s (15 minutes) to 129600s (36 hours), with 43200s (12
94
94
  # hours) as the default. Sessions for AWS account owners are
@@ -98,27 +98,27 @@ module AWS
98
98
  # @return [Core::Response]
99
99
  # The #data method of the response object returns
100
100
  # a hash with the following structure:
101
- # * +:credentials+ - (Hash)
102
- # * +:access_key_id+ - (String)
103
- # * +:secret_access_key+ - (String)
104
- # * +:session_token+ - (String)
105
- # * +:expiration+ - (Time)
106
- # * +:federated_user+ - (Hash)
107
- # * +:federated_user_id+ - (String)
108
- # * +:arn+ - (String)
109
- # * +:packed_policy_size+ - (Integer)
101
+ # * `:credentials` - (Hash)
102
+ # * `:access_key_id` - (String)
103
+ # * `:secret_access_key` - (String)
104
+ # * `:session_token` - (String)
105
+ # * `:expiration` - (Time)
106
+ # * `:federated_user` - (Hash)
107
+ # * `:federated_user_id` - (String)
108
+ # * `:arn` - (String)
109
+ # * `:packed_policy_size` - (Integer)
110
110
 
111
111
  # @!method get_session_token(options = {})
112
112
  # Calls the GetSessionToken API operation.
113
113
  # @param [Hash] options
114
- # * +:duration_seconds+ - (Integer) The duration, in seconds, that the
114
+ # * `:duration_seconds` - (Integer) The duration, in seconds, that the
115
115
  # credentials should remain valid. Acceptable durations for IAM user
116
116
  # sessions range from 900s (15 minutes) to 129600s (36 hours), with
117
117
  # 43200s (12 hours) as the default. Sessions for AWS account owners
118
118
  # are restricted to a maximum of 3600s (one hour). If the duration is
119
119
  # longer than one hour, the session for AWS account owners defaults
120
120
  # to one hour.
121
- # * +:serial_number+ - (String) The identification number of the MFA
121
+ # * `:serial_number` - (String) The identification number of the MFA
122
122
  # device for the user. If the IAM user has a policy requiring MFA
123
123
  # authentication (or is in a group requiring MFA authentication) to
124
124
  # access resources, provide the device value here.The value is in the
@@ -130,7 +130,7 @@ module AWS
130
130
  # number for a hardware device (usually the number from the back of
131
131
  # the device), such as GAHT12345678. For more information, see Using
132
132
  # Multi-Factor Authentication (MFA) Devices with AWS in Using IAM.
133
- # * +:token_code+ - (String) The value provided by the MFA device. If
133
+ # * `:token_code` - (String) The value provided by the MFA device. If
134
134
  # the user has an access policy requiring an MFA code (or is in a
135
135
  # group requiring an MFA code), provide the value here to get
136
136
  # permission to resources as specified in the access policy. If MFA
@@ -142,11 +142,11 @@ module AWS
142
142
  # @return [Core::Response]
143
143
  # The #data method of the response object returns
144
144
  # a hash with the following structure:
145
- # * +:credentials+ - (Hash)
146
- # * +:access_key_id+ - (String)
147
- # * +:secret_access_key+ - (String)
148
- # * +:session_token+ - (String)
149
- # * +:expiration+ - (Time)
145
+ # * `:credentials` - (Hash)
146
+ # * `:access_key_id` - (String)
147
+ # * `:secret_access_key` - (String)
148
+ # * `:session_token` - (String)
149
+ # * `:expiration` - (Time)
150
150
 
151
151
  # end client methods #
152
152
 
@@ -21,9 +21,9 @@ module AWS
21
21
 
22
22
  # A hash containing the following keys:
23
23
  #
24
- # * +:access_key_id+
25
- # * +:secret_access_key+
26
- # * +:session_token+
24
+ # * `:access_key_id`
25
+ # * `:secret_access_key`
26
+ # * `:session_token`
27
27
  #
28
28
  # This hash may be passed as-is to {AWS.config} or to the
29
29
  # constructor of any service interface that supports temporary
@@ -11,8 +11,7 @@
11
11
  # ANY KIND, either express or implied. See the License for the specific
12
12
  # language governing permissions and limitations under the License.
13
13
 
14
-
15
14
  module AWS
16
15
  # Current version of the AWS SDK for Ruby
17
- VERSION = '1.8.5'
16
+ VERSION = '1.9.0'
18
17
  end
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.5
5
- prerelease:
4
+ version: 1.9.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Amazon Web Services
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-03-13 00:00:00.000000000 Z
11
+ date: 2013-04-18 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: uuidtools
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,23 +27,20 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: nokogiri
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: 1.4.4
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: 1.4.4
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: json
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ~>
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ~>
60
53
  - !ruby/object:Gem::Version
@@ -132,7 +125,6 @@ files:
132
125
  - lib/aws/cloud_watch/request.rb
133
126
  - lib/aws/cloud_watch.rb
134
127
  - lib/aws/core/async_handle.rb
135
- - lib/aws/core/autoloader.rb
136
128
  - lib/aws/core/cacheable.rb
137
129
  - lib/aws/core/client.rb
138
130
  - lib/aws/core/collection/simple.rb
@@ -142,9 +134,11 @@ files:
142
134
  - lib/aws/core/configuration.rb
143
135
  - lib/aws/core/credential_providers.rb
144
136
  - lib/aws/core/data.rb
137
+ - lib/aws/core/http/connection_pool.rb
145
138
  - lib/aws/core/http/curb_handler.rb
146
139
  - lib/aws/core/http/handler.rb
147
140
  - lib/aws/core/http/net_http_handler.rb
141
+ - lib/aws/core/http/patch.rb
148
142
  - lib/aws/core/http/request.rb
149
143
  - lib/aws/core/http/response.rb
150
144
  - lib/aws/core/indifferent_hash.rb
@@ -169,6 +163,8 @@ files:
169
163
  - lib/aws/core/query_error_parser.rb
170
164
  - lib/aws/core/query_request_builder.rb
171
165
  - lib/aws/core/query_response_parser.rb
166
+ - lib/aws/core/region.rb
167
+ - lib/aws/core/region_collection.rb
172
168
  - lib/aws/core/resource.rb
173
169
  - lib/aws/core/resource_cache.rb
174
170
  - lib/aws/core/response.rb
@@ -201,11 +197,18 @@ files:
201
197
  - lib/aws/data_pipeline/errors.rb
202
198
  - lib/aws/data_pipeline/request.rb
203
199
  - lib/aws/data_pipeline.rb
200
+ - lib/aws/direct_connect/client.rb
201
+ - lib/aws/direct_connect/config.rb
202
+ - lib/aws/direct_connect/errors.rb
203
+ - lib/aws/direct_connect/request.rb
204
+ - lib/aws/direct_connect.rb
204
205
  - lib/aws/dynamo_db/attribute_collection.rb
205
206
  - lib/aws/dynamo_db/batch_get.rb
206
207
  - lib/aws/dynamo_db/batch_write.rb
207
208
  - lib/aws/dynamo_db/binary.rb
208
209
  - lib/aws/dynamo_db/client.rb
210
+ - lib/aws/dynamo_db/client_base.rb
211
+ - lib/aws/dynamo_db/client_v2.rb
209
212
  - lib/aws/dynamo_db/config.rb
210
213
  - lib/aws/dynamo_db/errors.rb
211
214
  - lib/aws/dynamo_db/expectations.rb
@@ -569,16 +572,16 @@ files:
569
572
  - lib/aws/version.rb
570
573
  - lib/aws-sdk.rb
571
574
  - lib/aws.rb
572
- - lib/net/http/connection_pool/connection.rb
573
- - lib/net/http/connection_pool/session.rb
574
- - lib/net/http/connection_pool.rb
575
575
  - lib/aws/api_config/AutoScaling-2011-01-01.yml
576
576
  - lib/aws/api_config/CloudFormation-2010-05-15.yml
577
577
  - lib/aws/api_config/CloudFront-2012-05-05.yml
578
+ - lib/aws/api_config/CloudFront-2012-07-01.yml
578
579
  - lib/aws/api_config/CloudSearch-2011-02-01.yml
579
580
  - lib/aws/api_config/CloudWatch-2010-08-01.yml
580
581
  - lib/aws/api_config/DataPipeline-2012-10-29.yml
582
+ - lib/aws/api_config/DirectConnect-2012-10-25.yml
581
583
  - lib/aws/api_config/DynamoDB-2011-12-05.yml
584
+ - lib/aws/api_config/DynamoDB-2012-08-10.yml
582
585
  - lib/aws/api_config/EC2-2013-02-01.yml
583
586
  - lib/aws/api_config/ElastiCache-2012-03-09.yml
584
587
  - lib/aws/api_config/ElastiCache-2012-11-15.yml
@@ -605,27 +608,26 @@ files:
605
608
  homepage: http://aws.amazon.com/sdkforruby
606
609
  licenses:
607
610
  - Apache 2.0
611
+ metadata: {}
608
612
  post_install_message:
609
613
  rdoc_options: []
610
614
  require_paths:
611
615
  - lib
612
616
  required_ruby_version: !ruby/object:Gem::Requirement
613
- none: false
614
617
  requirements:
615
- - - ! '>='
618
+ - - '>='
616
619
  - !ruby/object:Gem::Version
617
620
  version: '0'
618
621
  required_rubygems_version: !ruby/object:Gem::Requirement
619
- none: false
620
622
  requirements:
621
- - - ! '>='
623
+ - - '>='
622
624
  - !ruby/object:Gem::Version
623
625
  version: '0'
624
626
  requirements: []
625
627
  rubyforge_project:
626
- rubygems_version: 1.8.25
628
+ rubygems_version: 2.0.0
627
629
  signing_key:
628
- specification_version: 3
630
+ specification_version: 4
629
631
  summary: AWS SDK for Ruby
630
632
  test_files: []
631
633
  has_rdoc:
@@ -1,64 +0,0 @@
1
- # Copyright 2011-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License"). You
4
- # may not use this file except in compliance with the License. A copy of
5
- # the License is located at
6
- #
7
- # http://aws.amazon.com/apache2.0/
8
- #
9
- # or in the "license" file accompanying this file. This file is
10
- # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11
- # ANY KIND, either express or implied. See the License for the specific
12
- # language governing permissions and limitations under the License.
13
-
14
- require 'set'
15
-
16
- module AWS
17
-
18
- @@eager = false
19
- @@autoloads = {}
20
-
21
- def self.register_autoloads klass, prefix = nil, &block
22
- autoloader = Core::Autoloader.new(klass, prefix)
23
- autoloader.instance_eval(&block)
24
- autoloader.autoloads.each_pair do |const_name, file_path|
25
- require(file_path) if @@eager
26
- @@autoloads["#{klass}::#{const_name}"] = file_path
27
- end
28
- end
29
-
30
- def self.eager_autoload!
31
- unless @@eager
32
- @@eager = true
33
- @@autoloads.values.uniq.each {|file_path| require(file_path) }
34
- end
35
- end
36
-
37
- def self.autoloads
38
- @@autoloads
39
- end
40
-
41
- module Core
42
-
43
- # @private
44
- class Autoloader
45
-
46
- def initialize klass, prefix = nil
47
- @klass = klass
48
- @prefix = prefix || klass.name.gsub(/::/, '/').downcase
49
- @autoloads = {}
50
- end
51
-
52
- attr_reader :autoloads
53
-
54
- def autoload const_name, file_name
55
- path = "#{@prefix}/#{file_name}"
56
- @klass.autoload(const_name, path)
57
- @autoloads[const_name] = path
58
- end
59
-
60
- end
61
-
62
- end
63
-
64
- end
@@ -1,226 +0,0 @@
1
- # Copyright 2011-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License"). You
4
- # may not use this file except in compliance with the License. A copy of
5
- # the License is located at
6
- #
7
- # http://aws.amazon.com/apache2.0/
8
- #
9
- # or in the "license" file accompanying this file. This file is
10
- # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11
- # ANY KIND, either express or implied. See the License for the specific
12
- # language governing permissions and limitations under the License.
13
-
14
- require 'net/http/connection_pool/session'
15
- require 'net/http/connection_pool/connection'
16
- require 'thread'
17
- require 'logger'
18
-
19
- # A wrapper around Net::HTTP that provides a manged pool of persistant HTTP
20
- # connections.
21
- #
22
- # pool = Net::HTTP::ConnectionPool.new
23
- # connection = pool.connection_for('domain.com')
24
- # connection.request(Net::HTTP::Get.new('/')) do |resp|
25
- # # Connection#request yields Net::HTTPResponse objects
26
- # puts resp.body
27
- # end
28
- #
29
- # @private
30
- class Net::HTTP::ConnectionPool
31
-
32
- # @param [Hash] options
33
- #
34
- # @option options [Numeric] :http_idle_timeout (60) The number of seconds a
35
- # connection is allowed to sit idle before it is closed and removed
36
- # from the pool.
37
- #
38
- # @option options [Numeric] :http_open_timeout (15) The number of seconds to
39
- # wait when opening a http session before raising a timeout exception.
40
- #
41
- # @option options [Boolean] :http_wire_trace (false) When +true+, HTTP
42
- # debug output will be sent to the +:logger+.
43
- #
44
- # @option options [Logger] :logger (Logger.new($stdout)) Where debug out
45
- # is sent (wire traces).
46
- #
47
- def initialize options = {}
48
- @pool_mutex = Mutex.new
49
- @pool = []
50
- @open_timeout = options[:http_open_timeout] || 15
51
- @idle_timeout = options[:http_idle_timeout] || 60
52
- @http_wire_trace = !!options[:http_wire_trace]
53
- if logger = options[:logger]
54
- @logger = logger
55
- elsif http_wire_trace?
56
- @logger = Logger.new($stdout)
57
- end
58
- end
59
-
60
- # @return [Integer]
61
- attr_reader :idle_timeout
62
-
63
- # @return [Integer]
64
- attr_accessor :open_timeout
65
-
66
- # @return [Boolean] Returns +true+ when HTTP debug output (wire traces)
67
- # will be logged.
68
- attr_reader :http_wire_trace
69
-
70
- alias_method :http_wire_trace?, :http_wire_trace
71
- alias_method :log_wire_trace?, :http_wire_trace
72
- alias_method :log_wire_trace, :http_wire_trace
73
-
74
- # @return [Logger] Where debug output is sent.
75
- attr_reader :logger
76
-
77
- # Requests a connection object from the connection pool.
78
- #
79
- # connection = pool.connection_for('domain.com')
80
- # connection.request(Net::HTTP::Get.new('/index.html')) {|resp|}
81
- # connection.request(Net::HTTP::Get.new('/about.html')) {|resp|}
82
- #
83
- # # same thing in block form
84
- # pool.connection_for('domain.com') do |connection|
85
- # connection.request(Net::HTTP::Get.new('/index.html')) {|resp|}
86
- # connection.request(Net::HTTP::Get.new('/about.html')) {|resp|}
87
- # end
88
- #
89
- # Because the pool manages HTTP sessions you do not have to
90
- # worry about closing a connection or returning a connection
91
- # to the pool.
92
- #
93
- # @param [String] host
94
- #
95
- # @param [Hash] options
96
- #
97
- # @option options [Integer] :port Which port the connection should use.
98
- # Defaults to 80, unless +:ssl+ is +true+, then it defaults to 443.
99
- #
100
- # @option options [Boolean] :ssl If the connection should be made over
101
- # SSL. Defaults to +false+, unless +:port+ is 443, then it defaults
102
- # to +true+.
103
- #
104
- # @option options [Boolean] :ssl_verify_peer (true) If true, ssl
105
- # connections should verify peer certificates. This should only ever be
106
- # set false false for debugging purposes.
107
- #
108
- # @option options [String] :ssl_ca_file Full path to the SSL certificate
109
- # authority bundle file that should be used when verifying peer
110
- # certificates. If you do not pass +:ssl_ca_file+ or +:ssl_ca_path+
111
- # the the system default will be used if available.
112
- #
113
- # @option options [String] :ssl_ca_path Full path of the directory that
114
- # contains the unbundled SSL certificate authority files for verifying
115
- # peer certificates. If you do not pass +:ssl_ca_file+ or +:ssl_ca_path+
116
- # the the system default will be used if available.
117
- #
118
- # @option options [URI::HTTP,String] :proxy_uri (nil) A URI string or
119
- # URI::HTTP object to use as a proxy. You should not provide
120
- # +:proxy_uri+ with any other proxy options.
121
- #
122
- # :proxy_uri => 'http://user:pass@host.com:80'
123
- #
124
- # @option options [String] :proxy_address
125
- #
126
- # @option options [String] :proxy_port
127
- #
128
- # @option options [String] :proxy_user
129
- #
130
- # @option options [String] :proxy_password
131
- #
132
- # @yield [connection]
133
- #
134
- # @yieldparam [optional,Connection] connection
135
- #
136
- # @return [Connection]
137
- #
138
- def connection_for host, options = {}, &block
139
- connection = Connection.new(self, host, options)
140
- yield(connection) if block_given?
141
- connection
142
- end
143
-
144
- # Returns the number of sessions currently in the pool, not counting those
145
- # currently in use.
146
- def size
147
- @pool_mutex.synchronize { @pool.size }
148
- end
149
-
150
- # Removes stale http sessions from the pool (that have exceeded
151
- # the idle timeout).
152
- def clean!
153
- @pool_mutex.synchronize { _clean }
154
- end
155
-
156
- # Closes and removes removes all sessions from the pool.
157
- # If empty! is called while there are outstanding requests they may
158
- # get checked back into the pool, leaving the pool in a non-empty state.
159
- def empty!
160
- @pool_mutex.synchronize do
161
- @pool.each(&:finish)
162
- @pool = []
163
- end
164
- end
165
-
166
- # Makes a single HTTP request. See {Connection#request} for more information
167
- # on making an HTTP request.
168
- # @return [nil]
169
- # @private
170
- def request connection, *args, &block
171
- session_for(connection) do |session|
172
- session.read_timeout = connection.read_timeout
173
- session.request(*args, &block)
174
- end
175
- end
176
-
177
- protected
178
-
179
- # Yields an open http session for the given connection.
180
- def session_for connection, &block
181
-
182
- session = nil
183
-
184
- # search the pool for an idle session that can be used
185
- @pool_mutex.synchronize do
186
- _clean # removes stale sessions
187
- session = @pool.find{|idle_session| idle_session.key == connection.key }
188
- @pool.delete(session) if session
189
- end
190
-
191
- begin
192
- # opens a new HTTP session if no suitable idle session was found
193
- session = _create_session(connection) unless session
194
- yield(session)
195
- rescue Exception => error
196
- session.finish if session
197
- raise error
198
- else
199
- # only check the session back into the pool if no errors were raised
200
- @pool_mutex.synchronize { @pool << session }
201
- end
202
-
203
- nil
204
-
205
- end
206
-
207
- def _create_session connection
208
- Session.start(connection,
209
- :open_timeout => open_timeout,
210
- :debug_logger => log_wire_trace? ? logger : nil)
211
- end
212
-
213
- def _clean
214
- now = Time.now
215
- @pool.delete_if do |idle_session|
216
- if
217
- idle_session.last_used_at.nil? or
218
- now - idle_session.last_used_at > idle_timeout
219
- then
220
- idle_session.finish
221
- true
222
- end
223
- end
224
- end
225
-
226
- end