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,26 @@
1
+ module Seahorse
2
+ module Client
3
+ class Handler
4
+
5
+ # @param [Handler] handler (nil) The next handler in the stack that
6
+ # should be called from within the {#call} method. This value
7
+ # must only be nil for send handlers.
8
+ def initialize(handler = nil)
9
+ @handler = handler
10
+ end
11
+
12
+ # @return [Handler, nil]
13
+ attr_accessor :handler
14
+
15
+ # @param [RequestContext] context
16
+ # @return [Response]
17
+ def call(context)
18
+ @handler.call(context)
19
+ end
20
+
21
+ def inspect
22
+ "#<#{self.class.name||'UnnamedHandler'} @handler=#{@handler.inspect}>"
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,49 @@
1
+ module Seahorse
2
+ module Client
3
+
4
+ # This module provides the ability to add handlers to a class or
5
+ # module. The including class or extending module must respond to
6
+ # `#handlers`, returning a {HandlerList}.
7
+ module HandlerBuilder
8
+
9
+ def handle_request(*args, &block)
10
+ handler(*args) do |context|
11
+ block.call(context)
12
+ @handler.call(context)
13
+ end
14
+ end
15
+
16
+ def handle_response(*args, &block)
17
+ handler(*args) do |context|
18
+ @handler.call(context).on_complete do |response|
19
+ block.call(response)
20
+ end
21
+ end
22
+ end
23
+
24
+ def handle(*args, &block)
25
+ options = args.last.is_a?(Hash) ? args.pop : {}
26
+ handler_class = block ? handler_for(*args, &block) : args.first
27
+ handlers.add(handler_class, options)
28
+ end
29
+ alias handler handle
30
+
31
+ # @api private
32
+ def handler_for(name = nil, &block)
33
+ if name
34
+ const_set(name, new_handler(block))
35
+ else
36
+ new_handler(block)
37
+ end
38
+ end
39
+
40
+ # @api private
41
+ def new_handler(block)
42
+ Class.new(Handler) do
43
+ define_method(:call, &block)
44
+ end
45
+ end
46
+
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,250 @@
1
+ require 'thread'
2
+ require 'set'
3
+
4
+ module Seahorse
5
+ module Client
6
+ class HandlerList
7
+
8
+ class InvalidStepError < ArgumentError
9
+ def initialize(step)
10
+ msg = "invalid :step `%s', must be one of :validate, :build, "
11
+ msg << ":sign or :send"
12
+ super(msg % step.inspect)
13
+ end
14
+ end
15
+
16
+ class InvalidPriorityError < ArgumentError
17
+ def initialize(priority)
18
+ msg = "invalid :priority `%s', must be between 0 and 99"
19
+ super(msg % priority.inspect)
20
+ end
21
+ end
22
+
23
+ # @api private
24
+ Entry = Struct.new(:klass, :options, :operations, :priority, :inserted) do
25
+ def <=>(other)
26
+ if priority == other.priority
27
+ inserted <=> other.inserted
28
+ else
29
+ priority <=> other.priority
30
+ end
31
+ end
32
+ end
33
+
34
+ # @api private
35
+ STEPS = {
36
+ initialize: 300,
37
+ validate: 200,
38
+ build: 100,
39
+ sign: 0,
40
+ }
41
+
42
+ include Enumerable
43
+
44
+ # @api private
45
+ def initialize(options = {})
46
+ @index = options[:index] || 0
47
+ @send = options[:send]
48
+ @handlers = options[:handlers] || []
49
+ @mutex = Mutex.new
50
+ end
51
+
52
+ # Registers a handler. Handlers are used to build a handler stack.
53
+ # Handlers default to the `:build` step with default priority of 50.
54
+ # The step and priority determine where in the stack a handler
55
+ # will be.
56
+ #
57
+ # ## Handler Stack Ordering
58
+ #
59
+ # A handler stack is built from the inside-out. The stack is
60
+ # seeded with the send handler. Handlers are constructed recursively
61
+ # in reverse step and priority order so that the highest priority
62
+ # handler is on the outside.
63
+ #
64
+ # By constructing the stack from the inside-out, this ensures
65
+ # that the validate handlers will be called first and the sign handlers
66
+ # will be called just before the final and only send handler is called.
67
+ #
68
+ # ## Steps
69
+ #
70
+ # Handlers are ordered first by step. These steps represent the
71
+ # life-cycle of a request. Valid steps are:
72
+ #
73
+ # * `:initialize`
74
+ # * `:validate`
75
+ # * `:build`
76
+ # * `:sign`
77
+ # * `:send`
78
+ #
79
+ # Many handlers can be added to the same step, except for `:send`.
80
+ # There can be only one `:send` handler. Adding an additional
81
+ # `:send` handler replaces the previous one.
82
+ #
83
+ # ## Priorities
84
+ #
85
+ # Handlers within a single step are executed in priority order. The
86
+ # higher the priority, the earlier in the stack the handler will
87
+ # be called.
88
+ #
89
+ # * Handler priority is an integer between 0 and 99, inclusively.
90
+ # * Handler priority defaults to 50.
91
+ # * When multiple handlers are added to the same step with the same
92
+ # priority, the last one added will have the highest priority and
93
+ # the first one added will have the lowest priority.
94
+ #
95
+ # @param [Class<Handler>] handler_class This should be a subclass
96
+ # of {Handler} or any class that construct an object that
97
+ # responds to `#call`.
98
+ #
99
+ # @option options [Symbol] :step (:build) The request life-cycle
100
+ # step the handler should run in. Defaults to `:build`. The
101
+ # list of possible steps, in high-to-low priority order are:
102
+ #
103
+ # * `:validate`
104
+ # * `:build`
105
+ # * `:sign`
106
+ # * `:send`
107
+ #
108
+ # There can only be one send handler. Registering an additional
109
+ # `:send` handler replaces the previous one.
110
+ #
111
+ # @option options [Integer] :priority (50) The priority of this
112
+ # handler within a step. The priority must be between 0 and 99
113
+ # inclusively. It defaults to 50. When two handlers have the
114
+ # same `:step` and `:priority`, the handler registered last has
115
+ # the highest priority.
116
+ #
117
+ # @option options [Array<Symbol,String>] :operations A list of
118
+ # operations names the handler should be applied to. When
119
+ # `:operations` is omitted, the handler is applied to all
120
+ # operations for the client.
121
+ #
122
+ # @raise [InvalidStepError]
123
+ # @raise [InvalidPriorityError]
124
+ # @note There can be only one `:send` handler. Adding an additional
125
+ # send handler replaces the previous.
126
+ #
127
+ # @return [Class<Handler>] Returns the handler class that was added.
128
+ #
129
+ def add(handler_class, options = {})
130
+ @mutex.synchronize do
131
+ if options[:step] == :send
132
+ @send = handler_class
133
+ else
134
+ @handlers << Entry.new(
135
+ handler_class,
136
+ options,
137
+ operations(options),
138
+ priority(options),
139
+ next_index,
140
+ )
141
+ end
142
+ end
143
+ handler_class
144
+ end
145
+
146
+ # Copies handlers from the `source_list` onto the current handler list.
147
+ # @param [HandlerList] source_list
148
+ # @return [void]
149
+ def copy_from(source_list)
150
+ @mutex.synchronize do
151
+ send, handlers = source_list.send(:handlers)
152
+ @send = send if send
153
+ handlers.each do |handler|
154
+ new_handler = handler.dup
155
+ new_handler.inserted = next_index
156
+ @handlers << new_handler
157
+ end
158
+ end
159
+ end
160
+
161
+ # Returns a handler list for the given operation. The returned
162
+ # will have the operation specific handlers merged with the common
163
+ # handlers.
164
+ # @param [String] operation The name of an operation.
165
+ # @return [HandlerList]
166
+ def for(operation)
167
+ @mutex.synchronize do
168
+ HandlerList.new(
169
+ index: @index,
170
+ send: @send,
171
+ handlers: filter(operation.to_s),
172
+ )
173
+ end
174
+ end
175
+
176
+ # Yields the handlers in stack order, which is reverse priority.
177
+ def each(&block)
178
+ @mutex.synchronize do
179
+ yield(@send) if @send
180
+ @handlers.sort.each do |handler|
181
+ yield(handler.klass) if handler.operations.nil?
182
+ end
183
+ end
184
+ end
185
+
186
+ # Constructs the handlers recursively, building a handler stack.
187
+ # The `:send` handler will be at the top of the stack and the
188
+ # `:validate` handlers will be at the bottom.
189
+ # @return [Handler]
190
+ def to_stack
191
+ inject(nil) do |stack, handler|
192
+ if handler.is_a?(Class)
193
+ handler = handler.new(stack)
194
+ else
195
+ handler.handler = stack
196
+ handler
197
+ end
198
+ end
199
+ end
200
+
201
+ private
202
+
203
+ def operations(options)
204
+ options[:operations] ? Set.new(options[:operations].map(&:to_s)) : nil
205
+ end
206
+
207
+ def filter(operation)
208
+ filtered = []
209
+ @handlers.each do |handler|
210
+ if handler.operations.nil?
211
+ filtered << handler
212
+ elsif handler.operations.include?(operation)
213
+ handler = handler.dup
214
+ handler.operations = nil
215
+ filtered << handler
216
+ end
217
+ end
218
+ filtered
219
+ end
220
+
221
+ def next_index
222
+ @index += 1
223
+ end
224
+
225
+ # @return [Integer]
226
+ def priority(options)
227
+ step_value(options) + priority_value(options)
228
+ end
229
+
230
+ # @return [Integer]
231
+ def step_value(options)
232
+ step = options[:step] || :build
233
+ raise InvalidStepError, step unless STEPS.key?(step)
234
+ STEPS[step]
235
+ end
236
+
237
+ # @return [Integer]
238
+ def priority_value(options)
239
+ priority = options[:priority] || 50
240
+ raise InvalidPriorityError, priority unless (0..99).include?(priority)
241
+ priority
242
+ end
243
+
244
+ def handlers
245
+ [@send, @handlers]
246
+ end
247
+
248
+ end
249
+ end
250
+ end
@@ -0,0 +1,95 @@
1
+ require 'uri'
2
+
3
+ module Seahorse
4
+ module Client
5
+ module Http
6
+
7
+ # # Constructing an Endpoint
8
+ #
9
+ # You can construct an endpoint from a string like so:
10
+ #
11
+ # puts Endpoint.new('http://foo.com:123')
12
+ # #=> 'http://foo.com'
13
+ #
14
+ # If you omit the protocol, it will default to a HTTPS endpoint:
15
+ #
16
+ # puts Endpoint.new('foo.com')
17
+ # #=> 'https://foo.com'
18
+ #
19
+ # You can default to a HTTP endpoint by passing `:ssl_default` as `false`:
20
+ #
21
+ # puts Endpoint.new('foo.com', ssl_default: false)
22
+ # #=> 'http://foo.com'
23
+ #
24
+ class Endpoint
25
+
26
+ # @param [Endpoint, String] endpoint
27
+ # @option options [Boolean] :ssl_default (true)
28
+ def initialize(endpoint, options = {})
29
+ endpoint = endpoint.to_s
30
+ unless endpoint =~ /^http/
31
+ endpoint = apply_scheme(endpoint, options)
32
+ end
33
+ URI.parse(endpoint).tap do |uri|
34
+ @scheme = uri.scheme
35
+ @host = uri.host
36
+ @port = uri.port
37
+ @user = uri.user
38
+ @password = uri.password
39
+ end
40
+ end
41
+
42
+ # @return [String] Returns the endpoint scheme ('https' or 'http').
43
+ attr_accessor :scheme
44
+
45
+ # @return [String] Returns the endpoint host (e.g. 'foo.com')
46
+ attr_accessor :host
47
+
48
+ # @return [Integer] Returns the endpoint port number (e.g. 443).
49
+ attr_accessor :port
50
+
51
+ # @return [String, nil]
52
+ attr_accessor :user
53
+
54
+ # @return [String, nil]
55
+ attr_accessor :password
56
+
57
+ # @return [Boolean]
58
+ def http?
59
+ @scheme == 'http'
60
+ end
61
+
62
+ # @return [Boolean]
63
+ def https?
64
+ @scheme == 'https'
65
+ end
66
+
67
+ # @return [String]
68
+ # @api private
69
+ def inspect
70
+ URI.parse("#{@scheme}://#{userpass}#{@host}:#{@port}").to_s
71
+ end
72
+ alias to_str inspect
73
+ alias to_s inspect
74
+
75
+ # @return [Boolean]
76
+ # @api private
77
+ def eq(other)
78
+ to_s == other.to_s
79
+ end
80
+ alias == eq
81
+
82
+ private
83
+
84
+ def apply_scheme(endpoint, options)
85
+ "http#{options.fetch(:ssl_default, true) ? 's' : ''}://#{endpoint}"
86
+ end
87
+
88
+ def userpass
89
+ [@user, @password].compact.join(':') + '@' if @user
90
+ end
91
+
92
+ end
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,94 @@
1
+ module Seahorse
2
+ module Client
3
+ module Http
4
+ class Headers
5
+
6
+ include Enumerable
7
+
8
+ # @api private
9
+ def initialize(headers = {})
10
+ @data = {}
11
+ headers.each_pair do |key, value|
12
+ self[key] = value
13
+ end
14
+ end
15
+
16
+ # @param [String] key
17
+ # @return [String]
18
+ def [](key)
19
+ @data[key.to_s.downcase]
20
+ end
21
+
22
+ # @param [String] key
23
+ # @param [String] value
24
+ def []=(key, value)
25
+ @data[key.to_s.downcase] = value.to_s
26
+ end
27
+
28
+ # @param [Hash] headers
29
+ # @return [Headers]
30
+ def update(headers)
31
+ headers.each_pair do |k, v|
32
+ self[k] = v
33
+ end
34
+ self
35
+ end
36
+
37
+ # @param [String] key
38
+ def delete(key)
39
+ @data.delete(key.to_s.downcase)
40
+ end
41
+
42
+ # @return [Array<String>]
43
+ def keys
44
+ @data.keys
45
+ end
46
+
47
+ # @return [Array<String>]
48
+ def values
49
+ @data.values
50
+ end
51
+
52
+ # @return [Array<String>]
53
+ def values_at(*keys)
54
+ @data.values_at(*keys.map{ |key| key.to_s.downcase })
55
+ end
56
+
57
+ # @yield [key, value]
58
+ # @yieldparam [String] key
59
+ # @yieldparam [String] value
60
+ # @return [nil]
61
+ def each(&block)
62
+ if block_given?
63
+ @data.each_pair do |key, value|
64
+ yield(key, value)
65
+ end
66
+ nil
67
+ else
68
+ @data.enum_for(:each)
69
+ end
70
+ end
71
+ alias each_pair each
72
+
73
+ # @return [Boolean] Returns `true` if the header is set.
74
+ def key?(key)
75
+ @data.key?(key.to_s.downcase)
76
+ end
77
+ alias has_key? key?
78
+ alias include? key?
79
+
80
+ # @return [Hash]
81
+ def to_hash
82
+ @data.dup
83
+ end
84
+ alias to_h to_hash
85
+
86
+ # @api private
87
+ def inspect
88
+ @data.inspect
89
+ end
90
+
91
+ end
92
+ end
93
+ end
94
+ end