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,62 @@
1
+ module Seahorse
2
+ module Client
3
+ class Request
4
+
5
+ include HandlerBuilder
6
+
7
+ # @param [HandlerList] handlers
8
+ # @param [RequestContext] context
9
+ def initialize(handlers, context)
10
+ @handlers = handlers
11
+ @context = context
12
+ end
13
+
14
+ # @return [HandlerList]
15
+ attr_reader :handlers
16
+
17
+ # @return [RequestContext]
18
+ attr_reader :context
19
+
20
+ # Sends the request, returning a {Response} object.
21
+ #
22
+ # response = request.send_request
23
+ #
24
+ # # Streaming Responses
25
+ #
26
+ # By default, HTTP responses are buffered into memory. This can be
27
+ # bad if you are downloading large responses, e.g. large files.
28
+ # You can avoid this by streaming the response to a block or some other
29
+ # target.
30
+ #
31
+ # ## Streaming to a File
32
+ #
33
+ # You can stream the raw HTTP response body to a File, or any IO-like
34
+ # object, by passing the `:target` option.
35
+ #
36
+ # File.open('photo.jpg', 'wb') do |file|
37
+ # request.send_request(target: file)
38
+ # end
39
+ #
40
+ # ## Block Streaming
41
+ #
42
+ # Pass a block to `#send_request` and the response will be yielded in
43
+ # chunks to the given block.
44
+ #
45
+ # # stream the response data
46
+ # request.send_request do |chunk|
47
+ # file.write(chunk)
48
+ # end
49
+ #
50
+ # **Please Note**: When streaming to a block, it is not possible to
51
+ # retry failed requests.
52
+ #
53
+ # @return [Response]
54
+ def send_request(options = {}, &block)
55
+ @context.http_response.body = BlockIO.new(&block) if block_given?
56
+ @context.http_response.body = options[:target] if options[:target]
57
+ @handlers.to_stack.call(@context)
58
+ end
59
+
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,68 @@
1
+ require 'stringio'
2
+
3
+ module Seahorse
4
+ module Client
5
+ class RequestContext
6
+
7
+ # @option options [required,String] :operation_name (nil)
8
+ # @option options [required,Model::Operation] :operation (nil)
9
+ # @option options [Hash] :params ({})
10
+ # @option options [Configuration] :config (nil)
11
+ # @option options [Http::Request] :http_request (Http::Request.new)
12
+ # @option options [Http::Response] :http_response (Http::Response.new)
13
+ # and #rewind.
14
+ def initialize(options = {})
15
+ @operation_name = options[:operation_name]
16
+ @operation = options[:operation]
17
+ @client = options[:client]
18
+ @params = options[:params] || {}
19
+ @config = options[:config]
20
+ @http_request = options[:http_request] || Http::Request.new
21
+ @http_response = options[:http_response] || Http::Response.new
22
+ @retries = 0
23
+ @metadata = {}
24
+ end
25
+
26
+ # @return [String] Name of the API operation called.
27
+ attr_accessor :operation_name
28
+
29
+ # @return [Model::Operation]
30
+ attr_accessor :operation
31
+
32
+ # @return [Seahorse::Client::Base]
33
+ attr_accessor :client
34
+
35
+ # @return [Hash] The hash of request parameters.
36
+ attr_accessor :params
37
+
38
+ # @return [Configuration] The client configuration.
39
+ attr_accessor :config
40
+
41
+ # @return [Http::Request]
42
+ attr_accessor :http_request
43
+
44
+ # @return [Http::Response]
45
+ attr_accessor :http_response
46
+
47
+ # @return [Integer]
48
+ attr_accessor :retries
49
+
50
+ # Returns the metadata for the given `key`.
51
+ # @param [Symbol] key
52
+ # @return [Object]
53
+ def [](key)
54
+ @metadata[key]
55
+ end
56
+
57
+ # Sets the request context metadata for the given `key`. Request metadata
58
+ # useful for handlers that need to keep state on the request, without
59
+ # sending that data with the request over HTTP.
60
+ # @param [Symbol] key
61
+ # @param [Object] value
62
+ def []=(key, value)
63
+ @metadata[key] = value
64
+ end
65
+
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,106 @@
1
+ require 'thread'
2
+
3
+ module Seahorse
4
+ module Client
5
+ class Response
6
+
7
+ # @option options [RequestContext] :context (nil)
8
+ # @option options [Integer] :status_code (nil)
9
+ # @option options [Http::Headers] :headers (Http::Headers.new)
10
+ # @option options [String] :body ('')
11
+ def initialize(options = {})
12
+ @context = options[:context] || RequestContext.new
13
+ @data = options[:data]
14
+ @error = options[:error]
15
+ @http_request = @context.http_request
16
+ @http_response = @context.http_response
17
+ end
18
+
19
+ # @return [RequestContext]
20
+ attr_reader :context
21
+
22
+ # @return [Http::Request]
23
+ attr_reader :http_request
24
+
25
+ # @return [Http::Response]
26
+ attr_reader :http_response
27
+
28
+ # @return The response data. This may be `nil` if the response contains
29
+ # an {#error}.
30
+ attr_accessor :data
31
+
32
+ # @return [StandardError, nil]
33
+ attr_accessor :error
34
+
35
+ # @param [Range<Integer>] status_code_range (nil) When present, the
36
+ # `block` will be triggered only for responses with a status code
37
+ # in the given range.
38
+ # @return [Response] Returns self.
39
+ def on_status(status_code_range = nil, &block)
40
+ if status_code_range.nil? || status_code_range.include?(status_code)
41
+ yield(self)
42
+ end
43
+ self
44
+ end
45
+
46
+ # Yields to the given block if the HTTP request received a response.
47
+ def on_complete(&block)
48
+ on_status(200..599, &block)
49
+ end
50
+
51
+ # Yields to the given block if the HTTP request received response with a
52
+ # ~ 200 level status code.
53
+ def on_success(&block)
54
+ on_status(200..299, &block)
55
+ end
56
+
57
+ # Yields to the given block if the HTTP request received response with a
58
+ # ~ 300 level status code.
59
+ def on_redirect(&block)
60
+ on_status(300..399, &block)
61
+ end
62
+
63
+ # Yields to the given block if the HTTP request received response with a
64
+ # ~ 400 or 500 level status code.
65
+ def on_error(&block)
66
+ on_status(400..599, &block)
67
+ end
68
+
69
+ # Yields to the given block if the HTTP request failed to receive any
70
+ # response. This generally indicates there was a network
71
+ # level status code.
72
+ def on_failure(&block)
73
+ on_status(0..0, &block)
74
+ end
75
+
76
+ # @api private
77
+ def respond_to?(*args)
78
+ @data.respond_to?(args.first, false) || super
79
+ end
80
+
81
+ # @api private
82
+ def inspect
83
+ if @data
84
+ @data.respond_to?(:pretty_inspect) ? @data.pretty_inspect : super
85
+ else
86
+ super
87
+ end
88
+ end
89
+
90
+ private
91
+
92
+ def status_code
93
+ @http_response.status_code
94
+ end
95
+
96
+ def method_missing(*args, &block)
97
+ if @data.respond_to?(args.first, false)
98
+ @data.send(*args, &block)
99
+ else
100
+ super
101
+ end
102
+ end
103
+
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,92 @@
1
+ module Seahorse
2
+ module Client
3
+ module Xml
4
+ class Builder
5
+
6
+ # @api private
7
+ class XmlDoc
8
+
9
+ # @option options [#<<] :target ('')
10
+ # @option options [String] :pad ('')
11
+ # @option options [String] :indent ('')
12
+ def initialize(options = {})
13
+ @target = options[:target] || ''
14
+ @indent = options[:indent] || ''
15
+ @pad = options[:pad] || ''
16
+ @end_of_line = @indent == '' ? '' : "\n"
17
+ end
18
+
19
+ attr_reader :target
20
+
21
+ # @overload node(name, attributes = {})
22
+ # Adds a self closing element without any content.
23
+ #
24
+ # @overload node(name, value, attributes = {})
25
+ # Adds an element that opens and closes on the same line with
26
+ # simple text content.
27
+ #
28
+ # @overload node(name, attributes = {}, &block)
29
+ # Adds a wrapping element. Calling {#node} from inside
30
+ # the yielded block creates nested elements.
31
+ #
32
+ # @return [void]
33
+ #
34
+ def node(name, *args, &block)
35
+ attrs = args.last.is_a?(Hash) ? args.pop : {}
36
+ if block_given?
37
+ @target << open_el(name, attrs)
38
+ @target << @end_of_line
39
+ increase_pad { yield }
40
+ @target << @pad
41
+ @target << close_el(name)
42
+ elsif args.empty?
43
+ @target << empty_element(name, attrs)
44
+ else
45
+ @target << inline_element(name, args.first, attrs)
46
+ end
47
+ end
48
+
49
+ private
50
+
51
+ def empty_element(name, attrs)
52
+ "#{@pad}<#{name}#{attributes(attrs)}/>#{@end_of_line}"
53
+ end
54
+
55
+ def inline_element(name, value, attrs)
56
+ "#{open_el(name, attrs)}#{escape(value)}#{close_el(name)}"
57
+ end
58
+
59
+ def open_el(name, attrs)
60
+ "#{@pad}<#{name}#{attributes(attrs)}>"
61
+ end
62
+
63
+ def close_el(name)
64
+ "</#{name}>#{@end_of_line}"
65
+ end
66
+
67
+ def escape(string)
68
+ string.to_s
69
+ end
70
+
71
+ def attributes(attr)
72
+ if attr.empty?
73
+ ''
74
+ else
75
+ ' ' + attr.map do |key, value|
76
+ "#{key}=\"#{escape(value).gsub('"', '&quot;')}\""
77
+ end.join(' ')
78
+ end
79
+ end
80
+
81
+ def increase_pad(&block)
82
+ pre_increase = @pad
83
+ @pad = @pad + @indent
84
+ yield
85
+ @pad = pre_increase
86
+ end
87
+
88
+ end
89
+ end
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,38 @@
1
+
2
+ module Seahorse
3
+ module Model
4
+
5
+ autoload :Api, 'seahorse/model/api'
6
+ autoload :Node, 'seahorse/model/node'
7
+ autoload :Operation, 'seahorse/model/operation'
8
+ autoload :Operations, 'seahorse/model/operations'
9
+ autoload :OperationInput, 'seahorse/model/operation_input'
10
+ autoload :Property, 'seahorse/model/property'
11
+ autoload :PropertyError, 'seahorse/model/property'
12
+
13
+ module Shapes
14
+ autoload :BlobShape, 'seahorse/model/shapes/shape'
15
+ autoload :BooleanShape, 'seahorse/model/shapes/shape'
16
+ autoload :DoubleShape, 'seahorse/model/shapes/shape'
17
+ autoload :IntegerShape, 'seahorse/model/shapes/shape'
18
+ autoload :InputShape, 'seahorse/model/shapes/shape'
19
+ autoload :Iso8601TimestampShape, 'seahorse/model/shapes/shape'
20
+ autoload :FloatShape, 'seahorse/model/shapes/shape'
21
+ autoload :ListShape, 'seahorse/model/shapes/shape'
22
+ autoload :LongShape, 'seahorse/model/shapes/shape'
23
+ autoload :MapShape, 'seahorse/model/shapes/shape'
24
+ autoload :MemberHash, 'seahorse/model/shapes/shape'
25
+ autoload :Rfc822TimestampShape, 'seahorse/model/shapes/shape'
26
+ autoload :Shape, 'seahorse/model/shapes/shape'
27
+ autoload :StringShape, 'seahorse/model/shapes/shape'
28
+ autoload :StructureShape, 'seahorse/model/shapes/shape'
29
+ autoload :TimestampShape, 'seahorse/model/shapes/shape'
30
+ autoload :UnixTimestampShape, 'seahorse/model/shapes/shape'
31
+ end
32
+
33
+ module Types
34
+ autoload :Boolean, 'seahorse/model/types'
35
+ end
36
+
37
+ end
38
+ end
@@ -0,0 +1,39 @@
1
+
2
+ module Seahorse
3
+ module Model
4
+ class Api < Node
5
+
6
+ property :version, String
7
+ property :endpoint, String
8
+ property :metadata, Hash
9
+ property :plugins, [String]
10
+ property :documentation, String
11
+ property :operations, Operations
12
+
13
+ def initialize(*)
14
+ super
15
+ self.metadata = {}
16
+ self.plugins = []
17
+ self.operations = Operations.new
18
+ end
19
+
20
+ def validate!
21
+ operations.load!
22
+ true
23
+ end
24
+
25
+ def to_hash
26
+ operations.load!
27
+ hash = super
28
+ hash.delete('metadata') if hash['metadata'].empty?
29
+ hash.delete('plugins') if hash['plugins'].empty?
30
+ hash
31
+ end
32
+
33
+ def inspect
34
+ "#<#{self.class.name} version=#{version}>"
35
+ end
36
+
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,102 @@
1
+ module Seahorse
2
+ module Model
3
+ class Node
4
+ include Types
5
+ include Shapes
6
+
7
+ class IndifferentHash < Hash
8
+ def [](k) super(k.to_s) end
9
+ def []=(k, v) super(k.to_s, v) end
10
+ def has_key?(k) super(k.to_s) end
11
+ end
12
+
13
+ class << self
14
+ # @!macro [attach] model.property
15
+ # @!attribute $1
16
+ # @return [$2]
17
+ def property(name, klass, opts = {})
18
+ attr_accessor(name)
19
+ @properties ||= IndifferentHash.new
20
+ @inner_properties ||= IndifferentHash.new
21
+
22
+ property = Property.new(name, klass, opts)
23
+ if property.serialized_location
24
+ @inner_properties[property.serialized_location] = true
25
+ end
26
+
27
+ @properties[property.serialized_name] = property
28
+ end
29
+
30
+ # @!attribute [r] properties
31
+ def properties
32
+ return @final_properties if @final_properties
33
+
34
+ @final_properties = IndifferentHash.new
35
+
36
+ klass = superclass
37
+ while klass != Node
38
+ @final_properties.update(klass.properties)
39
+ klass = klass.superclass
40
+ end
41
+
42
+ @final_properties.update(@properties) if @properties
43
+ @final_properties
44
+ end
45
+
46
+ # @!attribute [r] inner_properties
47
+ def inner_properties
48
+ return @final_inner_properties if @final_inner_properties
49
+
50
+ @final_inner_properties = IndifferentHash.new
51
+
52
+ klass = superclass
53
+ while klass != Node
54
+ @final_inner_properties.update(klass.inner_properties)
55
+ klass = klass.superclass
56
+ end
57
+
58
+ if @inner_properties
59
+ @final_inner_properties.update(@inner_properties)
60
+ end
61
+
62
+ @final_inner_properties
63
+ end
64
+
65
+ def from_hash_class(hash) self end
66
+
67
+ def from_hash(hash)
68
+ return unless hash
69
+
70
+ unrecognized_properties = []
71
+ klass = from_hash_class(hash)
72
+ obj = klass.new
73
+ hashes = [hash]
74
+ while hashes.size > 0
75
+ hashes.pop.each do |key, value|
76
+ next hashes.unshift(value) if inner_properties[key.to_s]
77
+
78
+ if prop = klass.properties[key.to_s]
79
+ obj.send("#{prop.name}=", prop.load_from(hash))
80
+ else
81
+ unrecognized_properties << key
82
+ end
83
+ end
84
+ end
85
+
86
+ if unrecognized_properties.size > 0
87
+ raise "Unrecognized properties: " +
88
+ "#{unrecognized_properties.join(', ')} on #{hash}"
89
+ else
90
+ obj
91
+ end
92
+ end
93
+ end
94
+
95
+ def to_hash
96
+ self.class.properties.inject({}) do |hsh, (key, prop)|
97
+ prop.write_to(hsh, send(prop.name)); hsh
98
+ end
99
+ end
100
+ end
101
+ end
102
+ end