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,202 @@
1
+ require 'stringio'
2
+ require 'date'
3
+ require 'time'
4
+ require 'tempfile'
5
+
6
+ module Seahorse
7
+ module Client
8
+ class ParamConverter
9
+
10
+ include Model::Shapes
11
+
12
+ @converters = Hash.new { |h,k| h[k] = {} }
13
+
14
+ # @param [Model::Shapes::InputShape] rules
15
+ def initialize(rules)
16
+ @rules = rules
17
+ end
18
+
19
+ # @param [Hash] params
20
+ # @return [Hash]
21
+ def convert(params)
22
+ structure(@rules, params)
23
+ end
24
+
25
+ private
26
+
27
+ def structure(rules, values)
28
+ values = c(rules, values)
29
+ if values.is_a?(Hash)
30
+ values.each do |k, v|
31
+ unless v.nil?
32
+ if member_shape = rules.members[k]
33
+ values[k] = member(member_shape, v)
34
+ end
35
+ end
36
+ end
37
+ end
38
+ values
39
+ end
40
+
41
+ def list(rules, values)
42
+ values = c(rules, values)
43
+ if values.is_a?(Array)
44
+ values.map { |v| c(rules.members, v) }
45
+ else
46
+ values
47
+ end
48
+ end
49
+
50
+ def map(rules, values)
51
+ values = c(rules, values)
52
+ if values.is_a?(Hash)
53
+ values.inject({}) do |hash, (k, v)|
54
+ hash[c(rules.keys, k)] = c(rules.members, v)
55
+ hash
56
+ end
57
+ else
58
+ values
59
+ end
60
+ end
61
+
62
+ def member(rules, value)
63
+ case rules
64
+ when StructureShape then structure(rules, value)
65
+ when ListShape then list(rules, value)
66
+ when MapShape then map(rules, value)
67
+ else c(rules, value)
68
+ end
69
+ end
70
+
71
+ def c(shape, value)
72
+ self.class.c(shape.class, value)
73
+ end
74
+
75
+ class << self
76
+
77
+ # @param [Model::Shapes::InputShape] rules
78
+ # @param [Hash] params
79
+ # @return [Hash]
80
+ def convert(rules, params)
81
+ new(rules).convert(params)
82
+ end
83
+
84
+ # Registers a new value converter. Converters run in the context
85
+ # of a shape and value class.
86
+ #
87
+ # # add a converter that stringifies integers
88
+ # shape_class = Seahorse::Model::Shapes::StringShape
89
+ # ParamConverter.add(shape_class, Integer) { |i| i.to_s }
90
+ #
91
+ # @param [Class<Model::Shapes::Shape>] shape_class
92
+ # @param [Class] value_class
93
+ # @param [#call] converter (nil) An object that responds to `#call`
94
+ # accepting a single argument. This function should perform
95
+ # the value conversion if possible, returning the result.
96
+ # If the conversion is not possible, the original value should
97
+ # be returned.
98
+ # @return [void]
99
+ def add(shape_class, value_class, converter = nil, &block)
100
+ @converters[shape_class][value_class] = converter || block
101
+ end
102
+
103
+ # @api private
104
+ def c(shape, value)
105
+ if converter = converter_for(shape, value)
106
+ converter.call(value)
107
+ else
108
+ value
109
+ end
110
+ end
111
+
112
+ private
113
+
114
+ def converter_for(shape_class, value)
115
+ unless @converters[shape_class].key?(value.class)
116
+ @converters[shape_class][value.class] = find(shape_class, value)
117
+ end
118
+ @converters[shape_class][value.class]
119
+ end
120
+
121
+ def find(shape_class, value)
122
+ converter = nil
123
+ each_base_class(shape_class) do |klass|
124
+ @converters[klass].each do |value_class, block|
125
+ if value_class === value
126
+ converter = block
127
+ break
128
+ end
129
+ end
130
+ break if converter
131
+ end
132
+ converter
133
+ end
134
+
135
+ def each_base_class(shape_class, &block)
136
+ shape_class.ancestors.each do |ancestor|
137
+ yield(ancestor) if @converters.key?(ancestor)
138
+ end
139
+ end
140
+
141
+ end
142
+
143
+ add(StructureShape, Hash) { |h| h.dup }
144
+ add(StructureShape, Struct) do |s|
145
+ s.members.inject({}) {|h,k| h[k] = s[k]; h }
146
+ end
147
+
148
+ add(MapShape, Hash) { |h| h.dup }
149
+ add(MapShape, Struct) do |s|
150
+ s.members.inject({}) {|h,k| h[k] = s[k]; h }
151
+ end
152
+
153
+ add(ListShape, Array) { |a| a.dup }
154
+ add(ListShape, Enumerable) { |value| value.to_a }
155
+
156
+ add(StringShape, String)
157
+ add(StringShape, Symbol) { |sym| sym.to_s }
158
+
159
+ add(IntegerShape, Integer)
160
+ add(IntegerShape, Float) { |f| f.to_i }
161
+ add(IntegerShape, String) do |str|
162
+ begin
163
+ Integer(str)
164
+ rescue ArgumentError
165
+ str
166
+ end
167
+ end
168
+
169
+ add(FloatShape, Float)
170
+ add(FloatShape, Integer) { |i| i.to_f }
171
+ add(FloatShape, String) do |str|
172
+ begin
173
+ Float(str)
174
+ rescue ArgumentError
175
+ str
176
+ end
177
+ end
178
+
179
+ add(TimestampShape, Time)
180
+ add(TimestampShape, Date) { |d| d.to_time }
181
+ add(TimestampShape, DateTime) { |dt| dt.to_time }
182
+ add(TimestampShape, Integer) { |i| Time.at(i) }
183
+ add(TimestampShape, String) do |str|
184
+ begin
185
+ Time.parse(str)
186
+ rescue ArgumentError
187
+ str
188
+ end
189
+ end
190
+
191
+ add(BooleanShape, TrueClass)
192
+ add(BooleanShape, FalseClass)
193
+ add(BooleanShape, String) { |str| { 'true' => true, 'false' => false }[str] }
194
+
195
+ add(BlobShape, IO)
196
+ add(BlobShape, Tempfile)
197
+ add(BlobShape, StringIO)
198
+ add(BlobShape, String)
199
+
200
+ end
201
+ end
202
+ end
@@ -0,0 +1,139 @@
1
+ module Seahorse
2
+ module Client
3
+ class ParamValidator
4
+
5
+ # @param [Model::Shapes::InputShape] rules
6
+ # @param [Hash] params
7
+ # @return [void]
8
+ def self.validate!(rules, params)
9
+ new(rules).validate!(params)
10
+ end
11
+
12
+ # @param [Model::Shapes::InputShape] rules
13
+ def initialize(rules)
14
+ @rules = rules
15
+ end
16
+
17
+ # @param [Hash] params
18
+ # @return [void]
19
+ def validate!(params)
20
+ errors = []
21
+ structure(@rules, params, errors, context = 'params')
22
+ raise ArgumentError, error_messages(errors) unless errors.empty?
23
+ end
24
+
25
+ private
26
+
27
+ def structure(rules, values, errors, context)
28
+ # ensure the value is hash like
29
+ return unless hash?(values, errors, context)
30
+
31
+ # ensure required members are present
32
+ rules.members.each do |member_name, member_shape|
33
+ if member_shape.required? and values[member_name].nil?
34
+ param = "#{context}[#{member_name.inspect}]"
35
+ errors << "missing required parameter #{param}"
36
+ end
37
+ end
38
+
39
+ # validate non-nil members
40
+ values.each do |name, value|
41
+ unless value.nil?
42
+ if member_shape = rules.members[name]
43
+ payload = rules.is_a?(Model::Shapes::InputShape) &&
44
+ rules.payload == name
45
+ member(member_shape, value, errors, context + "[#{name.inspect}]",
46
+ payload)
47
+ else
48
+ errors << "unexpected value at #{context}[#{name.inspect}]"
49
+ end
50
+ end
51
+ end
52
+ end
53
+
54
+ def list(rules, values, errors, context)
55
+ # ensure the value is an array
56
+ unless values.is_a?(Array)
57
+ errors << "expected #{context} to be an array"
58
+ return
59
+ end
60
+
61
+ # validate members
62
+ offset = 0
63
+ values.each do |value|
64
+ member(rules.members, value, errors, context + "[#{offset}]")
65
+ offset += 1
66
+ end
67
+ end
68
+
69
+ def map(rules, values, errors, context)
70
+ return unless hash?(values, errors, context)
71
+ values.each do |key, value|
72
+ member(rules.keys, key, errors, "#{context} #{key.inspect} key")
73
+ member(rules.members, value, errors, context + "[#{key.inspect}]")
74
+ end
75
+ end
76
+
77
+ def member(rules, value, errors, context, payload = false)
78
+ case rules
79
+ when Model::Shapes::StructureShape
80
+ structure(rules, value, errors, context)
81
+ when Model::Shapes::ListShape
82
+ list(rules, value, errors, context)
83
+ when Model::Shapes::MapShape
84
+ map(rules, value, errors, context)
85
+ when Model::Shapes::StringShape
86
+ unless value.is_a?(String)
87
+ errors << "expected #{context} to be a string"
88
+ end
89
+ when Model::Shapes::IntegerShape
90
+ unless value.is_a?(Integer)
91
+ errors << "expected #{context} to be an integer"
92
+ end
93
+ when Model::Shapes::FloatShape
94
+ unless value.is_a?(Float)
95
+ errors << "expected #{context} to be a float"
96
+ end
97
+ when Model::Shapes::TimestampShape
98
+ unless value.is_a?(Time)
99
+ errors << "expected #{context} to be a Time object"
100
+ end
101
+ when Model::Shapes::BooleanShape
102
+ unless [true, false].include?(value)
103
+ errors << "expected #{context} to be true or false"
104
+ end
105
+ when Model::Shapes::BlobShape
106
+ unless io_like?(value) or value.is_a?(String)
107
+ errors << "expected #{context} to be a string or IO object"
108
+ end
109
+ end
110
+ end
111
+
112
+ def hash?(value, errors, context)
113
+ if value.is_a?(Hash)
114
+ true
115
+ else
116
+ errors << "expected #{context} to be a hash"
117
+ false
118
+ end
119
+ end
120
+
121
+ def io_like?(value)
122
+ value.respond_to?(:read) &&
123
+ value.respond_to?(:rewind) &&
124
+ value.respond_to?(:size)
125
+ end
126
+
127
+ def error_messages(errors)
128
+ if errors.size == 1
129
+ errors.first
130
+ else
131
+ prefix = "\n - "
132
+ "parameter validator found #{errors.size} errors:" +
133
+ prefix + errors.join(prefix)
134
+ end
135
+ end
136
+
137
+ end
138
+ end
139
+ end
@@ -0,0 +1,80 @@
1
+ module Seahorse
2
+ module Client
3
+ class Plugin
4
+
5
+ extend HandlerBuilder
6
+
7
+ # @param [Configuration] config
8
+ # @return [void]
9
+ def add_options(config)
10
+ self.class.options.each do |args, block|
11
+ config.add_option(*args, &block)
12
+ end
13
+ end
14
+
15
+ # @param [HandlerList] handlers
16
+ # @param [Configuration] config
17
+ # @return [void]
18
+ def add_handlers(handlers, config)
19
+ handlers.copy_from(self.class.handlers)
20
+ end
21
+
22
+ # @param [Class<Client::Base>] client_class
23
+ # @param [Hash] options
24
+ # @return [void]
25
+ def before_initialize(client_class, options)
26
+ self.class.before_initialize_hooks.each do |block|
27
+ block.call(client_class, options)
28
+ end
29
+ end
30
+
31
+ # @param [Client::Base] client
32
+ # @return [void]
33
+ def after_initialize(client)
34
+ self.class.after_initialize_hooks.each do |block|
35
+ block.call(client)
36
+ end
37
+ end
38
+
39
+ class << self
40
+
41
+ def option(name, default = nil, &block)
42
+ if block_given?
43
+ options << [[name], Proc.new]
44
+ else
45
+ options << [[name, default]]
46
+ end
47
+ end
48
+
49
+ def before_initialize(&block)
50
+ before_initialize_hooks << block
51
+ end
52
+
53
+ def after_initialize(&block)
54
+ after_initialize_hooks << block
55
+ end
56
+
57
+ # @api private
58
+ def options
59
+ @options ||= []
60
+ end
61
+
62
+ # @api private
63
+ def handlers
64
+ @handlers ||= HandlerList.new
65
+ end
66
+
67
+ # @api private
68
+ def before_initialize_hooks
69
+ @before_initialize_hooks ||= []
70
+ end
71
+
72
+ # @api private
73
+ def after_initialize_hooks
74
+ @after_initialize_hooks ||= []
75
+ end
76
+
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,142 @@
1
+ require 'set'
2
+ require 'thread'
3
+
4
+ module Seahorse
5
+ module Client
6
+ class PluginList
7
+
8
+ include Enumerable
9
+
10
+ # @param [Array, Set] plugins
11
+ # @option options [Mutex] :mutex
12
+ def initialize(plugins = [], options = {})
13
+ @mutex = options[:mutex] || Mutex.new
14
+ @plugins = Set.new
15
+ if plugins.is_a?(PluginList)
16
+ plugins.send(:each_plugin) { |plugin| _add(plugin) }
17
+ else
18
+ plugins.each { |plugin| _add(plugin) }
19
+ end
20
+ end
21
+
22
+ # Adds and returns the `plugin`.
23
+ # @param [Plugin] plugin
24
+ # @return [void]
25
+ def add(plugin)
26
+ @mutex.synchronize do
27
+ _add(plugin)
28
+ end
29
+ nil
30
+ end
31
+
32
+ # Removes and returns the `plugin`.
33
+ # @param [Plugin] plugin
34
+ # @return [void]
35
+ def remove(plugin)
36
+ @mutex.synchronize do
37
+ @plugins.delete(PluginWrapper.new(plugin))
38
+ end
39
+ nil
40
+ end
41
+
42
+ # Replaces the existing list of plugins.
43
+ # @param [Array<Plugin>] plugins
44
+ # @return [void]
45
+ def set(plugins)
46
+ @mutex.synchronize do
47
+ @plugins.clear
48
+ plugins.each do |plugin|
49
+ _add(plugin)
50
+ end
51
+ end
52
+ nil
53
+ end
54
+
55
+ # Enumerates the plugins.
56
+ # @return [Enumerator]
57
+ def each(&block)
58
+ each_plugin do |plugin_wrapper|
59
+ yield(plugin_wrapper.plugin)
60
+ end
61
+ end
62
+
63
+ private
64
+
65
+ # Not safe to call outside the mutex.
66
+ def _add(plugin)
67
+ @plugins << PluginWrapper.new(plugin)
68
+ end
69
+
70
+ # Yield each PluginDetail behind the mutex
71
+ def each_plugin(&block)
72
+ @mutex.synchronize do
73
+ @plugins.each(&block)
74
+ end
75
+ end
76
+
77
+ # A utility class that computes the canonical name for a plugin
78
+ # and defers requiring the plugin until the plugin class is
79
+ # required.
80
+ # @api private
81
+ class PluginWrapper
82
+
83
+ # @param [String, Symbol, Module, Class] plugin
84
+ def initialize(plugin)
85
+ case plugin
86
+ when Module
87
+ @canonical_name = plugin.name || plugin.object_id
88
+ @plugin = plugin
89
+ when Symbol, String
90
+ @canonical_name, @gem_name = plugin.to_s.split('.').reverse
91
+ @plugin = nil
92
+ else
93
+ @canonical_name = plugin.object_id
94
+ @plugin = plugin
95
+ end
96
+ end
97
+
98
+ # @return [String]
99
+ attr_reader :canonical_name
100
+
101
+ # @return [Class<Plugin>]
102
+ def plugin
103
+ @plugin ||= require_plugin
104
+ end
105
+
106
+ # Returns the given plugin if it is already a PluginWrapper.
107
+ def self.new(plugin)
108
+ if plugin.is_a?(self)
109
+ plugin
110
+ else
111
+ super
112
+ end
113
+ end
114
+
115
+ # @return [Boolean]
116
+ # @api private
117
+ def eql? other
118
+ canonical_name == other.canonical_name
119
+ end
120
+
121
+ # @return [String]
122
+ # @api private
123
+ def hash
124
+ canonical_name.hash
125
+ end
126
+
127
+ private
128
+
129
+ # @return [Class<Plugin>]
130
+ def require_plugin
131
+ require(@gem_name) if @gem_name
132
+ plugin_class = Kernel
133
+ @canonical_name.split('::').each do |const_name|
134
+ plugin_class = plugin_class.const_get(const_name)
135
+ end
136
+ plugin_class
137
+ end
138
+
139
+ end
140
+ end
141
+ end
142
+ end