aws-sdk 1.32.0 → 3.0.2

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 (551) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +100 -0
  3. data/LICENSE.txt +199 -9
  4. data/VERSION +1 -0
  5. data/lib/aws-sdk.rb +2 -14
  6. metadata +22 -591
  7. data/.yardopts +0 -7
  8. data/README.md +0 -291
  9. data/bin/aws-rb +0 -169
  10. data/ca-bundle.crt +0 -3554
  11. data/endpoints.json +0 -1506
  12. data/lib/aws.rb +0 -14
  13. data/lib/aws/api_config/AutoScaling-2011-01-01.yml +0 -869
  14. data/lib/aws/api_config/CloudFormation-2010-05-15.yml +0 -358
  15. data/lib/aws/api_config/CloudFront-2013-05-12.yml +0 -2448
  16. data/lib/aws/api_config/CloudFront-2013-08-26.yml +0 -2599
  17. data/lib/aws/api_config/CloudFront-2013-09-27.yml +0 -2765
  18. data/lib/aws/api_config/CloudFront-2013-11-11.yml +0 -2886
  19. data/lib/aws/api_config/CloudSearch-2011-02-01.yml +0 -681
  20. data/lib/aws/api_config/CloudTrail-2013-11-01.yml +0 -159
  21. data/lib/aws/api_config/CloudWatch-2010-08-01.yml +0 -433
  22. data/lib/aws/api_config/DataPipeline-2012-10-29.yml +0 -422
  23. data/lib/aws/api_config/DirectConnect-2012-10-25.yml +0 -735
  24. data/lib/aws/api_config/DynamoDB-2011-12-05.yml +0 -1168
  25. data/lib/aws/api_config/DynamoDB-2012-08-10.yml +0 -2005
  26. data/lib/aws/api_config/EC2-2013-08-15.yml +0 -4708
  27. data/lib/aws/api_config/EC2-2013-10-01.yml +0 -4726
  28. data/lib/aws/api_config/EC2-2013-10-15.yml +0 -4726
  29. data/lib/aws/api_config/ELB-2012-06-01.yml +0 -632
  30. data/lib/aws/api_config/EMR-2009-03-31.yml +0 -953
  31. data/lib/aws/api_config/ElastiCache-2013-06-15.yml +0 -1188
  32. data/lib/aws/api_config/ElasticBeanstalk-2010-12-01.yml +0 -847
  33. data/lib/aws/api_config/ElasticTranscoder-2012-09-25.yml +0 -2285
  34. data/lib/aws/api_config/Glacier-2012-06-01.yml +0 -649
  35. data/lib/aws/api_config/IAM-2010-05-08.yml +0 -1297
  36. data/lib/aws/api_config/ImportExport-2010-06-01.yml +0 -109
  37. data/lib/aws/api_config/Kinesis-2013-12-02.yml +0 -201
  38. data/lib/aws/api_config/OpsWorks-2013-02-18.yml +0 -1825
  39. data/lib/aws/api_config/RDS-2013-05-15.yml +0 -2464
  40. data/lib/aws/api_config/RDS-2013-09-09.yml +0 -2641
  41. data/lib/aws/api_config/Redshift-2012-12-01.yml +0 -2137
  42. data/lib/aws/api_config/Route53-2012-12-12.yml +0 -547
  43. data/lib/aws/api_config/SNS-2010-03-31.yml +0 -433
  44. data/lib/aws/api_config/SQS-2012-11-05.yml +0 -319
  45. data/lib/aws/api_config/STS-2011-06-15.yml +0 -147
  46. data/lib/aws/api_config/SimpleDB-2009-04-15.yml +0 -306
  47. data/lib/aws/api_config/SimpleEmailService-2010-12-01.yml +0 -346
  48. data/lib/aws/api_config/SimpleWorkflow-2012-01-25.yml +0 -2388
  49. data/lib/aws/api_config/StorageGateway-2012-06-30.yml +0 -748
  50. data/lib/aws/api_config/StorageGateway-2013-06-30.yml +0 -1025
  51. data/lib/aws/api_config/Support-2013-04-15.yml +0 -426
  52. data/lib/aws/auto_scaling.rb +0 -163
  53. data/lib/aws/auto_scaling/activity.rb +0 -102
  54. data/lib/aws/auto_scaling/activity_collection.rb +0 -81
  55. data/lib/aws/auto_scaling/client.rb +0 -48
  56. data/lib/aws/auto_scaling/config.rb +0 -18
  57. data/lib/aws/auto_scaling/errors.rb +0 -22
  58. data/lib/aws/auto_scaling/group.rb +0 -421
  59. data/lib/aws/auto_scaling/group_collection.rb +0 -96
  60. data/lib/aws/auto_scaling/group_options.rb +0 -155
  61. data/lib/aws/auto_scaling/instance.rb +0 -192
  62. data/lib/aws/auto_scaling/instance_collection.rb +0 -63
  63. data/lib/aws/auto_scaling/launch_configuration.rb +0 -162
  64. data/lib/aws/auto_scaling/launch_configuration_collection.rb +0 -160
  65. data/lib/aws/auto_scaling/notification_configuration.rb +0 -89
  66. data/lib/aws/auto_scaling/notification_configuration_collection.rb +0 -183
  67. data/lib/aws/auto_scaling/scaling_policy.rb +0 -142
  68. data/lib/aws/auto_scaling/scaling_policy_collection.rb +0 -72
  69. data/lib/aws/auto_scaling/scaling_policy_options.rb +0 -65
  70. data/lib/aws/auto_scaling/scheduled_action.rb +0 -141
  71. data/lib/aws/auto_scaling/scheduled_action_collection.rb +0 -202
  72. data/lib/aws/auto_scaling/tag.rb +0 -59
  73. data/lib/aws/auto_scaling/tag_collection.rb +0 -114
  74. data/lib/aws/cloud_formation.rb +0 -272
  75. data/lib/aws/cloud_formation/client.rb +0 -48
  76. data/lib/aws/cloud_formation/config.rb +0 -18
  77. data/lib/aws/cloud_formation/errors.rb +0 -22
  78. data/lib/aws/cloud_formation/stack.rb +0 -266
  79. data/lib/aws/cloud_formation/stack_collection.rb +0 -232
  80. data/lib/aws/cloud_formation/stack_event.rb +0 -73
  81. data/lib/aws/cloud_formation/stack_event_collection.rb +0 -47
  82. data/lib/aws/cloud_formation/stack_options.rb +0 -72
  83. data/lib/aws/cloud_formation/stack_output.rb +0 -53
  84. data/lib/aws/cloud_formation/stack_resource.rb +0 -117
  85. data/lib/aws/cloud_formation/stack_resource_collection.rb +0 -83
  86. data/lib/aws/cloud_formation/stack_resource_summary_collection.rb +0 -64
  87. data/lib/aws/cloud_formation/stack_summary_collection.rb +0 -123
  88. data/lib/aws/cloud_front.rb +0 -72
  89. data/lib/aws/cloud_front/client.rb +0 -45
  90. data/lib/aws/cloud_front/config.rb +0 -18
  91. data/lib/aws/cloud_front/errors.rb +0 -22
  92. data/lib/aws/cloud_search.rb +0 -73
  93. data/lib/aws/cloud_search/client.rb +0 -36
  94. data/lib/aws/cloud_search/config.rb +0 -18
  95. data/lib/aws/cloud_search/errors.rb +0 -22
  96. data/lib/aws/cloud_trail.rb +0 -72
  97. data/lib/aws/cloud_trail/client.rb +0 -35
  98. data/lib/aws/cloud_trail/config.rb +0 -18
  99. data/lib/aws/cloud_trail/errors.rb +0 -22
  100. data/lib/aws/cloud_watch.rb +0 -118
  101. data/lib/aws/cloud_watch/alarm.rb +0 -290
  102. data/lib/aws/cloud_watch/alarm_collection.rb +0 -153
  103. data/lib/aws/cloud_watch/alarm_history_item.rb +0 -50
  104. data/lib/aws/cloud_watch/alarm_history_item_collection.rb +0 -84
  105. data/lib/aws/cloud_watch/client.rb +0 -40
  106. data/lib/aws/cloud_watch/config.rb +0 -18
  107. data/lib/aws/cloud_watch/errors.rb +0 -22
  108. data/lib/aws/cloud_watch/metric.rb +0 -135
  109. data/lib/aws/cloud_watch/metric_alarm_collection.rb +0 -160
  110. data/lib/aws/cloud_watch/metric_collection.rb +0 -129
  111. data/lib/aws/cloud_watch/metric_statistics.rb +0 -69
  112. data/lib/aws/core.rb +0 -701
  113. data/lib/aws/core/async_handle.rb +0 -90
  114. data/lib/aws/core/cacheable.rb +0 -77
  115. data/lib/aws/core/client.rb +0 -778
  116. data/lib/aws/core/collection.rb +0 -263
  117. data/lib/aws/core/collection/simple.rb +0 -82
  118. data/lib/aws/core/collection/with_limit_and_next_token.rb +0 -71
  119. data/lib/aws/core/collection/with_next_token.rb +0 -97
  120. data/lib/aws/core/configuration.rb +0 -541
  121. data/lib/aws/core/credential_providers.rb +0 -506
  122. data/lib/aws/core/data.rb +0 -247
  123. data/lib/aws/core/deprecations.rb +0 -84
  124. data/lib/aws/core/endpoints.rb +0 -37
  125. data/lib/aws/core/http/connection_pool.rb +0 -349
  126. data/lib/aws/core/http/curb_handler.rb +0 -148
  127. data/lib/aws/core/http/handler.rb +0 -89
  128. data/lib/aws/core/http/net_http_handler.rb +0 -147
  129. data/lib/aws/core/http/patch.rb +0 -102
  130. data/lib/aws/core/http/request.rb +0 -249
  131. data/lib/aws/core/http/response.rb +0 -81
  132. data/lib/aws/core/indifferent_hash.rb +0 -88
  133. data/lib/aws/core/inflection.rb +0 -56
  134. data/lib/aws/core/json_client.rb +0 -47
  135. data/lib/aws/core/json_parser.rb +0 -76
  136. data/lib/aws/core/json_request_builder.rb +0 -35
  137. data/lib/aws/core/json_response_parser.rb +0 -79
  138. data/lib/aws/core/lazy_error_classes.rb +0 -90
  139. data/lib/aws/core/log_formatter.rb +0 -428
  140. data/lib/aws/core/managed_file.rb +0 -32
  141. data/lib/aws/core/meta_utils.rb +0 -45
  142. data/lib/aws/core/model.rb +0 -57
  143. data/lib/aws/core/naming.rb +0 -30
  144. data/lib/aws/core/option_grammar.rb +0 -738
  145. data/lib/aws/core/options/json_serializer.rb +0 -82
  146. data/lib/aws/core/options/validator.rb +0 -155
  147. data/lib/aws/core/options/xml_serializer.rb +0 -118
  148. data/lib/aws/core/page_result.rb +0 -75
  149. data/lib/aws/core/policy.rb +0 -942
  150. data/lib/aws/core/query_client.rb +0 -41
  151. data/lib/aws/core/query_error_parser.rb +0 -24
  152. data/lib/aws/core/query_request_builder.rb +0 -47
  153. data/lib/aws/core/query_response_parser.rb +0 -35
  154. data/lib/aws/core/region.rb +0 -85
  155. data/lib/aws/core/region_collection.rb +0 -80
  156. data/lib/aws/core/resource.rb +0 -413
  157. data/lib/aws/core/resource_cache.rb +0 -40
  158. data/lib/aws/core/response.rb +0 -211
  159. data/lib/aws/core/response_cache.rb +0 -50
  160. data/lib/aws/core/rest_error_parser.rb +0 -24
  161. data/lib/aws/core/rest_json_client.rb +0 -40
  162. data/lib/aws/core/rest_request_builder.rb +0 -154
  163. data/lib/aws/core/rest_response_parser.rb +0 -66
  164. data/lib/aws/core/rest_xml_client.rb +0 -47
  165. data/lib/aws/core/service_interface.rb +0 -83
  166. data/lib/aws/core/signers/base.rb +0 -46
  167. data/lib/aws/core/signers/cloud_front.rb +0 -56
  168. data/lib/aws/core/signers/s3.rb +0 -159
  169. data/lib/aws/core/signers/version_2.rb +0 -72
  170. data/lib/aws/core/signers/version_3.rb +0 -86
  171. data/lib/aws/core/signers/version_3_https.rb +0 -61
  172. data/lib/aws/core/signers/version_4.rb +0 -228
  173. data/lib/aws/core/signers/version_4/chunk_signed_stream.rb +0 -191
  174. data/lib/aws/core/uri_escape.rb +0 -44
  175. data/lib/aws/core/xml/frame.rb +0 -244
  176. data/lib/aws/core/xml/frame_stack.rb +0 -85
  177. data/lib/aws/core/xml/grammar.rb +0 -306
  178. data/lib/aws/core/xml/parser.rb +0 -70
  179. data/lib/aws/core/xml/root_frame.rb +0 -65
  180. data/lib/aws/core/xml/sax_handlers/libxml.rb +0 -47
  181. data/lib/aws/core/xml/sax_handlers/nokogiri.rb +0 -56
  182. data/lib/aws/core/xml/sax_handlers/ox.rb +0 -41
  183. data/lib/aws/core/xml/sax_handlers/rexml.rb +0 -47
  184. data/lib/aws/core/xml/stub.rb +0 -123
  185. data/lib/aws/data_pipeline.rb +0 -72
  186. data/lib/aws/data_pipeline/client.rb +0 -36
  187. data/lib/aws/data_pipeline/config.rb +0 -18
  188. data/lib/aws/data_pipeline/errors.rb +0 -20
  189. data/lib/aws/direct_connect.rb +0 -73
  190. data/lib/aws/direct_connect/client.rb +0 -36
  191. data/lib/aws/direct_connect/config.rb +0 -18
  192. data/lib/aws/direct_connect/errors.rb +0 -22
  193. data/lib/aws/dynamo_db.rb +0 -214
  194. data/lib/aws/dynamo_db/attribute_collection.rb +0 -456
  195. data/lib/aws/dynamo_db/batch_get.rb +0 -213
  196. data/lib/aws/dynamo_db/batch_write.rb +0 -252
  197. data/lib/aws/dynamo_db/binary.rb +0 -35
  198. data/lib/aws/dynamo_db/client.rb +0 -129
  199. data/lib/aws/dynamo_db/client/v20111205.rb +0 -1266
  200. data/lib/aws/dynamo_db/client/v20120810.rb +0 -1409
  201. data/lib/aws/dynamo_db/client_v2.rb +0 -44
  202. data/lib/aws/dynamo_db/config.rb +0 -24
  203. data/lib/aws/dynamo_db/errors.rb +0 -20
  204. data/lib/aws/dynamo_db/expectations.rb +0 -40
  205. data/lib/aws/dynamo_db/item.rb +0 -133
  206. data/lib/aws/dynamo_db/item_collection.rb +0 -856
  207. data/lib/aws/dynamo_db/item_data.rb +0 -31
  208. data/lib/aws/dynamo_db/keys.rb +0 -41
  209. data/lib/aws/dynamo_db/primary_key_element.rb +0 -48
  210. data/lib/aws/dynamo_db/resource.rb +0 -33
  211. data/lib/aws/dynamo_db/table.rb +0 -496
  212. data/lib/aws/dynamo_db/table_collection.rb +0 -165
  213. data/lib/aws/dynamo_db/types.rb +0 -111
  214. data/lib/aws/ec2.rb +0 -428
  215. data/lib/aws/ec2/attachment.rb +0 -135
  216. data/lib/aws/ec2/attachment_collection.rb +0 -54
  217. data/lib/aws/ec2/availability_zone.rb +0 -86
  218. data/lib/aws/ec2/availability_zone_collection.rb +0 -43
  219. data/lib/aws/ec2/block_device_mappings.rb +0 -53
  220. data/lib/aws/ec2/client.rb +0 -101
  221. data/lib/aws/ec2/collection.rb +0 -36
  222. data/lib/aws/ec2/config.rb +0 -30
  223. data/lib/aws/ec2/customer_gateway.rb +0 -90
  224. data/lib/aws/ec2/customer_gateway_collection.rb +0 -73
  225. data/lib/aws/ec2/dhcp_options.rb +0 -106
  226. data/lib/aws/ec2/dhcp_options_collection.rb +0 -87
  227. data/lib/aws/ec2/elastic_ip.rb +0 -209
  228. data/lib/aws/ec2/elastic_ip_collection.rb +0 -93
  229. data/lib/aws/ec2/errors.rb +0 -32
  230. data/lib/aws/ec2/export_task.rb +0 -120
  231. data/lib/aws/ec2/export_task_collection.rb +0 -67
  232. data/lib/aws/ec2/filtered_collection.rb +0 -87
  233. data/lib/aws/ec2/has_permissions.rb +0 -44
  234. data/lib/aws/ec2/image.rb +0 -270
  235. data/lib/aws/ec2/image_collection.rb +0 -220
  236. data/lib/aws/ec2/instance.rb +0 -803
  237. data/lib/aws/ec2/instance_collection.rb +0 -391
  238. data/lib/aws/ec2/internet_gateway.rb +0 -122
  239. data/lib/aws/ec2/internet_gateway/attachment.rb +0 -78
  240. data/lib/aws/ec2/internet_gateway_collection.rb +0 -54
  241. data/lib/aws/ec2/key_pair.rb +0 -82
  242. data/lib/aws/ec2/key_pair_collection.rb +0 -99
  243. data/lib/aws/ec2/network_acl.rb +0 -256
  244. data/lib/aws/ec2/network_acl/association.rb +0 -56
  245. data/lib/aws/ec2/network_acl/entry.rb +0 -147
  246. data/lib/aws/ec2/network_acl_collection.rb +0 -64
  247. data/lib/aws/ec2/network_interface.rb +0 -237
  248. data/lib/aws/ec2/network_interface/attachment.rb +0 -100
  249. data/lib/aws/ec2/network_interface_collection.rb +0 -103
  250. data/lib/aws/ec2/permission_collection.rb +0 -174
  251. data/lib/aws/ec2/region.rb +0 -106
  252. data/lib/aws/ec2/region_collection.rb +0 -51
  253. data/lib/aws/ec2/reserved_instances.rb +0 -56
  254. data/lib/aws/ec2/reserved_instances_collection.rb +0 -40
  255. data/lib/aws/ec2/reserved_instances_offering.rb +0 -60
  256. data/lib/aws/ec2/reserved_instances_offering_collection.rb +0 -45
  257. data/lib/aws/ec2/resource.rb +0 -161
  258. data/lib/aws/ec2/resource_tag_collection.rb +0 -211
  259. data/lib/aws/ec2/route_table.rb +0 -205
  260. data/lib/aws/ec2/route_table/association.rb +0 -119
  261. data/lib/aws/ec2/route_table/route.rb +0 -119
  262. data/lib/aws/ec2/route_table_collection.rb +0 -72
  263. data/lib/aws/ec2/security_group.rb +0 -482
  264. data/lib/aws/ec2/security_group/ip_permission.rb +0 -135
  265. data/lib/aws/ec2/security_group/ip_permission_collection.rb +0 -82
  266. data/lib/aws/ec2/security_group_collection.rb +0 -133
  267. data/lib/aws/ec2/snapshot.rb +0 -143
  268. data/lib/aws/ec2/snapshot_collection.rb +0 -131
  269. data/lib/aws/ec2/subnet.rb +0 -161
  270. data/lib/aws/ec2/subnet_collection.rb +0 -115
  271. data/lib/aws/ec2/tag.rb +0 -81
  272. data/lib/aws/ec2/tag_collection.rb +0 -107
  273. data/lib/aws/ec2/tagged_collection.rb +0 -53
  274. data/lib/aws/ec2/tagged_item.rb +0 -85
  275. data/lib/aws/ec2/volume.rb +0 -174
  276. data/lib/aws/ec2/volume_collection.rb +0 -98
  277. data/lib/aws/ec2/vpc.rb +0 -166
  278. data/lib/aws/ec2/vpc_collection.rb +0 -70
  279. data/lib/aws/ec2/vpn_connection.rb +0 -99
  280. data/lib/aws/ec2/vpn_connection/telemetry.rb +0 -49
  281. data/lib/aws/ec2/vpn_connection_collection.rb +0 -96
  282. data/lib/aws/ec2/vpn_gateway.rb +0 -123
  283. data/lib/aws/ec2/vpn_gateway/attachment.rb +0 -45
  284. data/lib/aws/ec2/vpn_gateway_collection.rb +0 -77
  285. data/lib/aws/elastic_beanstalk.rb +0 -49
  286. data/lib/aws/elastic_beanstalk/client.rb +0 -36
  287. data/lib/aws/elastic_beanstalk/config.rb +0 -18
  288. data/lib/aws/elastic_beanstalk/errors.rb +0 -22
  289. data/lib/aws/elastic_transcoder.rb +0 -29
  290. data/lib/aws/elastic_transcoder/client.rb +0 -48
  291. data/lib/aws/elastic_transcoder/config.rb +0 -18
  292. data/lib/aws/elastic_transcoder/errors.rb +0 -23
  293. data/lib/aws/elasticache.rb +0 -49
  294. data/lib/aws/elasticache/client.rb +0 -35
  295. data/lib/aws/elasticache/config.rb +0 -18
  296. data/lib/aws/elasticache/errors.rb +0 -22
  297. data/lib/aws/elb.rb +0 -66
  298. data/lib/aws/elb/availability_zone_collection.rb +0 -138
  299. data/lib/aws/elb/backend_server_policy_collection.rb +0 -139
  300. data/lib/aws/elb/client.rb +0 -35
  301. data/lib/aws/elb/config.rb +0 -18
  302. data/lib/aws/elb/errors.rb +0 -26
  303. data/lib/aws/elb/instance_collection.rb +0 -168
  304. data/lib/aws/elb/listener.rb +0 -190
  305. data/lib/aws/elb/listener_collection.rb +0 -113
  306. data/lib/aws/elb/listener_opts.rb +0 -45
  307. data/lib/aws/elb/load_balancer.rb +0 -280
  308. data/lib/aws/elb/load_balancer_collection.rb +0 -146
  309. data/lib/aws/elb/load_balancer_policy.rb +0 -93
  310. data/lib/aws/elb/load_balancer_policy_collection.rb +0 -208
  311. data/lib/aws/emr.rb +0 -87
  312. data/lib/aws/emr/client.rb +0 -35
  313. data/lib/aws/emr/config.rb +0 -18
  314. data/lib/aws/emr/errors.rb +0 -22
  315. data/lib/aws/emr/instance_group.rb +0 -138
  316. data/lib/aws/emr/instance_group_collection.rb +0 -82
  317. data/lib/aws/emr/job_flow.rb +0 -307
  318. data/lib/aws/emr/job_flow_collection.rb +0 -185
  319. data/lib/aws/errors.rb +0 -162
  320. data/lib/aws/glacier.rb +0 -79
  321. data/lib/aws/glacier/archive.rb +0 -56
  322. data/lib/aws/glacier/archive_collection.rb +0 -146
  323. data/lib/aws/glacier/client.rb +0 -49
  324. data/lib/aws/glacier/config.rb +0 -19
  325. data/lib/aws/glacier/errors.rb +0 -22
  326. data/lib/aws/glacier/resource.rb +0 -30
  327. data/lib/aws/glacier/vault.rb +0 -145
  328. data/lib/aws/glacier/vault_collection.rb +0 -75
  329. data/lib/aws/glacier/vault_notification_configuration.rb +0 -29
  330. data/lib/aws/iam.rb +0 -408
  331. data/lib/aws/iam/access_key.rb +0 -185
  332. data/lib/aws/iam/access_key_collection.rb +0 -128
  333. data/lib/aws/iam/account_alias_collection.rb +0 -79
  334. data/lib/aws/iam/client.rb +0 -49
  335. data/lib/aws/iam/collection.rb +0 -83
  336. data/lib/aws/iam/config.rb +0 -18
  337. data/lib/aws/iam/errors.rb +0 -22
  338. data/lib/aws/iam/group.rb +0 -111
  339. data/lib/aws/iam/group_collection.rb +0 -132
  340. data/lib/aws/iam/group_policy_collection.rb +0 -47
  341. data/lib/aws/iam/group_user_collection.rb +0 -84
  342. data/lib/aws/iam/login_profile.rb +0 -99
  343. data/lib/aws/iam/mfa_device.rb +0 -52
  344. data/lib/aws/iam/mfa_device_collection.rb +0 -127
  345. data/lib/aws/iam/policy.rb +0 -46
  346. data/lib/aws/iam/policy_collection.rb +0 -188
  347. data/lib/aws/iam/resource.rb +0 -62
  348. data/lib/aws/iam/server_certificate.rb +0 -141
  349. data/lib/aws/iam/server_certificate_collection.rb +0 -138
  350. data/lib/aws/iam/signing_certificate.rb +0 -174
  351. data/lib/aws/iam/signing_certificate_collection.rb +0 -131
  352. data/lib/aws/iam/user.rb +0 -200
  353. data/lib/aws/iam/user_collection.rb +0 -133
  354. data/lib/aws/iam/user_group_collection.rb +0 -98
  355. data/lib/aws/iam/user_policy.rb +0 -90
  356. data/lib/aws/iam/user_policy_collection.rb +0 -45
  357. data/lib/aws/iam/virtual_mfa_device.rb +0 -139
  358. data/lib/aws/iam/virtual_mfa_device_collection.rb +0 -73
  359. data/lib/aws/import_export.rb +0 -73
  360. data/lib/aws/import_export/client.rb +0 -35
  361. data/lib/aws/import_export/config.rb +0 -19
  362. data/lib/aws/import_export/errors.rb +0 -22
  363. data/lib/aws/kinesis.rb +0 -53
  364. data/lib/aws/kinesis/client.rb +0 -35
  365. data/lib/aws/kinesis/config.rb +0 -18
  366. data/lib/aws/kinesis/errors.rb +0 -20
  367. data/lib/aws/ops_works.rb +0 -29
  368. data/lib/aws/ops_works/client.rb +0 -35
  369. data/lib/aws/ops_works/config.rb +0 -18
  370. data/lib/aws/ops_works/errors.rb +0 -20
  371. data/lib/aws/rails.rb +0 -195
  372. data/lib/aws/rds.rb +0 -70
  373. data/lib/aws/rds/client.rb +0 -42
  374. data/lib/aws/rds/config.rb +0 -18
  375. data/lib/aws/rds/db_instance.rb +0 -216
  376. data/lib/aws/rds/db_instance_collection.rb +0 -75
  377. data/lib/aws/rds/db_snapshot.rb +0 -163
  378. data/lib/aws/rds/db_snapshot_collection.rb +0 -89
  379. data/lib/aws/rds/errors.rb +0 -22
  380. data/lib/aws/record.rb +0 -139
  381. data/lib/aws/record/abstract_base.rb +0 -690
  382. data/lib/aws/record/attributes.rb +0 -388
  383. data/lib/aws/record/conversion.rb +0 -38
  384. data/lib/aws/record/dirty_tracking.rb +0 -287
  385. data/lib/aws/record/errors.rb +0 -143
  386. data/lib/aws/record/exceptions.rb +0 -51
  387. data/lib/aws/record/hash_model.rb +0 -204
  388. data/lib/aws/record/hash_model/attributes.rb +0 -195
  389. data/lib/aws/record/hash_model/finder_methods.rb +0 -172
  390. data/lib/aws/record/hash_model/scope.rb +0 -108
  391. data/lib/aws/record/model.rb +0 -453
  392. data/lib/aws/record/model/attributes.rb +0 -377
  393. data/lib/aws/record/model/finder_methods.rb +0 -232
  394. data/lib/aws/record/model/scope.rb +0 -212
  395. data/lib/aws/record/naming.rb +0 -31
  396. data/lib/aws/record/scope.rb +0 -203
  397. data/lib/aws/record/validations.rb +0 -694
  398. data/lib/aws/record/validator.rb +0 -246
  399. data/lib/aws/record/validators/acceptance.rb +0 -49
  400. data/lib/aws/record/validators/block.rb +0 -36
  401. data/lib/aws/record/validators/confirmation.rb +0 -41
  402. data/lib/aws/record/validators/count.rb +0 -106
  403. data/lib/aws/record/validators/exclusion.rb +0 -41
  404. data/lib/aws/record/validators/format.rb +0 -55
  405. data/lib/aws/record/validators/inclusion.rb +0 -54
  406. data/lib/aws/record/validators/length.rb +0 -105
  407. data/lib/aws/record/validators/method.rb +0 -31
  408. data/lib/aws/record/validators/numericality.rb +0 -136
  409. data/lib/aws/record/validators/presence.rb +0 -43
  410. data/lib/aws/redshift.rb +0 -51
  411. data/lib/aws/redshift/client.rb +0 -35
  412. data/lib/aws/redshift/config.rb +0 -18
  413. data/lib/aws/redshift/errors.rb +0 -22
  414. data/lib/aws/route_53.rb +0 -86
  415. data/lib/aws/route_53/change_batch.rb +0 -161
  416. data/lib/aws/route_53/change_info.rb +0 -72
  417. data/lib/aws/route_53/client.rb +0 -35
  418. data/lib/aws/route_53/config.rb +0 -18
  419. data/lib/aws/route_53/errors.rb +0 -22
  420. data/lib/aws/route_53/hosted_zone.rb +0 -111
  421. data/lib/aws/route_53/hosted_zone_collection.rb +0 -100
  422. data/lib/aws/route_53/resource_record_set.rb +0 -251
  423. data/lib/aws/route_53/resource_record_set_collection.rb +0 -110
  424. data/lib/aws/s3.rb +0 -156
  425. data/lib/aws/s3/access_control_list.rb +0 -265
  426. data/lib/aws/s3/acl_object.rb +0 -264
  427. data/lib/aws/s3/acl_options.rb +0 -204
  428. data/lib/aws/s3/bucket.rb +0 -742
  429. data/lib/aws/s3/bucket_collection.rb +0 -162
  430. data/lib/aws/s3/bucket_lifecycle_configuration.rb +0 -457
  431. data/lib/aws/s3/bucket_tag_collection.rb +0 -111
  432. data/lib/aws/s3/bucket_version_collection.rb +0 -79
  433. data/lib/aws/s3/cipher_io.rb +0 -120
  434. data/lib/aws/s3/client.rb +0 -1919
  435. data/lib/aws/s3/client/xml.rb +0 -259
  436. data/lib/aws/s3/config.rb +0 -48
  437. data/lib/aws/s3/cors_rule.rb +0 -108
  438. data/lib/aws/s3/cors_rule_collection.rb +0 -194
  439. data/lib/aws/s3/data_options.rb +0 -191
  440. data/lib/aws/s3/encryption_utils.rb +0 -146
  441. data/lib/aws/s3/errors.rb +0 -94
  442. data/lib/aws/s3/multipart_upload.rb +0 -351
  443. data/lib/aws/s3/multipart_upload_collection.rb +0 -76
  444. data/lib/aws/s3/object_collection.rb +0 -353
  445. data/lib/aws/s3/object_metadata.rb +0 -103
  446. data/lib/aws/s3/object_upload_collection.rb +0 -77
  447. data/lib/aws/s3/object_version.rb +0 -154
  448. data/lib/aws/s3/object_version_collection.rb +0 -89
  449. data/lib/aws/s3/paginated_collection.rb +0 -75
  450. data/lib/aws/s3/policy.rb +0 -74
  451. data/lib/aws/s3/prefix_and_delimiter_collection.rb +0 -47
  452. data/lib/aws/s3/prefixed_collection.rb +0 -85
  453. data/lib/aws/s3/presign_v4.rb +0 -127
  454. data/lib/aws/s3/presigned_post.rb +0 -554
  455. data/lib/aws/s3/request.rb +0 -62
  456. data/lib/aws/s3/s3_object.rb +0 -1781
  457. data/lib/aws/s3/tree.rb +0 -116
  458. data/lib/aws/s3/tree/branch_node.rb +0 -68
  459. data/lib/aws/s3/tree/child_collection.rb +0 -104
  460. data/lib/aws/s3/tree/leaf_node.rb +0 -94
  461. data/lib/aws/s3/tree/node.rb +0 -22
  462. data/lib/aws/s3/tree/parent.rb +0 -87
  463. data/lib/aws/s3/uploaded_part.rb +0 -82
  464. data/lib/aws/s3/uploaded_part_collection.rb +0 -84
  465. data/lib/aws/s3/website_configuration.rb +0 -102
  466. data/lib/aws/simple_db.rb +0 -218
  467. data/lib/aws/simple_db/attribute.rb +0 -156
  468. data/lib/aws/simple_db/attribute_collection.rb +0 -240
  469. data/lib/aws/simple_db/client.rb +0 -67
  470. data/lib/aws/simple_db/config.rb +0 -20
  471. data/lib/aws/simple_db/consistent_read_option.rb +0 -42
  472. data/lib/aws/simple_db/delete_attributes.rb +0 -62
  473. data/lib/aws/simple_db/domain.rb +0 -123
  474. data/lib/aws/simple_db/domain_collection.rb +0 -86
  475. data/lib/aws/simple_db/domain_metadata.rb +0 -110
  476. data/lib/aws/simple_db/errors.rb +0 -55
  477. data/lib/aws/simple_db/expect_condition_option.rb +0 -45
  478. data/lib/aws/simple_db/item.rb +0 -93
  479. data/lib/aws/simple_db/item_collection.rb +0 -654
  480. data/lib/aws/simple_db/item_data.rb +0 -73
  481. data/lib/aws/simple_db/put_attributes.rb +0 -60
  482. data/lib/aws/simple_email_service.rb +0 -430
  483. data/lib/aws/simple_email_service/client.rb +0 -37
  484. data/lib/aws/simple_email_service/config.rb +0 -18
  485. data/lib/aws/simple_email_service/email_address_collection.rb +0 -69
  486. data/lib/aws/simple_email_service/errors.rb +0 -22
  487. data/lib/aws/simple_email_service/identity.rb +0 -209
  488. data/lib/aws/simple_email_service/identity_collection.rb +0 -81
  489. data/lib/aws/simple_email_service/quotas.rb +0 -66
  490. data/lib/aws/simple_workflow.rb +0 -227
  491. data/lib/aws/simple_workflow/activity_task.rb +0 -178
  492. data/lib/aws/simple_workflow/activity_task_collection.rb +0 -123
  493. data/lib/aws/simple_workflow/activity_type.rb +0 -131
  494. data/lib/aws/simple_workflow/activity_type_collection.rb +0 -93
  495. data/lib/aws/simple_workflow/client.rb +0 -69
  496. data/lib/aws/simple_workflow/config.rb +0 -18
  497. data/lib/aws/simple_workflow/count.rb +0 -49
  498. data/lib/aws/simple_workflow/decision_task.rb +0 -603
  499. data/lib/aws/simple_workflow/decision_task_collection.rb +0 -225
  500. data/lib/aws/simple_workflow/domain.rb +0 -122
  501. data/lib/aws/simple_workflow/domain_collection.rb +0 -169
  502. data/lib/aws/simple_workflow/errors.rb +0 -20
  503. data/lib/aws/simple_workflow/history_event.rb +0 -276
  504. data/lib/aws/simple_workflow/history_event_collection.rb +0 -76
  505. data/lib/aws/simple_workflow/option_formatters.rb +0 -82
  506. data/lib/aws/simple_workflow/resource.rb +0 -94
  507. data/lib/aws/simple_workflow/type.rb +0 -89
  508. data/lib/aws/simple_workflow/type_collection.rb +0 -140
  509. data/lib/aws/simple_workflow/workflow_execution.rb +0 -384
  510. data/lib/aws/simple_workflow/workflow_execution_collection.rb +0 -617
  511. data/lib/aws/simple_workflow/workflow_type.rb +0 -179
  512. data/lib/aws/simple_workflow/workflow_type_collection.rb +0 -91
  513. data/lib/aws/sns.rb +0 -76
  514. data/lib/aws/sns/client.rb +0 -35
  515. data/lib/aws/sns/config.rb +0 -18
  516. data/lib/aws/sns/errors.rb +0 -22
  517. data/lib/aws/sns/has_delivery_policy.rb +0 -68
  518. data/lib/aws/sns/message.rb +0 -194
  519. data/lib/aws/sns/originators/from_auto_scaling.rb +0 -68
  520. data/lib/aws/sns/policy.rb +0 -47
  521. data/lib/aws/sns/subscription.rb +0 -165
  522. data/lib/aws/sns/subscription_collection.rb +0 -78
  523. data/lib/aws/sns/topic.rb +0 -403
  524. data/lib/aws/sns/topic_collection.rb +0 -62
  525. data/lib/aws/sns/topic_subscription_collection.rb +0 -54
  526. data/lib/aws/sqs.rb +0 -80
  527. data/lib/aws/sqs/client.rb +0 -53
  528. data/lib/aws/sqs/config.rb +0 -20
  529. data/lib/aws/sqs/errors.rb +0 -125
  530. data/lib/aws/sqs/policy.rb +0 -48
  531. data/lib/aws/sqs/queue.rb +0 -843
  532. data/lib/aws/sqs/queue_collection.rb +0 -182
  533. data/lib/aws/sqs/received_message.rb +0 -182
  534. data/lib/aws/sqs/received_sns_message.rb +0 -116
  535. data/lib/aws/storage_gateway.rb +0 -72
  536. data/lib/aws/storage_gateway/client.rb +0 -42
  537. data/lib/aws/storage_gateway/config.rb +0 -18
  538. data/lib/aws/storage_gateway/errors.rb +0 -22
  539. data/lib/aws/sts.rb +0 -164
  540. data/lib/aws/sts/client.rb +0 -46
  541. data/lib/aws/sts/config.rb +0 -18
  542. data/lib/aws/sts/errors.rb +0 -22
  543. data/lib/aws/sts/federated_session.rb +0 -56
  544. data/lib/aws/sts/policy.rb +0 -30
  545. data/lib/aws/sts/session.rb +0 -48
  546. data/lib/aws/support.rb +0 -29
  547. data/lib/aws/support/client.rb +0 -35
  548. data/lib/aws/support/config.rb +0 -18
  549. data/lib/aws/support/errors.rb +0 -20
  550. data/lib/aws/version.rb +0 -17
  551. data/rails/init.rb +0 -15
data/lib/aws/core/data.rb DELETED
@@ -1,247 +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
- module AWS
15
- module Core
16
-
17
- # Data is a light wrapper around a Ruby hash that provides
18
- # method missing access to the hash contents.
19
- #
20
- # ## Method Missing Access
21
- #
22
- # You can access hash content with methods if their keys
23
- # are symbols.
24
- #
25
- # data = AWS::Core::Data.new({ :a => 1, :b => 2, :c => true })
26
- # data.a #=> 1
27
- # data.b #=> 2
28
- # data.c #=> true
29
- # data.d #=> raises NoMethodError
30
- #
31
- # ## Boolean Methods
32
- #
33
- # Given the structure above you can also use question-mark methods.
34
- #
35
- # data.c? #=> true
36
- # data.d? #=> raises NoMethodError
37
- #
38
- # ## Nested Hashes
39
- #
40
- # If the data contains nested hashes you can chain methods into
41
- # the structure.
42
- #
43
- # data = AWS::Core::Data.new(:a => { :b => { :c => 'abc' }})
44
- # data.a.b.c #=> 'abc'
45
- #
46
- # ## Nested Arrays
47
- #
48
- # Arrays are wrapped in {Data::List} objects. They ensure any
49
- # data returned is correctly wrapped so you can continue using
50
- # method-missing access.
51
- #
52
- # data = AWS::Core::Data.new(
53
- # :people => [
54
- # {:name => 'john'},
55
- # {:name => 'jane'},
56
- # ]})
57
- #
58
- # data.people[0].name #=> 'john'
59
- # data.people[1].name #=> 'jane'
60
- #
61
- # data.people.map(&:name) #=> ['john','jane']
62
- #
63
- class Data
64
-
65
- module MethodMissingProxy
66
-
67
- # @api private
68
- def id
69
- self[:id] || self.id
70
- end
71
-
72
- def [] index_or_key
73
- Data.cast(@data[index_or_key])
74
- end
75
-
76
- # @return [Boolean] Returns true if the passed object equals
77
- # the wrapped array.
78
- def eql? other
79
- if other.is_a?(MethodMissingProxy)
80
- @data == other._data
81
- else
82
- @data == other
83
- end
84
- end
85
- alias_method :==, :eql?
86
-
87
- def dup
88
- Data.cast(@data.dup)
89
- end
90
- alias_method :clone, :dup
91
-
92
- protected
93
-
94
- def method_missing *args, &block
95
- if block_given?
96
- return_value = @data.send(*args) do |*values|
97
- yield(*values.flatten.map{|v| Data.cast(v) })
98
- end
99
- Data.cast(return_value)
100
- else
101
- Data.cast(@data.send(*args))
102
- end
103
- end
104
-
105
- def _data
106
- @data
107
- end
108
-
109
- end
110
-
111
- include MethodMissingProxy
112
-
113
- def method_missing method_name, *args, &block
114
- if
115
- args.empty? and !block_given? and
116
- key = _remove_question_mark(method_name) and
117
- @data.has_key?(key)
118
- then
119
- Data.cast(@data[key])
120
- else
121
- super
122
- end
123
- end
124
-
125
- # @param [Hash] data The ruby hash of data you need wrapped.
126
- def initialize data
127
- @data = data
128
- end
129
-
130
- # @return [Hash] Returns contents of this Data object as a raw hash.
131
- def to_hash
132
- @data
133
- end
134
- alias_method :to_h, :to_hash
135
-
136
- # @return [Array]
137
- def to_a
138
- @data.to_a
139
- end
140
- alias_method :to_ary, :to_a
141
-
142
- # @param [String,Symbol] method_name
143
- # @return [Boolean] Returns true if this data object will
144
- # respond to the given method name.
145
- def respond_to? method_name
146
- @data.key?(_remove_question_mark(method_name)) or
147
- @data.respond_to?(method_name)
148
- end
149
-
150
- # Returns an inspection string from the wrapped data.
151
- #
152
- # data = AWS::Core::Data.new({ :a => 1, :b => 2, :c => true })
153
- # data.inspect #=> '{:a=>1, :b=>2, :c=>true}'
154
- #
155
- # @return [String]
156
- #
157
- def inspect
158
- @data.inspect
159
- end
160
-
161
- # @api private
162
- def kind_of? klass
163
- if klass == Hash
164
- true
165
- else
166
- super
167
- end
168
- end
169
- alias_method :is_a?, :kind_of?
170
-
171
- protected
172
-
173
- def _remove_question_mark method_name
174
- case method_name
175
- when Symbol then method_name.to_s.sub(/\?$/, '').to_sym
176
- when String then method_name.sub(/\?$/, '')
177
- else method_name
178
- end
179
- end
180
-
181
- class << self
182
-
183
- # Given a hash, this method returns a {Data} object. Given
184
- # an Array, this method returns a {Data::List} object. Everything
185
- # else is returned as is.
186
- #
187
- # @param [Object] value The value to conditionally wrap.
188
- #
189
- # @return [Data,Data::List,Object] Wraps hashes and lists with
190
- # Data and List objects, all other objects are returned as
191
- # is.
192
- #
193
- def cast value
194
- case value
195
- when Hash then Data.new(value)
196
- when Array then Data::List.new(value)
197
- else value
198
- end
199
- end
200
-
201
- end
202
-
203
- class List
204
-
205
- include MethodMissingProxy
206
-
207
- # @param [Array] array
208
- def initialize array
209
- @data = array
210
- end
211
-
212
- # @return [String] Returns the inspection string for the
213
- # wrapped array.
214
- def inspect
215
- @data.inspect
216
- end
217
-
218
- # @return [Array] Returns the contents of this Data::List as
219
- # a raw array.
220
- def to_ary
221
- @data
222
- end
223
- alias_method :to_a, :to_ary
224
-
225
- # #inject works on Core::Data::List in in 1.8.7 and 1.9.3, but not
226
- # in 1.9.2 unless we define it like so.
227
- # @api private
228
- def inject *args, &block
229
- @data.inject(*args) do |obj,value|
230
- yield(Data.cast(obj),Data.cast(value))
231
- end
232
- end
233
-
234
- # @api private
235
- def kind_of? klass
236
- if klass == Array
237
- true
238
- else
239
- super
240
- end
241
- end
242
- alias_method :is_a?, :kind_of?
243
-
244
- end
245
- end
246
- end
247
- end
@@ -1,84 +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
- module AWS
15
- module Core
16
-
17
- # A utility module that provides a class method that wraps
18
- # a method such that it generates a deprecation warning when called.
19
- # Given the following class:
20
- #
21
- # class Example
22
- #
23
- # def do_something
24
- # end
25
- #
26
- # end
27
- #
28
- # If you want to deprecate the `#do_something` method, you can extend
29
- # this module and then call `deprecated` on the method (after it
30
- # has been defined).
31
- #
32
- # class Example
33
- #
34
- # extend AWS::Core::Deprecations
35
- #
36
- # def do_something
37
- # end
38
- #
39
- # def do_something_else
40
- # end
41
- #
42
- # deprecated :do_something
43
- #
44
- # end
45
- #
46
- # The `#do_something` method will continue to function, but will
47
- # generate a deprecation warning when called.
48
- #
49
- # @api private
50
- module Deprecations
51
-
52
- # @param [Symbol] method The name of the deprecated method.
53
- #
54
- # @option options [String] :message The warning message to issue
55
- # when the deprecated method is called.
56
- #
57
- # @option options [Symbol] :use The name of an use
58
- # method that should be used.
59
- #
60
- def deprecated method, options = {}
61
-
62
- deprecation_msg = options[:message] || begin
63
- msg = "DEPRECATION WARNING: called deprecated method `#{method}' "
64
- msg << "of #{self.name}"
65
- msg << ", try calling #{options[:use]} instead" if options[:use]
66
- msg
67
- end
68
-
69
- alias_method(:"deprecated_#{method}", method)
70
-
71
- warned = false # we only want to issue this warning once
72
-
73
- define_method(method) do |*args,&block|
74
- unless warned
75
- warn(deprecation_msg)
76
- warned = true
77
- end
78
- send("deprecated_#{method}", *args, &block)
79
- end
80
- end
81
-
82
- end
83
- end
84
- end
@@ -1,37 +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 'json'
15
-
16
- module AWS
17
- module Core
18
- # Provides a read-only interface to the bundled endpoints.json file.
19
- module Endpoints
20
-
21
- def hostname(region, endpoint_prefix)
22
- region = endpoints["regions"][region] || {}
23
- endpoint = region[endpoint_prefix] || {}
24
- endpoint["hostname"]
25
- end
26
- module_function :hostname
27
-
28
- def endpoints
29
- @endpoints ||= begin
30
- JSON.parse(File.read(File.join(AWS::ROOT, 'endpoints.json')))
31
- end
32
- end
33
- module_function :endpoints
34
-
35
- end
36
- end
37
- end
@@ -1,349 +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'
15
- require 'net/https'
16
- require 'thread'
17
- require 'logger'
18
-
19
- module AWS
20
- module Core
21
- module Http
22
-
23
- # @attr_reader [URI::HTTP,nil] proxy_uri Returns the configured proxy uri.
24
- # @attr_reader [Float,nil] http_continue_timeout
25
- # @attr_reader [Integer,Float] http_idle_timeout
26
- # @attr_reader [Integer,Float] http_open_timeout
27
- # @attr_reader [Integer,Float] http_read_timeout
28
- # @attr_reader [Boolean] http_wire_trace
29
- # @attr_reader [Logger,nil] logger
30
- # @attr_reader [Boolean] ssl_verify_peer
31
- # @attr_reader [String,nil] ssl_ca_file
32
- # @attr_reader [String,nil] ssl_ca_path
33
- # @api private
34
- class ConnectionPool
35
-
36
- @pools_mutex = Mutex.new
37
- @pools = {}
38
-
39
- # @api private
40
- OPTIONS = [
41
- :proxy_uri,
42
- :http_continue_timeout,
43
- :http_idle_timeout,
44
- :http_open_timeout,
45
- :http_read_timeout,
46
- :http_wire_trace,
47
- :logger,
48
- :ssl_verify_peer,
49
- :ssl_ca_file,
50
- :ssl_ca_path,
51
- ]
52
-
53
- OPTIONS.each do |attr_name|
54
- attr_reader(attr_name)
55
- end
56
-
57
- alias_method :http_wire_trace?, :http_wire_trace
58
-
59
- alias_method :ssl_verify_peer?, :ssl_verify_peer
60
-
61
- # @api private
62
- def initialize options = {}
63
- # user supplied options are filtered by the class .for method
64
- options.each_pair do |opt_name, opt_value|
65
- instance_variable_set("@#{opt_name}", opt_value)
66
- end
67
-
68
- # connection pool
69
- @pool_mutex = Mutex.new
70
- @pool = Hash.new do |pool,endpoint|
71
- pool[endpoint] = []
72
- pool[endpoint]
73
- end
74
- end
75
-
76
- # @return [Hash] a read-only hash of options for this pool.
77
- def options
78
- OPTIONS.inject({}) do |options, opt_name|
79
- options[opt_name] = send(opt_name)
80
- options
81
- end.freeze
82
- end
83
-
84
- # Makes an HTTP request, yielding a Net::HTTPResponse object.
85
- #
86
- # pool.request('http://google.com', Net::HTTP::Get.new('/')) do |resp|
87
- # puts resp.code # status code
88
- # puts resp.to_h.inspect # dump the headers
89
- # puts resp.body
90
- # end
91
- #
92
- # @param [URI::HTTP,URI::HTTPS,String] endpoint The HTTP(S) endpoint to
93
- # connect to (e.g. 'https://domain.com').
94
- #
95
- # @param [Net::HTTPRequest] request The request to make. This can be
96
- # any request object from Net::HTTP (e.g. Net::HTTP::Get,
97
- # Net::HTTP::POST, etc).
98
- #
99
- # @yieldparam [Net::HTTPResponse] net_http_response
100
- #
101
- # @return (see #session_for
102
- def request endpoint, request, &block
103
- session_for(endpoint) do |http|
104
- yield(http.request(request))
105
- end
106
- end
107
-
108
- # @param [URI::HTTP,URI::HTTPS,String] endpoint The HTTP(S) endpoint to
109
- # connect to (e.g. 'https://domain.com').
110
- #
111
- # @yieldparam [Net::HTTPSession] session
112
- #
113
- # @return [nil]
114
- def session_for endpoint, &block
115
- endpoint = endpoint.to_s
116
- session = nil
117
-
118
- # attempt to recycle an already open session
119
- @pool_mutex.synchronize do
120
- _clean
121
- session = @pool[endpoint].shift
122
- end
123
-
124
- begin
125
- session ||= start_session(endpoint)
126
- session.read_timeout = http_read_timeout
127
- session.continue_timeout = http_continue_timeout if
128
- session.respond_to?(:continue_timeout=)
129
- yield(session)
130
- rescue Exception => error
131
- session.finish if session
132
- raise error
133
- else
134
- # No error raised? Good, check the session into the pool.
135
- @pool_mutex.synchronize { @pool[endpoint] << session }
136
- end
137
- nil
138
- end
139
-
140
- # @return [Integer] Returns the count of sessions currently in the pool,
141
- # not counting those currently in use.
142
- def size
143
- @pool_mutex.synchronize do
144
- size = 0
145
- @pool.each_pair do |endpoint,sessions|
146
- size += sessions.size
147
- end
148
- size
149
- end
150
- end
151
-
152
- # Removes stale http sessions from the pool (that have exceeded
153
- # the idle timeout).
154
- # @return [nil]
155
- def clean!
156
- @pool_mutex.synchronize { _clean }
157
- nil
158
- end
159
-
160
- # Closes and removes removes all sessions from the pool.
161
- # If empty! is called while there are outstanding requests they may
162
- # get checked back into the pool, leaving the pool in a non-empty state.
163
- # @return [nil]
164
- def empty!
165
- @pool_mutex.synchronize do
166
- @pool.each_pair do |endpoint,sessions|
167
- sessions.each(&:finish)
168
- end
169
- @pool.clear
170
- end
171
- nil
172
- end
173
-
174
- class << self
175
-
176
- # Returns a connection pool constructed from the given options.
177
- # Calling this method twice with the same options will return
178
- # the same pool.
179
- #
180
- # @option options [URI::HTTP,String] :proxy_uri A proxy to send
181
- # requests through. Formatted like 'http://proxy.com:123'.
182
- #
183
- # @option options [Float] :http_continue_timeout (nil) The number of
184
- # seconds to wait for a 100-continue response before sending the
185
- # request body. This option has no effect unless the request has
186
- # "Expect" header set to "100-continue". Defaults to `nil` which
187
- # disables this behaviour. This value can safely be set per-request
188
- # on the session yeidled by {#session_for}.
189
- #
190
- # @option options [Float] :http_idle_timeout (15) The number of
191
- # seconds a connection is allowed to sit idble before it is
192
- # considered stale. Stale connections are closed and removed
193
- # from the pool before making a request.
194
- #
195
- # @option options [Float] :http_open_timeout (15) The number of
196
- # seconds to wait when opening a HTTP session before rasing a
197
- # `Timeout::Error`.
198
- #
199
- # @option options [Integer] :http_read_timeout (60) The default
200
- # number of seconds to wait for response data. This value can
201
- # safely be set
202
- # per-request on the session yeidled by {#session_for}.
203
- #
204
- # @option options [Boolean] :http_wire_trace (false) When `true`, HTTP
205
- # debug output will be sent to the `:logger`.
206
- #
207
- # @option options [Logger] :logger Where debug output is sent.
208
- # Defaults to `nil` when `:http_wire_trace` is `false`.
209
- # Defaults to `Logger.new($stdout)` when `:http_wire_trace` is
210
- # `true`.
211
- #
212
- # @option options [Boolean] :ssl_verify_peer (true) When `true`, SSL
213
- # peer certificates are verified when establishing a connection.
214
- #
215
- # @option options [String] :ssl_ca_file Full path to the SSL
216
- # certificate authority bundle file that should be used when
217
- # verifying peer certificates. If you do not pass
218
- # `:ssl_ca_file` or `:ssl_ca_path` the the system default will be
219
- # used if available.
220
- #
221
- # @option options [String] :ssl_ca_path Full path of the directory
222
- # that contains the unbundled SSL certificate authority files#
223
- # for verifying peer certificates. If you do not pass
224
- # `:ssl_ca_file` or `:ssl_ca_path` the the system default will
225
- # be used if available.
226
- #
227
- # @return [ConnectionPool]
228
- def new options = {}
229
- options = pool_options(options)
230
- @pools_mutex.synchronize do
231
- @pools[options] ||= super(options)
232
- end
233
- end
234
-
235
- # @return [Array<ConnectionPool>] Returns a list of of the constructed
236
- # connection pools.
237
- def pools
238
- @pools.values
239
- end
240
-
241
- private
242
-
243
- # Filters an option hash, merging in default values.
244
- # @return [Hash]
245
- def pool_options options
246
- wire_trace = !!options[:http_wire_trace]
247
- logger = options[:logger] || Logger.new($stdout) if wire_trace
248
- verify_peer = options.key?(:ssl_verify_peer) ?
249
- !!options[:ssl_verify_peer] : true
250
- {
251
- :proxy_uri => URI.parse(options[:proxy_uri].to_s),
252
- :http_continue_timeout => options[:http_continue_timeout],
253
- :http_open_timeout => options[:http_open_timeout] || 15,
254
- :http_idle_timeout => options[:http_idle_timeout] || 15,
255
- :http_read_timeout => options[:http_read_timeout] || 60,
256
- :http_wire_trace => wire_trace,
257
- :logger => logger,
258
- :ssl_verify_peer => verify_peer,
259
- :ssl_ca_file => options[:ssl_ca_file],
260
- :ssl_ca_path => options[:ssl_ca_path],
261
- }
262
- end
263
-
264
- end
265
-
266
- private
267
-
268
- # Starts and returns a new HTTP(S) session.
269
- # @param [String] endpoint
270
- # @return [Net::HTTPSession]
271
- def start_session endpoint
272
-
273
- endpoint = URI.parse(endpoint)
274
-
275
- args = []
276
- args << endpoint.host
277
- args << endpoint.port
278
- args << proxy_uri.host
279
- args << proxy_uri.port
280
- args << proxy_uri.user
281
- args << proxy_uri.password
282
-
283
- http = Net::HTTP.new(*args.compact)
284
- http.extend(SessionExtensions)
285
- http.set_debug_output(logger) if http_wire_trace?
286
- http.open_timeout = http_open_timeout
287
-
288
- if endpoint.scheme == 'https'
289
- http.use_ssl = true
290
- if ssl_verify_peer?
291
- http.verify_mode = OpenSSL::SSL::VERIFY_PEER
292
- http.ca_file = ssl_ca_file if ssl_ca_file
293
- http.ca_path = ssl_ca_path if ssl_ca_path
294
- else
295
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
296
- end
297
- else
298
- http.use_ssl = false
299
- end
300
-
301
- http.start
302
- http
303
- end
304
-
305
- # Removes stale sessions from the pool. This method *must* be called
306
- # @note **Must** be called behind a `@pool_mutex` synchronize block.
307
- def _clean
308
- now = Time.now
309
- @pool.each_pair do |endpoint,sessions|
310
- sessions.delete_if do |session|
311
- if
312
- session.last_used.nil? or
313
- now - session.last_used > http_idle_timeout
314
- then
315
- session.finish
316
- true
317
- end
318
- end
319
- end
320
- end
321
-
322
- # Helper methods extended onto Net::HTTPSession objects opend by the
323
- # connection pool.
324
- # @api private
325
- module SessionExtensions
326
-
327
- # Sends the request and tracks that this session has been used.
328
- def request *args, &block
329
- @last_used = Time.now
330
- super(*args, &block)
331
- end
332
-
333
- # @return [Time,nil]
334
- def last_used
335
- @last_used
336
- end
337
-
338
- # Attempts to close/finish the session without raising an error.
339
- def finish
340
- super
341
- rescue IOError
342
- nil
343
- end
344
-
345
- end
346
- end
347
- end
348
- end
349
- end