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,74 @@
1
+ require 'spec_helper'
2
+
3
+ module Seahorse
4
+ module Client
5
+ module Plugins
6
+ describe OperationMethods do
7
+ let(:client_class) do
8
+ Client::Base.define api: {
9
+ 'plugins' => [DummySendPlugin],
10
+ 'operations' => {
11
+ 'operation1' => { 'name' => 'operation1' },
12
+ 'operation2' => { 'name' => 'operation2' },
13
+ 'operation3' => { 'name' => 'operation3' }
14
+ }
15
+ }
16
+ end
17
+
18
+ let(:client) { client_class.new endpoint: 'localhost' }
19
+
20
+ let(:operations) { %w(operation1 operation2 operation3) }
21
+
22
+ it 'adds methods for every operation in the API model' do
23
+ expect(client.methods).to include(*operations.map(&:to_sym))
24
+ end
25
+
26
+ it 'sets up the method to call build_request and sends it' do
27
+ client_class.remove_plugin(ParamValidation)
28
+ expect(client).to receive(:build_request).
29
+ with('operation1', param: 'X').and_call_original
30
+ expect(client.operation1(param: 'X').data).to eq(result: 'success')
31
+ end
32
+
33
+ it 'passes block arguments to the #send_request method' do
34
+ req = double('request')
35
+ allow(client).to receive(:build_request).and_return(req)
36
+ allow(req).to receive(:send_request).
37
+ and_yield('chunk1').
38
+ and_yield('chunk2').
39
+ and_yield('chunk3')
40
+
41
+ chunks = []
42
+ client.operation1 do |chunk|
43
+ chunks << chunk
44
+ end
45
+ expect(chunks).to eq(%w(chunk1 chunk2 chunk3))
46
+ end
47
+
48
+ it 'can be removed from client' do
49
+ next_client_class = Class.new(client_class)
50
+ next_client_class.remove_plugin OperationMethods
51
+ client = next_client_class.new
52
+
53
+ expect(client.methods).not_to include(*operations.map(&:to_sym))
54
+ expect { client.operation1 }.to raise_error(NoMethodError)
55
+ end
56
+
57
+ it 'defines a helper that returns the list of valid operation names' do
58
+ expect(client.operation_names).to eq(operations)
59
+ end
60
+
61
+ it 'only registers methods on the client class once' do
62
+ expect(client_class).to receive(:define_method).
63
+ with(:operation_names).exactly(1).times
64
+ operations.each do |operation_name|
65
+ expect(client_class).to receive(:define_method).
66
+ with(operation_name).exactly(1).times
67
+ end
68
+ client_class.new(endpoint: 'localhost')
69
+ end
70
+
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,91 @@
1
+ require 'spec_helper'
2
+
3
+ module Seahorse
4
+ module Client
5
+ module Plugins
6
+ class RestfulBindings
7
+ describe UriPathBuilder do
8
+
9
+ let(:rules) {{ 'type' => 'input', 'members' => {} }}
10
+
11
+ def path_for(pattern, params)
12
+ input = Model::Shapes::Shape.from_hash(rules)
13
+ UriPathBuilder.new(pattern, input.uri_members).path(params)
14
+ end
15
+
16
+ it 'does not modify paths without placeholders' do
17
+ path = path_for('/', {})
18
+ expect(path).to eq('/')
19
+ end
20
+
21
+ describe 'path params' do
22
+
23
+ it 'replaces querystring placeholders' do
24
+ rules['members'] = {
25
+ 'foo' => { 'type' => 'string', 'location' => 'uri' }
26
+ }
27
+ path = path_for('/{foo}', foo: 'bar')
28
+ expect(path).to eq('/bar')
29
+ end
30
+
31
+ it 'uri escapes path params' do
32
+ rules['members'] = {
33
+ 'foo' => { 'type' => 'string', 'location' => 'uri' }
34
+ }
35
+ path = path_for('/{foo}', foo: 'foo&bar')
36
+ expect(path).to eq('/foo%26bar')
37
+ end
38
+
39
+ it 'it does not escape forward slashes' do
40
+ rules['members'] = {
41
+ 'foo' => { 'type' => 'string', 'location' => 'uri' }
42
+ }
43
+ path = path_for('/{foo}/yuck', foo: 'foo/bar')
44
+ expect(path).to eq('/foo/bar/yuck')
45
+ end
46
+
47
+ end
48
+
49
+ describe 'querystring params' do
50
+
51
+ it 'replaces querystring placeholders' do
52
+ rules['members'] = {
53
+ 'foo' => { 'type' => 'string', 'location' => 'uri' }
54
+ }
55
+ path = path_for('/path?foo={foo}', { foo: 'bar'})
56
+ expect(path).to eq('/path?foo=bar')
57
+ end
58
+
59
+ it 'removes empty querystring params' do
60
+ rules['members'] = {
61
+ 'mno' => { 'type' => 'string', 'location' => 'uri' },
62
+ 'xyz' => { 'type' => 'string', 'location' => 'uri' }
63
+ }
64
+ path = path_for('/path?Mno={mno}&Xyz={xyz}', { mno: '123' })
65
+ expect(path).to eq('/path?Mno=123')
66
+ end
67
+
68
+ it 'prunes the querystring if empty' do
69
+ rules['members'] = {
70
+ 'mno' => { 'type' => 'string', 'location' => 'uri' },
71
+ 'xyz' => { 'type' => 'string', 'location' => 'uri' }
72
+ }
73
+ path = path_for('/path?Mno={mno}Xyz={xyz}', {})
74
+ expect(path).to eq('/path')
75
+ end
76
+
77
+ it 'uri escapes querystring params' do
78
+ rules['members'] = {
79
+ 'abc' => { 'type' => 'string', 'location' => 'uri' },
80
+ 'xyz' => { 'type' => 'string', 'location' => 'uri' }
81
+ }
82
+ path = path_for('/{abc}?Xyz={xyz}', abc: 'a b', xyz: 'foo&bar')
83
+ expect(path).to eq('/a%20b?Xyz=foo%26bar')
84
+ end
85
+
86
+ end
87
+ end
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,105 @@
1
+ require 'spec_helper'
2
+
3
+ module Seahorse
4
+ module Client
5
+ describe RequestContext do
6
+
7
+ describe '#operation_name' do
8
+
9
+ it 'defaults to nil' do
10
+ expect(RequestContext.new.operation_name).to be(nil)
11
+ end
12
+
13
+ it 'can be set in the constructor' do
14
+ context = RequestContext.new(operation_name: 'operation_name')
15
+ expect(context.operation_name).to eq('operation_name')
16
+ end
17
+
18
+ end
19
+
20
+ describe '#params' do
21
+
22
+ it 'defaults to a empty hash' do
23
+ expect(RequestContext.new.params).to eq({})
24
+ end
25
+
26
+ it 'can be set in the constructor' do
27
+ params = Object.new
28
+ expect(RequestContext.new(params: params).params).to be(params)
29
+ end
30
+
31
+ end
32
+
33
+ describe '#config' do
34
+
35
+ it 'defaults to nil' do
36
+ expect(RequestContext.new.config).to be(nil)
37
+ end
38
+
39
+ it 'can be set in the constructor' do
40
+ config = Object.new
41
+ expect(RequestContext.new(config: config).config).to be(config)
42
+ end
43
+
44
+ end
45
+
46
+ describe '#retries' do
47
+
48
+ it 'defaults to 0' do
49
+ expect(RequestContext.new.retries).to eq(0)
50
+ end
51
+
52
+ it 'can be incremented' do
53
+ context = RequestContext.new
54
+ context.retries += 1
55
+ context.retries += 1
56
+ expect(context.retries).to eq(2)
57
+ end
58
+
59
+ end
60
+
61
+ describe '#http_request' do
62
+
63
+ it 'defaults to a Http::Request object' do
64
+ expect(RequestContext.new.http_request).to be_kind_of(Http::Request)
65
+ end
66
+
67
+ it 'can be set in the constructor' do
68
+ http_req = Object.new
69
+ context = RequestContext.new(http_request: http_req)
70
+ expect(context.http_request).to be(http_req)
71
+ end
72
+
73
+ end
74
+
75
+ describe '#http_response' do
76
+
77
+ it 'defaults to a Http::Response object' do
78
+ expect(RequestContext.new.http_response).to be_kind_of(Http::Response)
79
+ end
80
+
81
+ it 'can be set in the constructor' do
82
+ http_resp = Object.new
83
+ context = RequestContext.new(http_response: http_resp)
84
+ expect(context.http_response).to be(http_resp)
85
+ end
86
+
87
+ end
88
+
89
+ describe 'metadata' do
90
+
91
+ it 'returns nil for non-set keys' do
92
+ context = RequestContext.new
93
+ expect(context[:color]).to eq(nil)
94
+ end
95
+
96
+ it 'can be set via #[]=' do
97
+ context = RequestContext.new
98
+ context[:color] = 'red'
99
+ expect(context[:color]).to eq('red')
100
+ end
101
+
102
+ end
103
+ end
104
+ end
105
+ end
@@ -0,0 +1,102 @@
1
+ require 'spec_helper'
2
+
3
+ module Seahorse
4
+ module Client
5
+ describe Request do
6
+
7
+ let(:handlers) { HandlerList.new }
8
+
9
+ let(:context) { RequestContext.new }
10
+
11
+ let(:request) { Request.new(handlers, context) }
12
+
13
+ it 'is a HandlerBuilder' do
14
+ expect(request).to be_kind_of(HandlerBuilder)
15
+ end
16
+
17
+ describe '#handlers' do
18
+
19
+ it 'returns the handler list' do
20
+ handlers = HandlerList.new
21
+ request = Request.new(handlers, context)
22
+ expect(request.handlers).to be(handlers)
23
+ end
24
+
25
+ end
26
+
27
+ describe '#context' do
28
+
29
+ it 'returns the request context given the constructor' do
30
+ context = RequestContext.new
31
+ request = Request.new(handlers, context)
32
+ expect(request.context).to be(context)
33
+ end
34
+
35
+ end
36
+
37
+ describe '#send_request' do
38
+
39
+ it 'contructs a stack from the handler list' do
40
+ expect(handlers).to receive(:to_stack).and_return(->(context) {})
41
+ request.send_request
42
+ end
43
+
44
+ it 'returns the response from the handler stack #call method' do
45
+ response = double('response')
46
+ allow(handlers).to receive(:to_stack).and_return(->(_) { response })
47
+ expect(request.send_request).to be(response)
48
+ end
49
+
50
+ it 'passes the request context to the handler stack' do
51
+ passed = nil
52
+ allow(handlers).to receive(:to_stack).
53
+ and_return(->(context) { passed = context })
54
+ request.send_request
55
+ expect(passed).to be(context)
56
+ end
57
+
58
+ it 'returns the response from the handler stack' do
59
+ resp = Response.new
60
+ allow(handlers).to receive(:to_stack).and_return(->(context) { resp })
61
+ expect(Request.new(handlers, context).send_request).to be(resp)
62
+ end
63
+
64
+ end
65
+
66
+ describe '#send_request with a block' do
67
+
68
+ let(:handler) do
69
+ Proc.new do
70
+ context.http_response.body.write('part1')
71
+ context.http_response.body.write('part2')
72
+ context.http_response.body.write('part3')
73
+ Response.new(context: context)
74
+ end
75
+ end
76
+
77
+ before(:each) do
78
+ allow(handlers).to receive(:to_stack).and_return(handler)
79
+ end
80
+
81
+ it 'streams data from the handler to the #send_request block' do
82
+ data = []
83
+ request.send_request { |chunk| data << chunk }
84
+ expect(data).to eq(['part1', 'part2', 'part3'])
85
+ end
86
+
87
+ it 'counts the bytes yielded' do
88
+ resp = request.send_request { |chunk| }
89
+ expect(resp.http_response.body.size).to eq(15)
90
+ end
91
+
92
+ it 'does not buffer the response chunks' do
93
+ response = request.send_request { |chunk| }
94
+ body = response.http_response.body
95
+ expect(body.read).to eq('')
96
+ expect { body.rewind }.to raise_error(NotImplementedError)
97
+ end
98
+
99
+ end
100
+ end
101
+ end
102
+ end
@@ -0,0 +1,171 @@
1
+ require 'spec_helper'
2
+ require 'pp'
3
+
4
+ module Seahorse
5
+ module Client
6
+ describe Response do
7
+
8
+ describe '#inspect' do
9
+
10
+ it 'returns the inspect string for the data' do
11
+ resp = Response.new
12
+ resp.data = double('data')
13
+ expect(resp.inspect).to eq(resp.data.pretty_inspect)
14
+ end
15
+
16
+ it 'returns the default inspect if data is not set' do
17
+ expect(Response.new.inspect).to include('#<Seahorse::Client::Response:')
18
+ end
19
+
20
+ end
21
+
22
+ describe '#data' do
23
+
24
+ it 'can be set' do
25
+ data = double('data')
26
+ resp = Response.new
27
+ resp.data = data
28
+ expect(resp.data).to be(data)
29
+ end
30
+
31
+ it 'can be accessed via method_missing on the response' do
32
+ data = double('data', foo: 'bar')
33
+ resp = Response.new
34
+ resp.data = data
35
+ expect(resp.foo).to be(data.foo)
36
+ end
37
+
38
+ it 'correctly answers respond_to?' do
39
+ data = double('data', foo: 'bar')
40
+ resp = Response.new
41
+ resp.data = data
42
+ expect(resp.respond_to?(:foo)).to be(true)
43
+ end
44
+
45
+ end
46
+
47
+ describe '#context' do
48
+
49
+ it 'defaults to a new context' do
50
+ expect(Response.new.context).to be_kind_of(RequestContext)
51
+ end
52
+
53
+ it 'can be set in the constructor' do
54
+ context = RequestContext.new
55
+ expect(Response.new(context: context).context).to be(context)
56
+ end
57
+
58
+ end
59
+
60
+ describe '#http_request' do
61
+
62
+ it 'returns the context #http_request' do
63
+ http_request = Http::Request.new
64
+ context = RequestContext.new(http_request: http_request)
65
+ resp = Response.new(context: context)
66
+ expect(resp.http_request).to be(http_request)
67
+ end
68
+
69
+ end
70
+
71
+ describe '#http_response' do
72
+
73
+ it 'returns the context #http_response' do
74
+ http_response = Http::Response.new
75
+ context = RequestContext.new(http_response: http_response)
76
+ resp = Response.new(context: context)
77
+ expect(resp.http_response).to be(http_response)
78
+ end
79
+
80
+ end
81
+
82
+ describe 'callbacks' do
83
+
84
+ let(:http_resp) { Http::Response.new }
85
+
86
+ let(:response) {
87
+ Response.new(context: RequestContext.new(http_response: http_resp))
88
+ }
89
+
90
+ describe '#on_complete' do
91
+
92
+ it 'triggers the callback when a response is received' do
93
+ http_resp.status_code = 200
94
+ expect { |b| response.on_complete(&b) }.to yield_control
95
+ end
96
+
97
+ it 'does not trigger when when a response is not received' do
98
+ http_resp.status_code = 0
99
+ expect { |b| response.on_complete(&b) }.not_to yield_control
100
+ end
101
+
102
+ end
103
+
104
+ describe '#on_success' do
105
+
106
+ it 'triggers the callback when response has a ~ 200 status code' do
107
+ http_resp.status_code = 0
108
+ expect { |b| response.on_success(&b) }.not_to yield_control
109
+ http_resp.status_code = 200
110
+ expect { |b| response.on_success(&b) }.to yield_control
111
+ http_resp.status_code = 299
112
+ expect { |b| response.on_success(&b) }.to yield_control
113
+ http_resp.status_code = 300
114
+ expect { |b| response.on_success(&b) }.not_to yield_control
115
+ end
116
+
117
+ end
118
+
119
+ describe '#on_redirect' do
120
+
121
+ it 'triggers the callback when response has a ~ 300 status code' do
122
+ http_resp.status_code = 200
123
+ expect { |b| response.on_redirect(&b) }.not_to yield_control
124
+ http_resp.status_code = 304
125
+ expect { |b| response.on_redirect(&b) }.to yield_control
126
+ http_resp.status_code = 307
127
+ expect { |b| response.on_redirect(&b) }.to yield_control
128
+ http_resp.status_code = 400
129
+ expect { |b| response.on_redirect(&b) }.not_to yield_control
130
+ end
131
+
132
+ end
133
+
134
+ describe '#on_error' do
135
+
136
+ it 'triggers the callback when response has a ~ 400-500 code' do
137
+ http_resp.status_code = 0
138
+ expect { |b| response.on_error(&b) }.not_to yield_control
139
+ http_resp.status_code = 200
140
+ expect { |b| response.on_error(&b) }.not_to yield_control
141
+ http_resp.status_code = 300
142
+ expect { |b| response.on_error(&b) }.not_to yield_control
143
+ http_resp.status_code = 400
144
+ expect { |b| response.on_error(&b) }.to yield_control
145
+ http_resp.status_code = 500
146
+ expect { |b| response.on_error(&b) }.to yield_control
147
+ end
148
+
149
+ end
150
+
151
+ describe '#on_failure' do
152
+
153
+ it 'triggers the callback when a response is not received' do
154
+ http_resp.status_code = 0
155
+ expect { |b| response.on_failure(&b) }.to yield_control
156
+ http_resp.status_code = 200
157
+ expect { |b| response.on_failure(&b) }.not_to yield_control
158
+ http_resp.status_code = 300
159
+ expect { |b| response.on_failure(&b) }.not_to yield_control
160
+ http_resp.status_code = 400
161
+ expect { |b| response.on_failure(&b) }.not_to yield_control
162
+ http_resp.status_code = 500
163
+ expect { |b| response.on_failure(&b) }.not_to yield_control
164
+ end
165
+
166
+ end
167
+
168
+ end
169
+ end
170
+ end
171
+ end