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,6 @@
1
+ require 'seahorse/model'
2
+ require 'seahorse/client'
3
+
4
+ module Seahorse
5
+ autoload :VERSION, 'seahorse/version'
6
+ end
@@ -0,0 +1,61 @@
1
+ module Seahorse
2
+ module Client
3
+
4
+ autoload :Base, 'seahorse/client/base'
5
+ autoload :BlockIO, 'seahorse/client/block_io'
6
+ autoload :Configuration, 'seahorse/client/configuration'
7
+ autoload :Handler, 'seahorse/client/handler'
8
+ autoload :HandlerBuilder, 'seahorse/client/handler_builder'
9
+ autoload :HandlerList, 'seahorse/client/handler_list'
10
+ autoload :ParamConverter, 'seahorse/client/param_converter'
11
+ autoload :ParamValidator, 'seahorse/client/param_validator'
12
+ autoload :Plugin, 'seahorse/client/plugin'
13
+ autoload :PluginList, 'seahorse/client/plugin_list'
14
+ autoload :Request, 'seahorse/client/request'
15
+ autoload :RequestContext, 'seahorse/client/request_context'
16
+ autoload :Response, 'seahorse/client/response'
17
+
18
+ module Http
19
+ autoload :Endpoint, 'seahorse/client/http/endpoint'
20
+ autoload :Headers, 'seahorse/client/http/headers'
21
+ autoload :PlainStringIO, 'seahorse/client/http/plain_string_io'
22
+ autoload :Request, 'seahorse/client/http/request'
23
+ autoload :Response, 'seahorse/client/http/response'
24
+ end
25
+
26
+ module Logging
27
+ autoload :Handler, 'seahorse/client/logging/handler'
28
+ autoload :Formatter, 'seahorse/client/logging/formatter'
29
+ end
30
+
31
+ module NetHttp
32
+ autoload :ConnectionPool, 'seahorse/client/net_http/connection_pool'
33
+ autoload :Handler, 'seahorse/client/net_http/handler'
34
+ end
35
+
36
+ module Plugins
37
+ autoload :Api, 'seahorse/client/plugins/api'
38
+ autoload :ContentLength, 'seahorse/client/plugins/content_length'
39
+ autoload :Endpoint, 'seahorse/client/plugins/endpoint'
40
+ autoload :JsonSimple, 'seahorse/client/plugins/json_simple'
41
+ autoload :Logging, 'seahorse/client/plugins/logging'
42
+ autoload :NetHttp, 'seahorse/client/plugins/net_http'
43
+ autoload :OperationMethods, 'seahorse/client/plugins/operation_methods'
44
+ autoload :ParamConversion, 'seahorse/client/plugins/param_conversion'
45
+ autoload :ParamValidation, 'seahorse/client/plugins/param_validation'
46
+ autoload :RaiseResponseErrors, 'seahorse/client/plugins/raise_response_errors'
47
+ autoload :RestfulBindings, 'seahorse/client/plugins/restful_bindings'
48
+ end
49
+
50
+ module Xml
51
+ autoload :Builder, 'seahorse/client/xml/builder'
52
+ end
53
+
54
+ # @param (see Base.define)
55
+ # @return (see Base.define)
56
+ def self.define(options = {})
57
+ Base.define(options)
58
+ end
59
+
60
+ end
61
+ end
@@ -0,0 +1,239 @@
1
+ module Seahorse
2
+ module Client
3
+ class Base
4
+
5
+ include HandlerBuilder
6
+
7
+ # These plugins are applied to every client and can not be removed.
8
+ # @api private
9
+ REQUIRED_PLUGINS = [
10
+ Plugins::Api,
11
+ Plugins::Endpoint,
12
+ ]
13
+
14
+ # default plugins
15
+ @plugins = PluginList.new([
16
+ Plugins::NetHttp,
17
+ Plugins::OperationMethods,
18
+ Plugins::ParamConversion,
19
+ Plugins::ParamValidation,
20
+ Plugins::RaiseResponseErrors,
21
+ ])
22
+
23
+ # @api private
24
+ def initialize(plugins, options)
25
+ @config = build_config(plugins, options)
26
+ @handlers = handler_list(plugins)
27
+ after_initialize(plugins)
28
+ end
29
+
30
+ # @return [Configuration<Struct>]
31
+ attr_reader :config
32
+
33
+ # @return [HandlerList]
34
+ attr_reader :handlers
35
+
36
+ # Builds and returns a {Request} for the named operation. The request
37
+ # will not have been sent.
38
+ # @param [Symbol, String] operation_name
39
+ # @return [Request]
40
+ def build_request(operation_name, params = {})
41
+ Request.new(
42
+ @handlers.for(operation_name),
43
+ context_for(operation_name, params))
44
+ end
45
+
46
+ # @param [String] name
47
+ # @return [Model::Operation]
48
+ def operation(name)
49
+ config.api.operations[name] || raise("unknown operation `#{name}'")
50
+ end
51
+
52
+ # @api private
53
+ def inspect
54
+ "#<#{self.class.name}>"
55
+ end
56
+
57
+ private
58
+
59
+ # Constructs a {Configuration} object and gives each plugin the
60
+ # opportunity to register options with default values.
61
+ def build_config(plugins, options)
62
+ options = options.merge(api: self.class.api) unless options[:api]
63
+ config = Configuration.new
64
+ plugins.each do |plugin|
65
+ plugin.add_options(config) if plugin.respond_to?(:add_options)
66
+ end
67
+ config.build!(options)
68
+ end
69
+
70
+ # Gives each plugin the opportunity to register handlers for this client.
71
+ def handler_list(plugins)
72
+ handlers = HandlerList.new
73
+ plugins.each do |plugin|
74
+ if plugin.respond_to?(:add_handlers)
75
+ plugin.add_handlers(handlers, @config)
76
+ end
77
+ end
78
+ handlers
79
+ end
80
+
81
+ # Gives each plugin the opportunity to modify this client.
82
+ def after_initialize(plugins)
83
+ plugins.each do |plugin|
84
+ plugin.after_initialize(self) if plugin.respond_to?(:after_initialize)
85
+ end
86
+ end
87
+
88
+ # @return [RequestContext]
89
+ def context_for(operation_name, params)
90
+ RequestContext.new(
91
+ operation_name: operation_name.to_s,
92
+ operation: operation(operation_name),
93
+ client: self,
94
+ params: params,
95
+ config: config)
96
+ end
97
+
98
+ class << self
99
+
100
+ # @option options [String] :endpoint
101
+ # Endpoints specify the http scheme, hostname and port to connect
102
+ # to. You must specify at a minimum the hostname. Endpoints without
103
+ # a uri scheme will default to https on port 443.
104
+ #
105
+ # # defaults to https on port 443
106
+ # hostname: 'domain.com'
107
+ #
108
+ # # defaults to http on port 80
109
+ # hostname: 'domain.com', ssl_default: false
110
+ #
111
+ # # defaults are ignored, as scheme and port are present
112
+ # hostname: 'http://domain.com:123'
113
+ #
114
+ # @option options [Boolean] :ssl_default (true) Specifies the default
115
+ # scheme for the #endpoint when not specified. Defaults to `true`
116
+ # which creates https endpoints.
117
+ #
118
+ def new(options = {})
119
+ plugins = build_plugins
120
+ options = options.dup
121
+ before_initialize(plugins, options)
122
+ client = allocate
123
+ client.send(:initialize, plugins, options)
124
+ client
125
+ end
126
+
127
+ # Registers a plugin with this client.
128
+ #
129
+ # @example Register a plugin
130
+ #
131
+ # ClientClass.add_plugin(PluginClass)
132
+ #
133
+ # @example Register a plugin by name
134
+ #
135
+ # ClientClass.add_plugin('gem-name.PluginClass')
136
+ #
137
+ # @example Register a plugin with an object
138
+ #
139
+ # plugin = MyPluginClass.new(options)
140
+ # ClientClass.add_plugin(plugin)
141
+ #
142
+ # @param [Class, Symbol, String, Object] plugin
143
+ # @see .clear_plugins
144
+ # @see .set_plugins
145
+ # @see .remove_plugin
146
+ # @see .plugins
147
+ # @return [void]
148
+ def add_plugin(plugin)
149
+ @plugins.add(plugin)
150
+ end
151
+
152
+ # @see .clear_plugins
153
+ # @see .set_plugins
154
+ # @see .add_plugin
155
+ # @see .plugins
156
+ # @return [void]
157
+ def remove_plugin(plugin)
158
+ @plugins.remove(plugin)
159
+ end
160
+
161
+ # @see .set_plugins
162
+ # @see .add_plugin
163
+ # @see .remove_plugin
164
+ # @see .plugins
165
+ # @return [void]
166
+ def clear_plugins
167
+ @plugins.set([])
168
+ end
169
+
170
+ # @param [Array<Plugin>] plugins
171
+ # @see .clear_plugins
172
+ # @see .add_plugin
173
+ # @see .remove_plugin
174
+ # @see .plugins
175
+ # @return [void]
176
+ def set_plugins(plugins)
177
+ @plugins.set(plugins)
178
+ end
179
+
180
+ # Returns the list of registered plugins for this Client. Plugins are
181
+ # inherited from the client super class when the client is defined.
182
+ # @see .clear_plugins
183
+ # @see .set_plugins
184
+ # @see .add_plugin
185
+ # @see .remove_plugin
186
+ # @return [Array<Plugin>]
187
+ def plugins
188
+ (REQUIRED_PLUGINS + Array(@plugins)).freeze
189
+ end
190
+
191
+ # @return [Model::Api]
192
+ def api
193
+ @api ||= Model::Api.new
194
+ end
195
+
196
+ # @param [Model::Api, Hash] api
197
+ # @return [Model::Api]
198
+ def set_api(api)
199
+ api = Model::Api.from_hash(api) if api.is_a?(Hash)
200
+ Array(api.plugins).each do |plugin|
201
+ add_plugin(plugin)
202
+ end
203
+ @api = api
204
+ end
205
+
206
+ # @option options [Model::Api, Hash] :api ({})
207
+ # @option options [Array<Plugin>] :plugins ([]) A list of plugins to
208
+ # add to the client class created.
209
+ # @return [Class<Client::Base>]
210
+ def define(options = {})
211
+ subclass = Class.new(self)
212
+ subclass.set_api(options[:api] || api)
213
+ Array(options[:plugins]).each do |plugin|
214
+ subclass.add_plugin(plugin)
215
+ end
216
+ subclass
217
+ end
218
+ alias extend define
219
+
220
+ private
221
+
222
+ def build_plugins
223
+ plugins.map { |plugin| plugin.is_a?(Class) ? plugin.new : plugin }
224
+ end
225
+
226
+ def before_initialize(plugins, options)
227
+ plugins.each do |plugin|
228
+ plugin.before_initialize(self, options) if plugin.respond_to?(:before_initialize)
229
+ end
230
+ end
231
+
232
+ def inherited(subclass)
233
+ subclass.instance_variable_set('@plugins', PluginList.new(@plugins))
234
+ end
235
+
236
+ end
237
+ end
238
+ end
239
+ end
@@ -0,0 +1,39 @@
1
+ module Seahorse
2
+ module Client
3
+ class BlockIO
4
+
5
+ def initialize(&block)
6
+ @block = block
7
+ @size = 0
8
+ end
9
+
10
+ # @param [String] chunk
11
+ # @return [Integer]
12
+ def write(chunk)
13
+ @block.call(chunk)
14
+ chunk.bytesize.tap { |chunk_size| @size += chunk_size }
15
+ end
16
+
17
+ # @param [Integer] bytes (nil)
18
+ # @param [String] output_buffer (nil)
19
+ # @return [String, nil]
20
+ def read(bytes = nil, output_buffer = nil)
21
+ data = bytes ? nil : ''
22
+ output_buffer ? output_buffer.replace(data || '') : data
23
+ end
24
+
25
+ # @return [Integer]
26
+ def size
27
+ @size
28
+ end
29
+
30
+ # It is not possible to rewind a {BlockIO} object as the data has
31
+ # already been yielded.
32
+ # @return [NotImplementedError]
33
+ def rewind
34
+ raise NotImplementedError
35
+ end
36
+
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,197 @@
1
+ require 'set'
2
+
3
+ module Seahorse
4
+ module Client
5
+
6
+ # Configuration is used to define possible configuration options and
7
+ # then build read-only structures with user-supplied data.
8
+ #
9
+ # ## Adding Configuration Options
10
+ #
11
+ # Add configuration options with optional default values. These are used
12
+ # when building configuration objects.
13
+ #
14
+ # configuration = Configuration.new
15
+ #
16
+ # configuration.add_option(:max_retries, 3)
17
+ # configuration.add_option(:use_ssl, true)
18
+ #
19
+ # cfg = configuration.build!
20
+ # #=> #<struct max_retires=3 use_ssl=true>
21
+ #
22
+ # ## Building Configuration Objects
23
+ #
24
+ # Calling {#build!} on a {Configuration} object causes it to return
25
+ # a read-only (frozen) struct. Options passed to {#build!} are merged
26
+ # on top of any default options.
27
+ #
28
+ # configuration = Configuration.new
29
+ # configuration.add_option(:color, 'red')
30
+ #
31
+ # # default
32
+ # cfg1 = configuration.build!
33
+ # cfg1.color #=> 'red'
34
+ #
35
+ # # supplied color
36
+ # cfg2 = configuration.build!(color: blue)
37
+ # cfg2.color #=> 'blue'
38
+ #
39
+ # ## Accepted Options
40
+ #
41
+ # If you try to {#build!} a {Configuration} object with an unknown
42
+ # option, an `ArgumentError` is raised.
43
+ #
44
+ # configuration = Configuration.new
45
+ # configuration.add_option(:color)
46
+ # configuration.add_option(:size)
47
+ # configuration.add_option(:category)
48
+ #
49
+ # configuration.build!(price: 100)
50
+ # #=> raises an ArgumentError, :price was not added as an option
51
+ #
52
+ class Configuration
53
+
54
+ # @api private
55
+ def initialize
56
+ @defaults = {}
57
+ end
58
+
59
+ # Adds a getter method that returns the named option or a default
60
+ # value. Default values can be passed as a static positional argument
61
+ # or via a block.
62
+ #
63
+ # # defaults to nil
64
+ # configuration.add_option(:name)
65
+ #
66
+ # # with a string default
67
+ # configuration.add_option(:name, 'John Doe')
68
+ #
69
+ # # with a dynamic default value, evaluated once when calling #build!
70
+ # configuration.add_option(:name, 'John Doe')
71
+ # configuration.add_option(:username) do |config|
72
+ # config.name.gsub(/\W+/, '').downcase
73
+ # end
74
+ # cfg = configuration.build!
75
+ # cfg.name #=> 'John Doe'
76
+ # cfg.username #=> 'johndoe'
77
+ #
78
+ # @param [Symbol] name The name of the configuration option. This will
79
+ # be used to define a getter by the same name.
80
+ #
81
+ # @param default The default value for this option. You can specify
82
+ # a default by passing a value, a `Proc` object or a block argument.
83
+ # Procs and blocks are evaluated when {#build!} is called.
84
+ #
85
+ # @return [self]
86
+ def add_option(name, default = nil, &block)
87
+ @defaults[name.to_sym] = block_given? ?
88
+ UnresolvedOption.new(Proc.new) :
89
+ default
90
+ self
91
+ end
92
+
93
+ # Constructs and returns a configuration structure.
94
+ # Values not present in `options` will default to those supplied via
95
+ # add option.
96
+ #
97
+ # configuration = Configuration.new
98
+ # configuration.add_option(:enabled, true)
99
+ #
100
+ # cfg1 = configuration.build!
101
+ # cfg1.enabled #=> true
102
+ #
103
+ # cfg2 = configuration.build!(enabled: false)
104
+ # cfg2.enabled #=> false
105
+ #
106
+ # If you pass in options to `#build!` that have not been defined,
107
+ # then an `ArgumentError` will be raised.
108
+ #
109
+ # configuration = Configuration.new
110
+ # configuration.add_option(:enabled, true)
111
+ #
112
+ # # oops, spelling error for :enabled
113
+ # cfg = configuration.build!(enabld: true)
114
+ # #=> raises ArgumentError
115
+ #
116
+ # The object returned is a frozen `Struct`.
117
+ #
118
+ # configuration = Configuration.new
119
+ # configuration.add_option(:enabled, true)
120
+ #
121
+ # cfg = configuration.build!
122
+ # cfg.enabled #=> true
123
+ # cfg[:enabled] #=> true
124
+ # cfg['enabled'] #=> true
125
+ #
126
+ # @param [Hash] options ({}) A hash of configuration options.
127
+ # @return [Struct] Returns a frozen configuration `Struct`.
128
+ def build!(options = {})
129
+ struct = default_struct
130
+ options.each do |opt, value|
131
+ begin
132
+ struct[opt] = value
133
+ rescue NameError
134
+ msg = "invalid configuration option `#{opt.inspect}'"
135
+ raise ArgumentError, msg
136
+ end
137
+ end
138
+ OptionBlockResolver.new(struct).struct.freeze
139
+ end
140
+
141
+ private
142
+
143
+ def default_struct
144
+ Struct.new(*@defaults.keys).new(*@defaults.values_at(*@defaults.keys))
145
+ end
146
+
147
+ # @api private
148
+ class UnresolvedOption
149
+
150
+ def initialize(block)
151
+ @block = block
152
+ end
153
+
154
+ attr_reader :block
155
+
156
+ end
157
+
158
+ # @api private
159
+ class OptionBlockResolver
160
+
161
+ def initialize(struct)
162
+ @struct = struct
163
+ @members = Set.new(@struct.members)
164
+ @struct.members.each do |opt|
165
+ if struct[opt].is_a?(UnresolvedOption)
166
+ struct[opt] = struct[opt].block.call(self)
167
+ end
168
+ end
169
+ end
170
+
171
+ attr_reader :struct
172
+
173
+ def respond_to?(method_name)
174
+ @members.include?(method_name.to_sym) || super
175
+ end
176
+
177
+ private
178
+
179
+ def method_missing(method_name, *args)
180
+ if @members.include?(method_name)
181
+ resolve_blocks(method_name)
182
+ else
183
+ super
184
+ end
185
+ end
186
+
187
+ def resolve_blocks(member)
188
+ if @struct[member].is_a?(UnresolvedOption)
189
+ @struct[member] = @struct[member].block.call(self)
190
+ end
191
+ @struct[member]
192
+ end
193
+
194
+ end
195
+ end
196
+ end
197
+ end