aws-sdk-core 2.0.0.rc1

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 (417) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +7 -0
  3. data/.simplecov +6 -0
  4. data/.travis.yml +12 -0
  5. data/.yardopts +11 -0
  6. data/Gemfile +26 -0
  7. data/LICENSE.txt +12 -0
  8. data/README.md +169 -0
  9. data/Rakefile +15 -0
  10. data/apis/AutoScaling-2011-01-01.json +1852 -0
  11. data/apis/CloudFormation-2010-05-15.json +981 -0
  12. data/apis/CloudFront-2012-05-05.json +3861 -0
  13. data/apis/CloudFront-2013-05-12.json +4593 -0
  14. data/apis/CloudFront-2013-08-26.json +4849 -0
  15. data/apis/CloudSearch-2011-02-01.json +2080 -0
  16. data/apis/CloudWatch-2010-08-01.json +1206 -0
  17. data/apis/DataPipeline-2012-10-29.json +901 -0
  18. data/apis/DirectConnect-2012-10-25.json +825 -0
  19. data/apis/DynamoDB-2011-12-05.json +2857 -0
  20. data/apis/DynamoDB-2012-08-10.json +3127 -0
  21. data/apis/EC2-2013-06-15.json +13600 -0
  22. data/apis/EC2-2013-10-01.json +14574 -0
  23. data/apis/EMR-2009-03-31.json +957 -0
  24. data/apis/ElastiCache-2012-11-15.json +2921 -0
  25. data/apis/ElastiCache-2013-06-15.json +3586 -0
  26. data/apis/ElasticBeanstalk-2010-12-01.json +2225 -0
  27. data/apis/ElasticLoadBalancing-2012-06-01.json +1215 -0
  28. data/apis/ElasticTranscoder-2012-09-25.json +3692 -0
  29. data/apis/Glacier-2012-06-01.json +1058 -0
  30. data/apis/IAM-2010-05-08.json +2863 -0
  31. data/apis/ImportExport-2010-06-01.json +328 -0
  32. data/apis/OpsWorks-2013-02-18.json +3546 -0
  33. data/apis/RDS-2013-01-10.json +6772 -0
  34. data/apis/RDS-2013-02-12.json +7151 -0
  35. data/apis/RDS-2013-05-15.json +7809 -0
  36. data/apis/Redshift-2012-12-01.json +4180 -0
  37. data/apis/Route53-2012-12-12.json +1018 -0
  38. data/apis/S3-2006-03-01.json +3787 -0
  39. data/apis/SDB-2009-04-15.json +539 -0
  40. data/apis/SES-2010-12-01.json +678 -0
  41. data/apis/SNS-2010-03-31.json +870 -0
  42. data/apis/SQS-2012-11-05.json +798 -0
  43. data/apis/STS-2011-06-15.json +352 -0
  44. data/apis/SWF-2012-01-25.json +5451 -0
  45. data/apis/StorageGateway-2012-06-30.json +1696 -0
  46. data/apis/Support-2013-04-15.json +794 -0
  47. data/apis/configuration/endpoints.json +1337 -0
  48. data/apis/source/autoscaling-2011-01-01.json +3215 -0
  49. data/apis/source/autoscaling-2011-01-01.paginators.json +52 -0
  50. data/apis/source/cloudformation-2010-05-15.json +1260 -0
  51. data/apis/source/cloudformation-2010-05-15.paginators.json +24 -0
  52. data/apis/source/cloudfront-2012-05-05.json +6588 -0
  53. data/apis/source/cloudfront-2012-05-05.paginators.json +28 -0
  54. data/apis/source/cloudfront-2013-05-12.json +7614 -0
  55. data/apis/source/cloudfront-2013-05-12.paginators.json +28 -0
  56. data/apis/source/cloudfront-2013-08-26.json +8016 -0
  57. data/apis/source/cloudfront-2013-08-26.paginators.json +28 -0
  58. data/apis/source/cloudsearch-2011-02-01.json +3585 -0
  59. data/apis/source/cloudsearch-2011-02-01.paginators.json +13 -0
  60. data/apis/source/datapipeline-2012-10-29.json +2144 -0
  61. data/apis/source/datapipeline-2012-10-29.paginators.json +25 -0
  62. data/apis/source/directconnect-2012-10-25.json +1271 -0
  63. data/apis/source/directconnect-2012-10-25.paginators.json +16 -0
  64. data/apis/source/dynamodb-2011-12-05.json +4380 -0
  65. data/apis/source/dynamodb-2011-12-05.paginators.json +24 -0
  66. data/apis/source/dynamodb-2012-08-10.json +4839 -0
  67. data/apis/source/dynamodb-2012-08-10.paginators.json +24 -0
  68. data/apis/source/ec2-2013-02-01.json +18820 -0
  69. data/apis/source/ec2-2013-02-01.paginators.json +115 -0
  70. data/apis/source/ec2-2013-06-15.json +18820 -0
  71. data/apis/source/ec2-2013-06-15.paginators.json +115 -0
  72. data/apis/source/ec2-2013-10-01.json +19885 -0
  73. data/apis/source/ec2-2013-10-01.paginators.json +115 -0
  74. data/apis/source/elasticache-2012-11-15.json +4403 -0
  75. data/apis/source/elasticache-2012-11-15.paginators.json +64 -0
  76. data/apis/source/elasticache-2013-06-15.json +5421 -0
  77. data/apis/source/elasticache-2013-06-15.paginators.json +64 -0
  78. data/apis/source/elasticbeanstalk-2010-12-01.json +3151 -0
  79. data/apis/source/elasticbeanstalk-2010-12-01.paginators.json +25 -0
  80. data/apis/source/elasticloadbalancing-2012-06-01.json +2041 -0
  81. data/apis/source/elasticloadbalancing-2012-06-01.paginators.json +18 -0
  82. data/apis/source/elasticmapreduce-2009-03-31.json +1478 -0
  83. data/apis/source/elasticmapreduce-2009-03-31.paginators.json +7 -0
  84. data/apis/source/elastictranscoder-2012-09-25.json +6148 -0
  85. data/apis/source/elastictranscoder-2012-09-25.paginators.json +20 -0
  86. data/apis/source/email-2010-12-01.json +892 -0
  87. data/apis/source/email-2010-12-01.paginators.json +13 -0
  88. data/apis/source/glacier-2012-06-01.json +3147 -0
  89. data/apis/source/glacier-2012-06-01.paginators.json +28 -0
  90. data/apis/source/iam-2010-05-08.json +5857 -0
  91. data/apis/source/iam-2010-05-08.paginators.json +116 -0
  92. data/apis/source/importexport-2010-06-01.json +876 -0
  93. data/apis/source/importexport-2010-06-01.paginators.json +10 -0
  94. data/apis/source/monitoring-2010-08-01.json +1910 -0
  95. data/apis/source/monitoring-2010-08-01.paginators.json +24 -0
  96. data/apis/source/opsworks-2013-02-18.json +5848 -0
  97. data/apis/source/opsworks-2013-02-18.paginators.json +46 -0
  98. data/apis/source/rds-2013-01-10.json +9283 -0
  99. data/apis/source/rds-2013-01-10.paginators.json +105 -0
  100. data/apis/source/rds-2013-02-12.json +9777 -0
  101. data/apis/source/rds-2013-02-12.paginators.json +105 -0
  102. data/apis/source/rds-2013-05-15.json +10618 -0
  103. data/apis/source/rds-2013-05-15.paginators.json +105 -0
  104. data/apis/source/redshift-2012-12-01.json +5742 -0
  105. data/apis/source/redshift-2012-12-01.paginators.json +74 -0
  106. data/apis/source/route53-2012-12-12.json +2067 -0
  107. data/apis/source/route53-2012-12-12.paginators.json +33 -0
  108. data/apis/source/s3-2006-03-01.json +4261 -0
  109. data/apis/source/s3-2006-03-01.paginators.json +46 -0
  110. data/apis/source/sdb-2009-04-15.json +1145 -0
  111. data/apis/source/sdb-2009-04-15.paginators.json +15 -0
  112. data/apis/source/sns-2010-03-31.json +2234 -0
  113. data/apis/source/sns-2010-03-31.paginators.json +19 -0
  114. data/apis/source/sqs-2012-11-05.json +1162 -0
  115. data/apis/source/sqs-2012-11-05.paginators.json +7 -0
  116. data/apis/source/storagegateway-2012-06-30.json +9487 -0
  117. data/apis/source/storagegateway-2012-06-30.paginators.json +28 -0
  118. data/apis/source/sts-2011-06-15.json +627 -0
  119. data/apis/source/support-2013-04-15.json +1261 -0
  120. data/apis/source/support-2013-04-15.paginators.json +31 -0
  121. data/apis/source/swf-2012-01-25.json +8744 -0
  122. data/apis/source/swf-2012-01-25.paginators.json +46 -0
  123. data/aws-sdk-core.gemspec +21 -0
  124. data/bin/aws.rb +156 -0
  125. data/doc-src/images/lastnode.png +0 -0
  126. data/doc-src/images/node.png +0 -0
  127. data/doc-src/images/vline.png +0 -0
  128. data/doc-src/plugins/apis.rb +205 -0
  129. data/doc-src/templates/default/fulldoc/html/css/common.css +90 -0
  130. data/doc-src/templates/default/fulldoc/html/js/tabs.js +21 -0
  131. data/doc-src/templates/default/fulldoc/html/setup.rb +61 -0
  132. data/doc-src/templates/default/layout/html/footer.erb +29 -0
  133. data/doc-src/templates/default/layout/html/setup.rb +3 -0
  134. data/features/autoscaling/client.feature +22 -0
  135. data/features/autoscaling/setup.rb +6 -0
  136. data/features/cloudformation/client.feature +18 -0
  137. data/features/cloudformation/setup.rb +6 -0
  138. data/features/cloudfront/client.feature +21 -0
  139. data/features/cloudfront/setup.rb +6 -0
  140. data/features/cloudsearch/client.feature +18 -0
  141. data/features/cloudsearch/setup.rb +6 -0
  142. data/features/cloudwatch/client.feature +21 -0
  143. data/features/cloudwatch/setup.rb +6 -0
  144. data/features/common/step_definitions.rb +65 -0
  145. data/features/datapipeline/client.feature +18 -0
  146. data/features/datapipeline/setup.rb +6 -0
  147. data/features/directconnect/client.feature +18 -0
  148. data/features/directconnect/setup.rb +6 -0
  149. data/features/dynamodb/client.feature +21 -0
  150. data/features/dynamodb/setup.rb +8 -0
  151. data/features/dynamodb/simplified.feature +32 -0
  152. data/features/dynamodb/step_definitions.rb +3 -0
  153. data/features/ec2/client.feature +21 -0
  154. data/features/ec2/setup.rb +6 -0
  155. data/features/ec2/step_definitions.rb +19 -0
  156. data/features/elasticache/client.feature +18 -0
  157. data/features/elasticache/setup.rb +6 -0
  158. data/features/elasticbeanstalk/client.feature +18 -0
  159. data/features/elasticbeanstalk/setup.rb +6 -0
  160. data/features/elasticloadbalancing/client.feature +18 -0
  161. data/features/elasticloadbalancing/setup.rb +6 -0
  162. data/features/elastictranscoder/client.feature +18 -0
  163. data/features/elastictranscoder/setup.rb +6 -0
  164. data/features/emr/client.feature +18 -0
  165. data/features/emr/setup.rb +6 -0
  166. data/features/env.rb +23 -0
  167. data/features/glacier/client.feature +28 -0
  168. data/features/glacier/setup.rb +16 -0
  169. data/features/glacier/step_definitions.rb +25 -0
  170. data/features/iam/client.feature +18 -0
  171. data/features/iam/setup.rb +6 -0
  172. data/features/importexport/client.feature +18 -0
  173. data/features/importexport/setup.rb +6 -0
  174. data/features/opsworks/client.feature +18 -0
  175. data/features/opsworks/setup.rb +6 -0
  176. data/features/rds/client.feature +18 -0
  177. data/features/rds/setup.rb +6 -0
  178. data/features/redshift/client.feature +18 -0
  179. data/features/redshift/setup.rb +6 -0
  180. data/features/route53/client.feature +18 -0
  181. data/features/route53/setup.rb +6 -0
  182. data/features/s3/buckets.feature +22 -0
  183. data/features/s3/objects.feature +18 -0
  184. data/features/s3/setup.rb +17 -0
  185. data/features/s3/step_definitions.rb +66 -0
  186. data/features/s3/test.png +0 -0
  187. data/features/sdb/client.feature +18 -0
  188. data/features/sdb/setup.rb +6 -0
  189. data/features/ses/client.feature +18 -0
  190. data/features/ses/setup.rb +6 -0
  191. data/features/sns/client.feature +18 -0
  192. data/features/sns/setup.rb +6 -0
  193. data/features/sqs/client.feature +23 -0
  194. data/features/sqs/setup.rb +10 -0
  195. data/features/sqs/step_definitions.rb +18 -0
  196. data/features/storagegateway/client.feature +18 -0
  197. data/features/storagegateway/setup.rb +6 -0
  198. data/features/sts/client.feature +18 -0
  199. data/features/sts/setup.rb +6 -0
  200. data/features/swf/client.feature +21 -0
  201. data/features/swf/setup.rb +6 -0
  202. data/integration-test-config.json.sample +3 -0
  203. data/lib/aws-sdk-core.rb +11 -0
  204. data/lib/aws.rb +175 -0
  205. data/lib/aws/api/base_translator.rb +72 -0
  206. data/lib/aws/api/doc_example.rb +116 -0
  207. data/lib/aws/api/documentor.rb +140 -0
  208. data/lib/aws/api/operation_translator.rb +77 -0
  209. data/lib/aws/api/service_namer.rb +40 -0
  210. data/lib/aws/api/service_translators/cloud_front.rb +19 -0
  211. data/lib/aws/api/service_translators/dynamo_db.rb +7 -0
  212. data/lib/aws/api/service_translators/glacier.rb +37 -0
  213. data/lib/aws/api/service_translators/import_export.rb +15 -0
  214. data/lib/aws/api/service_translators/route53.rb +23 -0
  215. data/lib/aws/api/service_translators/s3.rb +11 -0
  216. data/lib/aws/api/service_translators/sqs.rb +10 -0
  217. data/lib/aws/api/service_translators/swf.rb +7 -0
  218. data/lib/aws/api/shape_translator.rb +96 -0
  219. data/lib/aws/api/translator.rb +150 -0
  220. data/lib/aws/api/visitor.rb +32 -0
  221. data/lib/aws/credentials.rb +35 -0
  222. data/lib/aws/error_handler.rb +48 -0
  223. data/lib/aws/errors.rb +83 -0
  224. data/lib/aws/json/builder.rb +77 -0
  225. data/lib/aws/json/error_parser.rb +20 -0
  226. data/lib/aws/json/parser.rb +67 -0
  227. data/lib/aws/json/serializer.rb +15 -0
  228. data/lib/aws/plugins/credentials.rb +48 -0
  229. data/lib/aws/plugins/dynamodb_extended_retries.rb +22 -0
  230. data/lib/aws/plugins/glacier_api_version.rb +19 -0
  231. data/lib/aws/plugins/glacier_checksums.rb +100 -0
  232. data/lib/aws/plugins/global_configuration.rb +79 -0
  233. data/lib/aws/plugins/json_protocol.rb +30 -0
  234. data/lib/aws/plugins/json_rpc_headers.rb +34 -0
  235. data/lib/aws/plugins/query_protocol.rb +11 -0
  236. data/lib/aws/plugins/regional_endpoint.rb +37 -0
  237. data/lib/aws/plugins/retry_errors.rb +149 -0
  238. data/lib/aws/plugins/s3_bucket_dns.rb +78 -0
  239. data/lib/aws/plugins/s3_complete_multipart_upload_fix.rb +38 -0
  240. data/lib/aws/plugins/s3_get_bucket_location_fix.rb +21 -0
  241. data/lib/aws/plugins/s3_md5s.rb +61 -0
  242. data/lib/aws/plugins/s3_redirects.rb +38 -0
  243. data/lib/aws/plugins/s3_regional_endpoint.rb +19 -0
  244. data/lib/aws/plugins/s3_signer.rb +9 -0
  245. data/lib/aws/plugins/signature_v2.rb +9 -0
  246. data/lib/aws/plugins/signature_v3.rb +9 -0
  247. data/lib/aws/plugins/signature_v4.rb +29 -0
  248. data/lib/aws/plugins/sqs_queue_urls.rb +33 -0
  249. data/lib/aws/plugins/swf_read_timeouts.rb +23 -0
  250. data/lib/aws/plugins/user_agent.rb +32 -0
  251. data/lib/aws/plugins/xml_protocol.rb +11 -0
  252. data/lib/aws/query/builder.rb +102 -0
  253. data/lib/aws/query/param.rb +43 -0
  254. data/lib/aws/query/param_list.rb +91 -0
  255. data/lib/aws/query/serializer.rb +24 -0
  256. data/lib/aws/request_handler.rb +39 -0
  257. data/lib/aws/response_handler.rb +38 -0
  258. data/lib/aws/service.rb +237 -0
  259. data/lib/aws/signers/base.rb +29 -0
  260. data/lib/aws/signers/handler.rb +18 -0
  261. data/lib/aws/signers/s3.rb +162 -0
  262. data/lib/aws/signers/v2.rb +48 -0
  263. data/lib/aws/signers/v3.rb +34 -0
  264. data/lib/aws/signers/v4.rb +142 -0
  265. data/lib/aws/structure.rb +38 -0
  266. data/lib/aws/timestamp_formatter.rb +16 -0
  267. data/lib/aws/util.rb +38 -0
  268. data/lib/aws/version.rb +3 -0
  269. data/lib/aws/xml/builder.rb +134 -0
  270. data/lib/aws/xml/error_parser.rb +24 -0
  271. data/lib/aws/xml/parser.rb +147 -0
  272. data/lib/aws/xml/serializer.rb +16 -0
  273. data/spec/aws/credentials_spec.rb +39 -0
  274. data/spec/aws/iam_spec.rb +17 -0
  275. data/spec/aws/json/builder_spec.rb +183 -0
  276. data/spec/aws/json/parser_spec.rb +238 -0
  277. data/spec/aws/operations_spec.rb +145 -0
  278. data/spec/aws/plugins/credentials_spec.rb +76 -0
  279. data/spec/aws/plugins/global_configuration_spec.rb +56 -0
  280. data/spec/aws/plugins/region_endpoint_spec.rb +77 -0
  281. data/spec/aws/plugins/retry_errors_spec.rb +253 -0
  282. data/spec/aws/query/builder_spec.rb +361 -0
  283. data/spec/aws/query/param_list_spec.rb +80 -0
  284. data/spec/aws/query/param_spec.rb +59 -0
  285. data/spec/aws/service_spec.rb +247 -0
  286. data/spec/aws/signers/v4_spec.rb +141 -0
  287. data/spec/aws/structure_spec.rb +103 -0
  288. data/spec/aws/xml/builder_spec.rb +404 -0
  289. data/spec/aws/xml/parser_spec.rb +716 -0
  290. data/spec/aws_spec.rb +89 -0
  291. data/spec/fixtures/api/swf.json +100 -0
  292. data/spec/fixtures/operations/cloudfront/list_distributions.yml +195 -0
  293. data/spec/fixtures/operations/cloudfront/max_items.yml +12 -0
  294. data/spec/fixtures/operations/dynamodb/error_parsing.yml +13 -0
  295. data/spec/fixtures/operations/glacier/error_parsing.yml +10 -0
  296. data/spec/fixtures/operations/glacier/list_vaults.yml +24 -0
  297. data/spec/fixtures/operations/iam/result_wrapped_elements.yml +31 -0
  298. data/spec/fixtures/operations/s3/304_response.yml +12 -0
  299. data/spec/fixtures/operations/s3/400_response.yml +12 -0
  300. data/spec/fixtures/operations/s3/403_response.yml +12 -0
  301. data/spec/fixtures/operations/s3/404_response.yml +12 -0
  302. data/spec/fixtures/operations/s3/comlete_multipart_upload_error.yml +18 -0
  303. data/spec/fixtures/operations/s3/create_bucket_with_location_constraint.yml +25 -0
  304. data/spec/fixtures/operations/s3/create_bucket_without_location_constraint.yml +9 -0
  305. data/spec/fixtures/operations/s3/delete_objects.yml +54 -0
  306. data/spec/fixtures/operations/s3/error_parsing.yml +17 -0
  307. data/spec/fixtures/operations/s3/get_bucket_location.yml +17 -0
  308. data/spec/fixtures/operations/s3/get_bucket_location_classic.yml +17 -0
  309. data/spec/fixtures/operations/s3/head_bucket_with_dns_incompatible_name.yml +12 -0
  310. data/spec/fixtures/operations/s3/head_object.yml +50 -0
  311. data/spec/fixtures/operations/s3/list_buckets.yml +41 -0
  312. data/spec/fixtures/operations/s3/md5_checksum_disabled.yml +10 -0
  313. data/spec/fixtures/operations/s3/md5_checksum_enabled.yml +8 -0
  314. data/spec/fixtures/operations/swf/list_domains.yml +20 -0
  315. data/spec/spec_helper.rb +55 -0
  316. data/tasks/apis.rake +51 -0
  317. data/tasks/docs.rake +59 -0
  318. data/tasks/test.rake +39 -0
  319. data/vendor/seahorse/.gitignore +5 -0
  320. data/vendor/seahorse/.simplecov +4 -0
  321. data/vendor/seahorse/.yardopts +10 -0
  322. data/vendor/seahorse/Gemfile +20 -0
  323. data/vendor/seahorse/LICENSE.txt +12 -0
  324. data/vendor/seahorse/README.md +129 -0
  325. data/vendor/seahorse/Rakefile +7 -0
  326. data/vendor/seahorse/ca-bundle.crt +3554 -0
  327. data/vendor/seahorse/lib/seahorse.rb +6 -0
  328. data/vendor/seahorse/lib/seahorse/client.rb +61 -0
  329. data/vendor/seahorse/lib/seahorse/client/base.rb +239 -0
  330. data/vendor/seahorse/lib/seahorse/client/block_io.rb +39 -0
  331. data/vendor/seahorse/lib/seahorse/client/configuration.rb +197 -0
  332. data/vendor/seahorse/lib/seahorse/client/handler.rb +26 -0
  333. data/vendor/seahorse/lib/seahorse/client/handler_builder.rb +49 -0
  334. data/vendor/seahorse/lib/seahorse/client/handler_list.rb +250 -0
  335. data/vendor/seahorse/lib/seahorse/client/http/endpoint.rb +95 -0
  336. data/vendor/seahorse/lib/seahorse/client/http/headers.rb +94 -0
  337. data/vendor/seahorse/lib/seahorse/client/http/plain_string_io.rb +11 -0
  338. data/vendor/seahorse/lib/seahorse/client/http/request.rb +78 -0
  339. data/vendor/seahorse/lib/seahorse/client/http/response.rb +45 -0
  340. data/vendor/seahorse/lib/seahorse/client/logging/formatter.rb +319 -0
  341. data/vendor/seahorse/lib/seahorse/client/logging/handler.rb +35 -0
  342. data/vendor/seahorse/lib/seahorse/client/net_http/connection_pool.rb +339 -0
  343. data/vendor/seahorse/lib/seahorse/client/net_http/handler.rb +109 -0
  344. data/vendor/seahorse/lib/seahorse/client/param_converter.rb +202 -0
  345. data/vendor/seahorse/lib/seahorse/client/param_validator.rb +139 -0
  346. data/vendor/seahorse/lib/seahorse/client/plugin.rb +80 -0
  347. data/vendor/seahorse/lib/seahorse/client/plugin_list.rb +142 -0
  348. data/vendor/seahorse/lib/seahorse/client/plugins/api.rb +11 -0
  349. data/vendor/seahorse/lib/seahorse/client/plugins/content_length.rb +22 -0
  350. data/vendor/seahorse/lib/seahorse/client/plugins/endpoint.rb +36 -0
  351. data/vendor/seahorse/lib/seahorse/client/plugins/json_simple.rb +34 -0
  352. data/vendor/seahorse/lib/seahorse/client/plugins/logging.rb +37 -0
  353. data/vendor/seahorse/lib/seahorse/client/plugins/net_http.rb +26 -0
  354. data/vendor/seahorse/lib/seahorse/client/plugins/operation_methods.rb +48 -0
  355. data/vendor/seahorse/lib/seahorse/client/plugins/param_conversion.rb +29 -0
  356. data/vendor/seahorse/lib/seahorse/client/plugins/param_validation.rb +30 -0
  357. data/vendor/seahorse/lib/seahorse/client/plugins/raise_response_errors.rb +29 -0
  358. data/vendor/seahorse/lib/seahorse/client/plugins/restful_bindings.rb +205 -0
  359. data/vendor/seahorse/lib/seahorse/client/request.rb +62 -0
  360. data/vendor/seahorse/lib/seahorse/client/request_context.rb +68 -0
  361. data/vendor/seahorse/lib/seahorse/client/response.rb +106 -0
  362. data/vendor/seahorse/lib/seahorse/client/xml/builder.rb +92 -0
  363. data/vendor/seahorse/lib/seahorse/model.rb +38 -0
  364. data/vendor/seahorse/lib/seahorse/model/api.rb +39 -0
  365. data/vendor/seahorse/lib/seahorse/model/node.rb +102 -0
  366. data/vendor/seahorse/lib/seahorse/model/operation.rb +32 -0
  367. data/vendor/seahorse/lib/seahorse/model/operation_input.rb +30 -0
  368. data/vendor/seahorse/lib/seahorse/model/operations.rb +59 -0
  369. data/vendor/seahorse/lib/seahorse/model/property.rb +141 -0
  370. data/vendor/seahorse/lib/seahorse/model/shapes/shape.rb +229 -0
  371. data/vendor/seahorse/lib/seahorse/model/types.rb +8 -0
  372. data/vendor/seahorse/lib/seahorse/version.rb +3 -0
  373. data/vendor/seahorse/seahorse.gemspec +20 -0
  374. data/vendor/seahorse/spec/fixtures/plugin.rb +4 -0
  375. data/vendor/seahorse/spec/seahorse/client/base_spec.rb +308 -0
  376. data/vendor/seahorse/spec/seahorse/client/configuration_spec.rb +118 -0
  377. data/vendor/seahorse/spec/seahorse/client/handler_builder_spec.rb +159 -0
  378. data/vendor/seahorse/spec/seahorse/client/handler_list_spec.rb +243 -0
  379. data/vendor/seahorse/spec/seahorse/client/handler_spec.rb +40 -0
  380. data/vendor/seahorse/spec/seahorse/client/http/endpoint_spec.rb +168 -0
  381. data/vendor/seahorse/spec/seahorse/client/http/headers_spec.rb +213 -0
  382. data/vendor/seahorse/spec/seahorse/client/http/plain_string_io_spec.rb +23 -0
  383. data/vendor/seahorse/spec/seahorse/client/http/request_spec.rb +142 -0
  384. data/vendor/seahorse/spec/seahorse/client/http/response_spec.rb +77 -0
  385. data/vendor/seahorse/spec/seahorse/client/logging/formatter_spec.rb +197 -0
  386. data/vendor/seahorse/spec/seahorse/client/logging/handler_spec.rb +63 -0
  387. data/vendor/seahorse/spec/seahorse/client/net_http/connection_pool_spec.rb +10 -0
  388. data/vendor/seahorse/spec/seahorse/client/net_http/handler_spec.rb +232 -0
  389. data/vendor/seahorse/spec/seahorse/client/param_converter_spec.rb +318 -0
  390. data/vendor/seahorse/spec/seahorse/client/param_validator_spec.rb +271 -0
  391. data/vendor/seahorse/spec/seahorse/client/plugin_list_spec.rb +166 -0
  392. data/vendor/seahorse/spec/seahorse/client/plugin_spec.rb +118 -0
  393. data/vendor/seahorse/spec/seahorse/client/plugins/content_length_spec.rb +19 -0
  394. data/vendor/seahorse/spec/seahorse/client/plugins/endpoint_spec.rb +43 -0
  395. data/vendor/seahorse/spec/seahorse/client/plugins/logging_spec.rb +46 -0
  396. data/vendor/seahorse/spec/seahorse/client/plugins/net_http_spec.rb +71 -0
  397. data/vendor/seahorse/spec/seahorse/client/plugins/operation_methods_spec.rb +74 -0
  398. data/vendor/seahorse/spec/seahorse/client/plugins/restful_bindings/uri_path_builder_spec.rb +91 -0
  399. data/vendor/seahorse/spec/seahorse/client/request_context_spec.rb +105 -0
  400. data/vendor/seahorse/spec/seahorse/client/request_spec.rb +102 -0
  401. data/vendor/seahorse/spec/seahorse/client/response_spec.rb +171 -0
  402. data/vendor/seahorse/spec/seahorse/client/xml/builder/xml_doc_spec.rb +142 -0
  403. data/vendor/seahorse/spec/seahorse/client/xml/builder_spec.rb +10 -0
  404. data/vendor/seahorse/spec/seahorse/client_spec.rb +13 -0
  405. data/vendor/seahorse/spec/seahorse/model/api_spec.rb +72 -0
  406. data/vendor/seahorse/spec/seahorse/model/node_spec.rb +114 -0
  407. data/vendor/seahorse/spec/seahorse/model/operation_input_spec.rb +53 -0
  408. data/vendor/seahorse/spec/seahorse/model/operation_spec.rb +48 -0
  409. data/vendor/seahorse/spec/seahorse/model/operations_spec.rb +64 -0
  410. data/vendor/seahorse/spec/seahorse/model/property_spec.rb +136 -0
  411. data/vendor/seahorse/spec/seahorse/model/shapes/shape_spec.rb +105 -0
  412. data/vendor/seahorse/spec/seahorse/version_spec.rb +11 -0
  413. data/vendor/seahorse/spec/spec_helper.rb +34 -0
  414. data/vendor/seahorse/tasks/ca_bundle.rake +23 -0
  415. data/vendor/seahorse/tasks/docs.rake +11 -0
  416. data/vendor/seahorse/tasks/test.rake +26 -0
  417. metadata +614 -0
@@ -0,0 +1,35 @@
1
+ module Seahorse
2
+ module Client
3
+ module Logging
4
+ class Handler < Client::Handler
5
+
6
+ # @param [RequestContext] context
7
+ # @return [Response]
8
+ def call(context)
9
+ context[:logging_started_at] = Time.now
10
+ @handler.call(context).on_complete do |response|
11
+ context[:logging_completed_at] = Time.now
12
+ log(context.config, response)
13
+ end
14
+ end
15
+
16
+ private
17
+
18
+ # @param [Configuration] config
19
+ # @param [Response] response
20
+ # @return [void]
21
+ def log(config, response)
22
+ config.logger.send(config.log_level, format(config, response))
23
+ end
24
+
25
+ # @param [Configuration] config
26
+ # @param [Response] response
27
+ # @return [String]
28
+ def format(config, response)
29
+ config.log_formatter.format(response)
30
+ end
31
+
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,339 @@
1
+ require 'net/http'
2
+ require 'net/https'
3
+ require 'delegate'
4
+ require 'thread'
5
+ require 'logger'
6
+
7
+ module Seahorse
8
+ module Client
9
+ module NetHttp
10
+
11
+ # @attr_reader [URI::HTTP,nil] http_proxy Returns the configured proxy.
12
+ # @attr_reader [Integer,Float] http_open_timeout
13
+ # @attr_reader [Integer,Float] http_read_timeout
14
+ # @attr_reader [Integer,Float] http_idle_timeout
15
+ # @attr_reader [Float,nil] http_continue_timeout
16
+ # @attr_reader [Boolean] http_wire_trace
17
+ # @attr_reader [Logger,nil] logger
18
+ # @attr_reader [Boolean] ssl_verify_peer
19
+ # @attr_reader [String,nil] ssl_ca_bundle
20
+ # @attr_reader [String,nil] ssl_ca_directory
21
+ class ConnectionPool
22
+
23
+ @pools_mutex = Mutex.new
24
+ @pools = {}
25
+
26
+ DEFAULT_CERT_BUNDLE = File.expand_path(File.join(
27
+ File.dirname(__FILE__), '..', '..', '..', '..', 'ca-bundle.crt'))
28
+
29
+ OPTIONS = {
30
+ http_proxy: nil,
31
+ http_open_timeout: 15,
32
+ http_read_timeout: 60,
33
+ http_idle_timeout: 5,
34
+ http_continue_timeout: 1,
35
+ http_wire_trace: false,
36
+ logger: nil,
37
+ ssl_verify_peer: true,
38
+ ssl_ca_bundle: DEFAULT_CERT_BUNDLE,
39
+ ssl_ca_directory: nil,
40
+ }
41
+
42
+ # @api private
43
+ def initialize(options = {})
44
+ OPTIONS.each_pair do |opt_name, default_value|
45
+ value = options[opt_name].nil? ? default_value : options[opt_name]
46
+ instance_variable_set("@#{opt_name}", value)
47
+ end
48
+ @pool_mutex = Mutex.new
49
+ @pool = Hash.new do |pool, endpoint|
50
+ pool[endpoint] = []
51
+ pool[endpoint]
52
+ end
53
+ end
54
+
55
+ OPTIONS.keys.each do |attr_name|
56
+ attr_reader(attr_name)
57
+ end
58
+
59
+ alias http_wire_trace? http_wire_trace
60
+ alias ssl_verify_peer? ssl_verify_peer
61
+
62
+ # Makes an HTTP request, yielding a Net::HTTPResponse object.
63
+ #
64
+ # pool.request('http://domain', Net::HTTP::Get.new('/')) do |resp|
65
+ # puts resp.code # status code
66
+ # puts resp.to_h.inspect # dump the headers
67
+ # puts resp.body
68
+ # end
69
+ #
70
+ # @param [String] endpoint The HTTP(S) endpoint to
71
+ # connect to (e.g. 'https://domain.com').
72
+ #
73
+ # @param [Net::HTTPRequest] request The request to make. This can be
74
+ # any request object from Net::HTTP (e.g. Net::HTTP::Get,
75
+ # Net::HTTP::POST, etc).
76
+ #
77
+ # @yieldparam [Net::HTTPResponse] net_http_response
78
+ #
79
+ # @return (see #session_for)
80
+ def request(endpoint, request, &block)
81
+ session_for(endpoint) do |http|
82
+ yield(http.request(request))
83
+ end
84
+ end
85
+
86
+ # @param [URI::HTTP, URI::HTTPS, String] endpoint The HTTP(S) endpoint
87
+ # to connect to (e.g. 'https://domain.com').
88
+ #
89
+ # @yieldparam [Net::HTTPSession] session
90
+ #
91
+ # @return [nil]
92
+ def session_for(endpoint, &block)
93
+ endpoint = endpoint.to_s
94
+ session = nil
95
+
96
+ # attempt to recycle an already open session
97
+ @pool_mutex.synchronize do
98
+ _clean
99
+ session = @pool[endpoint].shift
100
+ end
101
+
102
+ begin
103
+ session ||= start_session(endpoint)
104
+ session.read_timeout = http_read_timeout
105
+ session.continue_timeout = http_continue_timeout if
106
+ session.respond_to?(:continue_timeout=)
107
+ yield(session)
108
+ rescue Exception => error
109
+ session.finish if session
110
+ raise error
111
+ else
112
+ # No error raised? Good, check the session into the pool.
113
+ @pool_mutex.synchronize { @pool[endpoint] << session }
114
+ end
115
+ nil
116
+ end
117
+
118
+ # @return [Integer] Returns the count of sessions currently in the
119
+ # pool, not counting those currently in use.
120
+ def size
121
+ @pool_mutex.synchronize do
122
+ size = 0
123
+ @pool.each_pair do |endpoint,sessions|
124
+ size += sessions.size
125
+ end
126
+ size
127
+ end
128
+ end
129
+
130
+ # Removes stale http sessions from the pool (that have exceeded
131
+ # the idle timeout).
132
+ # @return [nil]
133
+ def clean!
134
+ @pool_mutex.synchronize { _clean }
135
+ nil
136
+ end
137
+
138
+ # Closes and removes removes all sessions from the pool.
139
+ # If empty! is called while there are outstanding requests they may
140
+ # get checked back into the pool, leaving the pool in a non-empty
141
+ # state.
142
+ # @return [nil]
143
+ def empty!
144
+ @pool_mutex.synchronize do
145
+ @pool.each_pair do |endpoint,sessions|
146
+ sessions.each(&:finish)
147
+ end
148
+ @pool.clear
149
+ end
150
+ nil
151
+ end
152
+
153
+ class << self
154
+
155
+ # Returns a connection pool constructed from the given options.
156
+ # Calling this method twice with the same options will return
157
+ # the same pool.
158
+ #
159
+ # @option options [URI::HTTP,String] :http_proxy A proxy to send
160
+ # requests through. Formatted like 'http://proxy.com:123'.
161
+ #
162
+ # @option options [Float] :http_open_timeout (15) The number of
163
+ # seconds to wait when opening a HTTP session before rasing a
164
+ # `Timeout::Error`.
165
+ #
166
+ # @option options [Integer] :http_read_timeout (60) The default
167
+ # number of seconds to wait for response data. This value can
168
+ # safely be set
169
+ # per-request on the session yeidled by {#session_for}.
170
+ #
171
+ # @option options [Float] :http_idle_timeout (5) The number of
172
+ # seconds a connection is allowed to sit idble before it is
173
+ # considered stale. Stale connections are closed and removed
174
+ # from the pool before making a request.
175
+ #
176
+ # @option options [Float] :http_continue_timeout (1) The number of
177
+ # seconds to wait for a 100-continue response before sending the
178
+ # request body. This option has no effect unless the request has
179
+ # "Expect" header set to "100-continue". Defaults to `nil` which
180
+ # disables this behaviour. This value can safely be set per
181
+ # request on the session yeidled by {#session_for}.
182
+ #
183
+ # @option options [Boolean] :http_wire_trace (false) When `true`,
184
+ # HTTP debug output will be sent to the `:logger`.
185
+ #
186
+ # @option options [Logger] :logger Where debug output is sent.
187
+ # Defaults to `nil` when `:http_wire_trace` is `false`.
188
+ # Defaults to `Logger.new($stdout)` when `:http_wire_trace` is
189
+ # `true`.
190
+ #
191
+ # @option options [Boolean] :ssl_verify_peer (true) When `true`,
192
+ # SSL peer certificates are verified when establishing a
193
+ # connection.
194
+ #
195
+ # @option options [String] :ssl_ca_bundle Full path to the SSL
196
+ # certificate authority bundle file that should be used when
197
+ # verifying peer certificates. If you do not pass
198
+ # `:ssl_ca_bundle` or `:ssl_ca_directory` the the system default
199
+ # will be used if available.
200
+ #
201
+ # @option options [String] :ssl_ca_directory Full path of the
202
+ # directory that contains the unbundled SSL certificate
203
+ # authority files for verifying peer certificates. If you do
204
+ # not pass `:ssl_ca_bundle` or `:ssl_ca_directory` the the
205
+ # system default will be used if available.
206
+ #
207
+ # @return [ConnectionPool]
208
+ def for options = {}
209
+ options = pool_options(options)
210
+ @pools_mutex.synchronize do
211
+ @pools[options] ||= new(options)
212
+ end
213
+ end
214
+
215
+ # @return [Array<ConnectionPool>] Returns a list of of the
216
+ # constructed connection pools.
217
+ def pools
218
+ @pools.values
219
+ end
220
+
221
+ private
222
+
223
+ # Filters an option hash, merging in default values.
224
+ # @return [Hash]
225
+ def pool_options options
226
+ wire_trace = !!options[:http_wire_trace]
227
+ logger = options[:logger] || Logger.new($stdout) if wire_trace
228
+ verify_peer = options.key?(:ssl_verify_peer) ?
229
+ !!options[:ssl_verify_peer] : true
230
+ {
231
+ :http_proxy => URI.parse(options[:http_proxy].to_s),
232
+ :http_continue_timeout => options[:http_continue_timeout],
233
+ :http_open_timeout => options[:http_open_timeout] || 15,
234
+ :http_idle_timeout => options[:http_idle_timeout] || 5,
235
+ :http_read_timeout => options[:http_read_timeout] || 60,
236
+ :http_wire_trace => wire_trace,
237
+ :logger => logger,
238
+ :ssl_verify_peer => verify_peer,
239
+ :ssl_ca_bundle => options[:ssl_ca_bundle],
240
+ :ssl_ca_directory => options[:ssl_ca_directory],
241
+ }
242
+ end
243
+
244
+ end
245
+
246
+ private
247
+
248
+ # Starts and returns a new HTTP(S) session.
249
+ # @param [String] endpoint
250
+ # @return [Net::HTTPSession]
251
+ def start_session endpoint
252
+
253
+ endpoint = URI.parse(endpoint)
254
+
255
+ args = []
256
+ args << endpoint.host
257
+ args << endpoint.port
258
+ args << http_proxy.host
259
+ args << http_proxy.port
260
+ args << http_proxy.user
261
+ args << http_proxy.password
262
+
263
+ http = ExtendedSession.new(Net::HTTP.new(*args.compact))
264
+ http.set_debug_output(logger) if http_wire_trace?
265
+ http.open_timeout = http_open_timeout
266
+
267
+ if endpoint.scheme == 'https'
268
+ http.use_ssl = true
269
+ if ssl_verify_peer?
270
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
271
+ http.ca_file = ssl_ca_bundle if ssl_ca_bundle
272
+ http.ca_path = ssl_ca_directory if ssl_ca_directory
273
+ else
274
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
275
+ end
276
+ else
277
+ http.use_ssl = false
278
+ end
279
+
280
+ http.start
281
+ http
282
+ end
283
+
284
+ # Removes stale sessions from the pool. This method *must* be called
285
+ # @note **Must** be called behind a `@pool_mutex` synchronize block.
286
+ def _clean
287
+ now = Time.now
288
+ @pool.each_pair do |endpoint,sessions|
289
+ sessions.delete_if do |session|
290
+ if
291
+ session.last_used.nil? or
292
+ now - session.last_used > http_idle_timeout
293
+ then
294
+ session.finish
295
+ true
296
+ end
297
+ end
298
+ end
299
+ end
300
+
301
+ # Helper methods extended onto Net::HTTPSession objects opend by the
302
+ # connection pool.
303
+ # @api private
304
+ class ExtendedSession < Delegator
305
+
306
+ def initialize(http)
307
+ super(http)
308
+ @http = http
309
+ end
310
+
311
+ # @return [Time,nil]
312
+ attr_reader :last_used
313
+
314
+ def __getobj__
315
+ @http
316
+ end
317
+
318
+ def __setobj__(obj)
319
+ @http = obj
320
+ end
321
+
322
+ # Sends the request and tracks that this session has been used.
323
+ def request(*args, &block)
324
+ @last_used = Time.now
325
+ @http.request(*args, &block)
326
+ end
327
+
328
+ # Attempts to close/finish the session without raising an error.
329
+ def finish
330
+ @http.finish
331
+ rescue IOError
332
+ nil
333
+ end
334
+
335
+ end
336
+ end
337
+ end
338
+ end
339
+ end
@@ -0,0 +1,109 @@
1
+ module Seahorse
2
+ module Client
3
+ module NetHttp
4
+
5
+ # The default HTTP handler for Seahorse::Client. This is based on
6
+ # the Ruby's `Net::HTTP`.
7
+ class Handler < Client::Handler
8
+
9
+ # Raised when a {Handler} can not construct a `Net::HTTP::Request`
10
+ # from the given http verb.
11
+ class InvalidHttpVerbError < StandardError; end
12
+
13
+ # @param [RequestContext] context
14
+ # @return [Response]
15
+ def call(context)
16
+ transmit(context.config, context.http_request, context.http_response)
17
+ Response.new(context: context)
18
+ end
19
+
20
+ # @param [Configuration] config
21
+ # @return [ConnectionPool]
22
+ def pool_for(config)
23
+ ConnectionPool.for(pool_options(config))
24
+ end
25
+
26
+ private
27
+
28
+ # @param [Configuration] config
29
+ # @param [Http::Request] request
30
+ # @param [Http::Response] response
31
+ # @return [void]
32
+ def transmit(config, request, response)
33
+ pool_for(config).session_for(request.endpoint) do |http|
34
+
35
+ http.read_timeout = config.http_read_timeout
36
+ http.request(net_http_request(request)) do |resp|
37
+
38
+ # extract HTTP status code and headers
39
+ response.status_code = resp.code.to_i
40
+ response.headers.update(response_headers(resp))
41
+
42
+ # read the body in chunks
43
+ resp.read_body do |chunk|
44
+ response.body.write(chunk)
45
+ end
46
+
47
+ response.body.rewind
48
+
49
+ end
50
+ end
51
+ end
52
+
53
+ # Extracts the {ConnectionPool} configuration options.
54
+ # @param [Configuration] config
55
+ # @return [Hash]
56
+ def pool_options(config)
57
+ ConnectionPool::OPTIONS.keys.inject({}) do |opts,opt|
58
+ opts[opt] = config.send(opt)
59
+ opts
60
+ end
61
+ end
62
+
63
+ # Constructs and returns a Net::HTTP::Request object from
64
+ # a {Http::Request}.
65
+ # @param [Http::Request] request
66
+ # @return [Net::HTTP::Request]
67
+ def net_http_request(request)
68
+ request_class = net_http_request_class(request)
69
+ req = request_class.new(request.path, headers(request))
70
+ req.body_stream = request.body
71
+ req
72
+ end
73
+
74
+ # @param [Http::Request] request
75
+ # @raise [InvalidHttpVerbError]
76
+ # @return Returns a base `Net::HTTP::Request` class, e.g.,
77
+ # `Net::HTTP::Get`, `Net::HTTP::Post`, etc.
78
+ def net_http_request_class(request)
79
+ Net::HTTP.const_get(request.http_method.capitalize)
80
+ rescue NameError
81
+ msg = "`#{request.http_method}` is not a valid http verb"
82
+ raise InvalidHttpVerbError, msg
83
+ end
84
+
85
+ # @param [Http::Request] request
86
+ # @return [Hash] Returns a vanilla hash of headers to send with the
87
+ # HTTP request.
88
+ def headers(request)
89
+ # setting these to stop net/http from providing defaults
90
+ headers = { 'content-type' => '', 'accept-encoding' => '' }
91
+ request.headers.each_pair do |key, value|
92
+ headers[key] = value
93
+ end
94
+ headers
95
+ end
96
+
97
+ # @param [Net::HTTP::Response] response
98
+ # @return [Hash<String, String>]
99
+ def response_headers(response)
100
+ response.to_hash.inject({}) do |headers, (k, v)|
101
+ headers[k] = v.first
102
+ headers
103
+ end
104
+ end
105
+
106
+ end
107
+ end
108
+ end
109
+ end