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,11 @@
1
+ module Seahorse
2
+ module Client
3
+ module Plugins
4
+ class Api < Plugin
5
+
6
+ option(:api)
7
+
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,22 @@
1
+ module Seahorse
2
+ module Client
3
+ module Plugins
4
+ class ContentLength < Plugin
5
+
6
+ # @api private
7
+ class Handler < Client::Handler
8
+
9
+ def call(context)
10
+ length = context.http_request.body.size
11
+ context.http_request.headers['Content-Length'] = length
12
+ @handler.call(context)
13
+ end
14
+
15
+ end
16
+
17
+ handler(Handler, step: :sign, proiority: 0)
18
+
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,36 @@
1
+ module Seahorse
2
+ module Client
3
+ module Plugins
4
+
5
+ # @seahorse.client.option [String] :endpoint
6
+ # The HTTP or HTTPS endpoint to send requests to.
7
+ # For example:
8
+ #
9
+ # 'example.com'
10
+ # 'http://example.com'
11
+ # 'https://example.com'
12
+ # 'http://example.com:123'
13
+ #
14
+ # This must include the host. It may also include the scheme and
15
+ # port. When the scheme is not set it defaults to `https`
16
+ # or `http` based on the `:ssl_default` option.
17
+ #
18
+ # @seahorse.client.option [Boolean] :ssl_default (true)
19
+ # When `true`, endpoints without a scheme are prefixed by `http://`.
20
+ # When `false`, endpoints without a scheme are prefixed by `http://`.
21
+ #
22
+ class Endpoint < Plugin
23
+
24
+ option(:endpoint) { |config| config.api.endpoint }
25
+
26
+ option(:ssl_default, true)
27
+
28
+ handle_request(:EndpointHandler, priority: 90) do |context|
29
+ context.http_request.endpoint = Http::Endpoint.new(
30
+ context.config.endpoint, ssl_default: context.config.ssl_default)
31
+ end
32
+
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,34 @@
1
+ require 'multi_json'
2
+
3
+ module Seahorse
4
+ module Client
5
+ module Plugins
6
+
7
+ # This plugin performs two trivial translations:
8
+ #
9
+ # * The request parameters are serialized as JSON for the request body
10
+ # * The response body is deserialized as JSON for the response data
11
+ #
12
+ # No attempt is made to extract errors from the HTTP response body.
13
+ # Parsing the response only happens for a successful response.
14
+ #
15
+ class JsonSimple < Plugin
16
+
17
+ # @api private
18
+ class Handler < Client::Handler
19
+
20
+ def call(context)
21
+ context.http_request.body = MultiJson.dump(context.params)
22
+ @handler.call(context).on_success do |resp|
23
+ resp.data = MultiJson.load(resp.http_response.body_contents)
24
+ end
25
+ end
26
+
27
+ end
28
+
29
+ handler(Handler)
30
+
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,37 @@
1
+ module Seahorse
2
+ module Client
3
+ module Plugins
4
+
5
+ # Enables logging for all requests. This plugin allows you to configure
6
+ # your logging device, the log format and the level to log messages at.
7
+ #
8
+ # @see Logging::Formatter
9
+ #
10
+ # @seahorse.client.option [Logger] :logger (nil) The Logger instance
11
+ # to send log messages to. If this option is not set, logging
12
+ # will be disabled.
13
+ #
14
+ # @seahorse.client.option [Symbol] :log_level (:info) The log level
15
+ # to send messages to the logger at.
16
+ #
17
+ # @seahorse.client.option [Logging::LogFormatter] :log_formatter The log
18
+ # formatter. Defaults to {Seahorse::Client::Logging::Formatter.default}.
19
+ #
20
+ class Logging < Plugin
21
+
22
+ option(:logger, nil)
23
+
24
+ option(:log_level, :info)
25
+
26
+ option(:log_formatter, Client::Logging::Formatter.default)
27
+
28
+ def add_handlers(handlers, config)
29
+ if config.logger
30
+ handlers.add(Client::Logging::Handler, step: :validate)
31
+ end
32
+ end
33
+
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,26 @@
1
+ module Seahorse
2
+ module Client
3
+ module Plugins
4
+
5
+ # @seahorse.client.option [String] :http_proxy
6
+ # @seahorse.client.option [Integer] :http_open_timeout (15)
7
+ # @seahorse.client.option [Integer] :http_read_timeout (60)
8
+ # @seahorse.client.option [Integer] :http_idle_timeout (5)
9
+ # @seahorse.client.option [Float] :http_continue_timeout (1)
10
+ # @seahorse.client.option [Boolean] :http_wire_trace (false)
11
+ # @seahorse.client.option [Logger] :logger (nil)
12
+ # @seahorse.client.option [Boolean] :ssl_verify_peer (true)
13
+ # @seahorse.client.option [String] :ssl_ca_bundle
14
+ # @seahorse.client.option [String] :ssl_ca_directory
15
+ class NetHttp < Plugin
16
+
17
+ Client::NetHttp::ConnectionPool::OPTIONS.each_pair do |name, default|
18
+ option(name, default)
19
+ end
20
+
21
+ handler(Client::NetHttp::Handler, step: :send)
22
+
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,48 @@
1
+ module Seahorse
2
+ module Client
3
+ module Plugins
4
+
5
+ # Defines a helper method for each API operation that builds and
6
+ # sends the named request.
7
+ #
8
+ # # Helper Methods
9
+ #
10
+ # This plugin adds a helper method that lists the availalbe API
11
+ # operations.
12
+ #
13
+ # client.operation_names
14
+ # #=> [:api_operation_name1, :api_operation_name2, ...]
15
+ #
16
+ # Additionally, it adds a helper method for each operation. This helper
17
+ # handles building and sending the appropriate {Request}.
18
+ #
19
+ # # without OperationMethods plugin
20
+ # req = client.build_request(:api_operation_name, request_params)
21
+ # resp = req.send_request
22
+ #
23
+ # # using the helper method defined by OperationMethods
24
+ # resp = client.api_operation_name(request_params)
25
+ #
26
+ class OperationMethods < Plugin
27
+
28
+ def after_initialize(client)
29
+ unless client.respond_to?(:operation_names)
30
+ add_operation_helpers(client, client.config.api.operations.keys)
31
+ end
32
+ end
33
+
34
+ def add_operation_helpers(client, operations)
35
+ client.class.send(:define_method, :operation_names) { operations }
36
+ operations.each do |name|
37
+ client.class.send(:define_method, name) do |*args, &block|
38
+ params = args[0] || {}
39
+ send_options = args[1] || {}
40
+ build_request(name, params).send_request(send_options, &block)
41
+ end
42
+ end
43
+ end
44
+
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,29 @@
1
+ module Seahorse
2
+ module Client
3
+ module Plugins
4
+
5
+ # @seahorse.client.option [Boolean] :convert_params (true)
6
+ # When `true`, an attempt is made to coerce request parameters
7
+ # into the required types.
8
+ class ParamConversion < Plugin
9
+
10
+ option(:convert_params, true)
11
+
12
+ def add_handlers(handlers, config)
13
+ handlers.add(Handler, step: :initialize) if config.convert_params
14
+ end
15
+
16
+ class Handler < Client::Handler
17
+
18
+ def call(context)
19
+ context.params = ParamConverter.convert(
20
+ context.operation.input,
21
+ context.params)
22
+ @handler.call(context)
23
+ end
24
+
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,30 @@
1
+ module Seahorse
2
+ module Client
3
+ module Plugins
4
+
5
+ # @seahorse.client.option [Boolean] :validate_params (true)
6
+ # When `true`, request parameters are validated before
7
+ # sending the request.
8
+ class ParamValidation < Plugin
9
+
10
+ option(:validate_params, true)
11
+
12
+ def add_handlers(handlers, config)
13
+ if config.validate_params
14
+ handlers.add(Handler, step: :validate, priority: 50)
15
+ end
16
+ end
17
+
18
+ class Handler < Client::Handler
19
+
20
+ def call(context)
21
+ ParamValidator.validate!(context.operation.input, context.params)
22
+ @handler.call(context)
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,29 @@
1
+ module Seahorse
2
+ module Client
3
+ module Plugins
4
+
5
+ # @seahorse.client.option [Boolean] :raise_response_errors (true)
6
+ # When `true`, response errors are raised.
7
+ class RaiseResponseErrors < Plugin
8
+
9
+ option(:raise_response_errors, true)
10
+
11
+ # @api private
12
+ class Handler < Client::Handler
13
+ def call(context)
14
+ response = @handler.call(context)
15
+ raise response.error if response.error
16
+ response
17
+ end
18
+ end
19
+
20
+ def add_handlers(handlers, config)
21
+ if config.raise_response_errors
22
+ handlers.add(Handler, step: :validate, priority: 95)
23
+ end
24
+ end
25
+
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,205 @@
1
+ require 'cgi'
2
+
3
+ module Seahorse
4
+ module Client
5
+ module Plugins
6
+ class RestfulBindings < Plugin
7
+
8
+ # @api private
9
+ class Handler < Client::Handler
10
+
11
+ def call(context)
12
+ build_request(context)
13
+ @handler.call(context).on_success do |response|
14
+ parse_response(response)
15
+ end
16
+ end
17
+
18
+ private
19
+
20
+ def build_request(context)
21
+ populate_method(context)
22
+ populate_path(context)
23
+ populate_headers(context)
24
+ populate_body(context)
25
+ end
26
+
27
+ def populate_method(context)
28
+ context.http_request.http_method = context.operation.http_method
29
+ end
30
+
31
+ def populate_path(context)
32
+ builder = UriPathBuilder.new(
33
+ context.operation.http_path,
34
+ context.operation.input.uri_members)
35
+ context.http_request.path = builder.path(context.params)
36
+ end
37
+
38
+ def populate_headers(context)
39
+ context.operation.input.header_members.each do |member_name, member|
40
+ value = context.params[member_name]
41
+ unless value.nil?
42
+ build_header(member, context.http_request.headers, value)
43
+ end
44
+ end
45
+ end
46
+
47
+ def populate_body(context)
48
+ input = context.operation.input
49
+ if input.raw_payload?
50
+ payload = context.params[input.payload]
51
+ context.http_request.body = payload unless payload.nil?
52
+ end
53
+ end
54
+
55
+ def build_header(rule, headers, value)
56
+ if map_shape?(rule)
57
+ build_header_map(rule, headers, value)
58
+ else
59
+ headers[rule.serialized_name] = serialize_header_value(rule, value)
60
+ end
61
+ end
62
+
63
+ def build_header_map(shape, headers, hash)
64
+ hash.each_pair do |suffix, value|
65
+ headers["#{shape.serialized_name}#{suffix}"] =
66
+ serialize_header_value(shape.members, value)
67
+ end
68
+ end
69
+
70
+ def serialize_header_value(shape, value)
71
+ case shape
72
+ when Model::Shapes::UnixTimestampShape then value.to_i.to_s
73
+ when Model::Shapes::Rfc822TimestampShape then value.utc.rfc822
74
+ when Model::Shapes::Iso8601TimestampShape then value.utc.iso8601
75
+ else value.to_s
76
+ end
77
+ end
78
+
79
+ def parse_response(response)
80
+ output = response.context.operation.output
81
+ response.data ||= Structure.new(output.members.keys)
82
+ extract_headers(response)
83
+ extract_body(response)
84
+ end
85
+
86
+ def extract_headers(response)
87
+ headers = response.http_response.headers
88
+ rules = response.context.operation.output.header_members
89
+ rules.each do |member_name, member|
90
+ response.data[member_name] = header_value(member, headers)
91
+ end
92
+ end
93
+
94
+ def header_value(shape, headers)
95
+ if map_shape?(shape)
96
+ header_map(shape, headers)
97
+ else
98
+ parse_header_value(shape, headers[shape.serialized_name])
99
+ end
100
+ end
101
+
102
+ def header_map(shape, headers)
103
+ hash = {}
104
+ headers.each do |header, value|
105
+ if match = header.match(/^#{shape.serialized_name}(.+)/)
106
+ hash[match[1]] = parse_header_value(shape.members, value)
107
+ end
108
+ end
109
+ hash
110
+ end
111
+
112
+ def parse_header_value(shape, value)
113
+ if value
114
+ case shape
115
+ when Model::Shapes::UnixTimestampShape then Time.at(value.to_i)
116
+ when Model::Shapes::TimestampShape then Time.parse(value)
117
+ when Model::Shapes::IntegerShape then value.to_i
118
+ when Model::Shapes::FloatShape then value.to_f
119
+ when Model::Shapes::BooleanShape then value == 'true'
120
+ else value
121
+ end
122
+ end
123
+ end
124
+
125
+ def extract_body(response)
126
+ output = response.context.operation.output
127
+ if output.raw_payload?
128
+ response.data[output.payload] = response.http_response.body
129
+ end
130
+ end
131
+
132
+ def map_shape?(shape)
133
+ shape.is_a?(Model::Shapes::MapShape)
134
+ end
135
+
136
+ end
137
+
138
+ handle(Handler, priority: 90)
139
+
140
+ # @api private
141
+ class UriPathBuilder
142
+
143
+ PLACEHOLDER_REGEX = /{\w+?}/
144
+
145
+ # @param [String] path_pattern
146
+ # @param [Hash<Model::Shapes::Shape>] rules
147
+ def initialize(path_pattern, rules)
148
+ @pattern = path_pattern
149
+ @rules = rules
150
+ end
151
+
152
+ # @param [Hash] params
153
+ # @return [String<URI path>]
154
+ def path(params)
155
+ path, querystring = @pattern.split('?')
156
+ path = escape_path_params(path, params)
157
+ if querystring
158
+ querystring = escape_querystring_params(querystring, params)
159
+ path = "#{path}?#{querystring}" unless querystring.empty?
160
+ end
161
+ path
162
+ end
163
+
164
+ private
165
+
166
+ def escape_path_params(path, params)
167
+ path.gsub(PLACEHOLDER_REGEX) do |placeholder|
168
+ param_value = params[param_name(placeholder)]
169
+ path_escape(param_value)
170
+ end
171
+ end
172
+
173
+ def escape_querystring_params(querystring, params)
174
+ parts = []
175
+ querystring.split('&').each do |part|
176
+ if match = part.match(PLACEHOLDER_REGEX)
177
+ placeholder = match[0]
178
+ param_value = params[param_name(placeholder)]
179
+ unless param_value.nil?
180
+ parts << part.sub(placeholder, escape(param_value.to_s))
181
+ end
182
+ else
183
+ parts << part # querystring param has no substitution
184
+ end
185
+ end
186
+ parts.join('&')
187
+ end
188
+
189
+ def param_name(placeholder)
190
+ placeholder[1..-2].to_sym
191
+ end
192
+
193
+ def path_escape(value)
194
+ escape(value).gsub('%2F', '/')
195
+ end
196
+
197
+ def escape(string)
198
+ CGI::escape(string.encode('UTF-8')).gsub('+', '%20').gsub('%7E', '~')
199
+ end
200
+
201
+ end
202
+ end
203
+ end
204
+ end
205
+ end