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
+ Before("@route53") do
2
+ @route53 = Aws.route53
3
+ end
4
+
5
+ After("@route53") do
6
+ end
@@ -0,0 +1,22 @@
1
+ # language: en
2
+ @s3 @buckets
3
+ Feature: S3 Buckets
4
+
5
+ Scenario: CRUD buckets using the classic endpoint
6
+ Given I am using the S3 "us-east-1" region
7
+ When I create a bucket
8
+ Then the bucket should exist
9
+ When I delete the bucket
10
+ Then the bucket should not exist
11
+
12
+ Scenario: CRUD buckets using a regional endpoint
13
+ Given I am using the S3 "us-west-2" region
14
+ When I create a bucket
15
+ Then the bucket should exist
16
+ When I delete the bucket
17
+ Then the bucket should not exist
18
+
19
+ Scenario: Access bucket following 307 redirects
20
+ Given I am using the S3 "us-east-1" region
21
+ When I create a bucket with the location constraint "EU"
22
+ Then the bucket should have a location constraint of "EU"
@@ -0,0 +1,18 @@
1
+ # language: en
2
+ @s3 @objects
3
+ Feature: S3 Objects
4
+
5
+ Background:
6
+ Given I create a bucket
7
+
8
+ Scenario: Putting nothing to an object
9
+ When I put nothing to the key "blank"
10
+ Then the object with the key "blank" should have a content length of 0
11
+
12
+ Scenario: Putting a multi-byte string to an object
13
+ When I put "åß∂ƒ©" to the key "multi"
14
+ Then the object with the key "multi" should have a content length of 11
15
+
16
+ Scenario: Putting a file to an object
17
+ When I put the test png to the key "img"
18
+ Then the object with the key "img" should have a content length of 976
@@ -0,0 +1,17 @@
1
+ Before("@s3") do
2
+ @s3 = Aws.s3
3
+ @created_buckets = []
4
+ end
5
+
6
+ After("@s3") do
7
+ @created_buckets.each do |bucket|
8
+ loop do
9
+ objects = @s3.list_object_versions(bucket: bucket).data.versions.map do |v|
10
+ { key: v.key, version_id: v.version_id }
11
+ end
12
+ break if objects.empty?
13
+ @s3.delete_objects(bucket: bucket, delete: { objects: objects })
14
+ end
15
+ @s3.delete_bucket(bucket: bucket)
16
+ end
17
+ end
@@ -0,0 +1,66 @@
1
+ def create_bucket(options = {})
2
+ @bucket_name = "aws-sdk-test-#{Time.now.to_i}-#{rand(1000)}"
3
+ options[:bucket] = @bucket_name
4
+ if @s3.config.region != 'us-east-1' && !options[:create_bucket_configuration]
5
+ options[:create_bucket_configuration] = {
6
+ location_constraint: @s3.config.region
7
+ }
8
+ end
9
+ @s3.create_bucket(options)
10
+ @created_buckets << @bucket_name
11
+ end
12
+
13
+ Given(/^I am using the S3 "(.*?)" region$/) do |region|
14
+ @s3 = Aws.s3(region: region)
15
+ end
16
+
17
+ When(/^I create a bucket$/) do
18
+ create_bucket
19
+ end
20
+
21
+ When(/^I create a bucket with the location constraint "(.*?)"$/) do |loc|
22
+ create_bucket(create_bucket_configuration: {
23
+ location_constraint: loc
24
+ })
25
+ end
26
+
27
+ Then(/^the bucket should have a location constraint of "(.*?)"$/) do |loc|
28
+ resp = @s3.get_bucket_location(bucket: @bucket_name)
29
+ expect(resp.data.location_constraint).to eq(loc)
30
+ end
31
+
32
+ Then(/^the bucket should exist$/) do
33
+ expect { @s3.get_bucket_location(bucket: @bucket_name) }.not_to raise_error
34
+ end
35
+
36
+ When(/^I delete the bucket$/) do
37
+ @s3.delete_bucket(bucket: @bucket_name)
38
+ @created_buckets.delete(@bucket_name)
39
+ end
40
+
41
+ Then(/^the bucket should not exist$/) do
42
+ eventually do
43
+ expect {
44
+ @s3.get_bucket_location(bucket: @bucket_name)
45
+ }.to raise_error(Aws::S3::Errors::NoSuchBucket)
46
+ end
47
+ end
48
+
49
+ When(/^I put nothing to the key "(.*?)"$/) do |key|
50
+ @s3.put_object(bucket: @bucket_name, key: key)
51
+ end
52
+
53
+ When(/^I put "(.*?)" to the key "(.*?)"$/) do |data, key|
54
+ @s3.put_object(bucket: @bucket_name, key: key, body: data)
55
+ end
56
+
57
+ When(/^I put the test png to the key "(.*?)"$/) do |key|
58
+ file = File.open(File.join(File.dirname(__FILE__), 'test.png'), 'rb')
59
+ @s3.put_object(bucket: @bucket_name, key: key, body: file)
60
+ file.close
61
+ end
62
+
63
+ Then(/^the object with the key "(.*?)" should have a content length of (\d+)$/) do |key, size|
64
+ resp = @s3.head_object(bucket: @bucket_name, key: key)
65
+ expect(resp.data.content_length).to eq(size.to_i)
66
+ end
Binary file
@@ -0,0 +1,18 @@
1
+ # language: en
2
+ @sdb @client
3
+ Feature: Amazon SimpleDB
4
+
5
+ Scenario: Making a basic request
6
+ When I call "list_domains" on "sdb"
7
+ Then the response "domain_names" should be an array
8
+
9
+ Scenario: Error handling
10
+ Given I call "domain_metadata" on "sdb" with:
11
+ """
12
+ { domain_name: 'fake-domain' }
13
+ """
14
+ Then I expect the response error code to be "NoSuchDomain"
15
+ And I expect the response error message to include:
16
+ """
17
+ The specified domain does not exist.
18
+ """
@@ -0,0 +1,6 @@
1
+ Before("@sdb") do
2
+ @sdb = Aws.sdb
3
+ end
4
+
5
+ After("@sdb") do
6
+ end
@@ -0,0 +1,18 @@
1
+ # language: en
2
+ @ses @client
3
+ Feature: Amazon Simple Email Service
4
+
5
+ Scenario: Making a basic request
6
+ When I call "list_identities" on "ses"
7
+ Then the response "identities" should be an array
8
+
9
+ Scenario: Error handling
10
+ Given I call "verify_email_identity" on "ses" with:
11
+ """
12
+ { email_address: 'fake_email' }
13
+ """
14
+ Then I expect the response error code to be "InvalidParameterValue"
15
+ And I expect the response error message to include:
16
+ """
17
+ Invalid email address<fake_email>.
18
+ """
@@ -0,0 +1,6 @@
1
+ Before("@ses") do
2
+ @ses = Aws.ses
3
+ end
4
+
5
+ After("@ses") do
6
+ end
@@ -0,0 +1,18 @@
1
+ # language: en
2
+ @sns @client
3
+ Feature: Amazon Simple Notification Service
4
+
5
+ Scenario: Making a basic request
6
+ When I call "list_topics" on "sns"
7
+ Then the response "topics" should be an array
8
+
9
+ Scenario: Error handling
10
+ Given I call "publish" on "sns" with:
11
+ """
12
+ { message: 'hello', topic_arn: 'fake_topic' }
13
+ """
14
+ Then I expect the response error code to be "InvalidParameter"
15
+ And I expect the response error message to include:
16
+ """
17
+ Invalid parameter: TopicArn Reason: fake_topic does not start with arn
18
+ """
@@ -0,0 +1,6 @@
1
+ Before("@sns") do
2
+ @sns = Aws.sns
3
+ end
4
+
5
+ After("@sns") do
6
+ end
@@ -0,0 +1,23 @@
1
+ # language: en
2
+ @sqs @client
3
+ Feature: Amazon Simple Queue Service
4
+
5
+ Scenario: Making a basic request
6
+ When I call "list_queues" on "sqs"
7
+ Then the response "queue_urls" should be an array
8
+
9
+ Scenario: Cross Region Queue Operatoins
10
+ Given I create a queue in "us-west-1"
11
+ When I operate on that queue in "us-west-2"
12
+ Then the request should be made against "us-west-1"
13
+
14
+ Scenario: Error handling
15
+ Given I call "get_queue_url" on "sqs" with:
16
+ """
17
+ { queue_name: 'fake_queue' }
18
+ """
19
+ Then I expect the response error code to be "NonExistentQueue"
20
+ And I expect the response error message to include:
21
+ """
22
+ The specified queue does not exist for this wsdl version.
23
+ """
@@ -0,0 +1,10 @@
1
+ Before("@sqs") do
2
+ @sqs = Aws.sqs
3
+ @sqs_created_queues = []
4
+ end
5
+
6
+ After("@sqs") do
7
+ @sqs_created_queues.each do |url|
8
+ @sqs.delete_delete_queue(queue_url: url)
9
+ end
10
+ end
@@ -0,0 +1,18 @@
1
+ Given(/^I create a queue in "(.*?)"$/) do |region|
2
+ name = "aws-sdk-core-integration-test-#{Time.now.to_i}-#{rand(1000)}"
3
+ resp = Aws.sqs(region: region).create_queue(queue_name: name)
4
+ @queue_url = resp.queue_url
5
+ end
6
+
7
+ When(/^I operate on that queue in "(.*?)"$/) do |region|
8
+ @response = Aws.sqs(region: region).send_message(
9
+ queue_url: @queue_url,
10
+ message_body: 'hello'
11
+ )
12
+ end
13
+
14
+ Then(/^the request should be made against "(.*?)"$/) do |region|
15
+ expect(@response.context.http_request.endpoint.to_s).to include(region)
16
+ end
17
+
18
+
@@ -0,0 +1,18 @@
1
+ # language: en
2
+ @storagegateway @client
3
+ Feature: AWS Storage Gateway
4
+
5
+ Scenario: Making a basic request
6
+ When I call "list_gateways" on "storagegateway"
7
+ Then the response "gateways" should be an array
8
+
9
+ Scenario: Error handling
10
+ Given I call "list_volumes" on "storagegateway" with:
11
+ """
12
+ { gateway_arn: 'fake_gateway' }
13
+ """
14
+ Then I expect the response error code to be "ValidationException"
15
+ And I expect the response error message to include:
16
+ """
17
+ Value 'fake_gateway' at 'gatewayARN' failed to satisfy constraint
18
+ """
@@ -0,0 +1,6 @@
1
+ Before("@storagegateway") do
2
+ @storagegateway = Aws.storagegateway
3
+ end
4
+
5
+ After("@storagegateway") do
6
+ end
@@ -0,0 +1,18 @@
1
+ # language: en
2
+ @sts @client
3
+ Feature: AWS STS
4
+
5
+ Scenario: Making a basic request
6
+ When I call "get_session_token" on "sts"
7
+ Then the response data should include "credentials"
8
+
9
+ Scenario: Error handling
10
+ Given I call "get_federation_token" on "sts" with:
11
+ """
12
+ { name: 'temp', policy: '' }
13
+ """
14
+ Then I expect the response error code to be "ValidationError"
15
+ And I expect the response error message to include:
16
+ """
17
+ Value '' at 'policy' failed to satisfy constraint
18
+ """
@@ -0,0 +1,6 @@
1
+ Before("@sts") do
2
+ @sts = Aws.sts
3
+ end
4
+
5
+ After("@sts") do
6
+ end
@@ -0,0 +1,21 @@
1
+ # language: en
2
+ @swf @client
3
+ Feature: Amazon Simple Workflow Service
4
+
5
+ Scenario: Making a basic request
6
+ When I call "list_domains" on "swf" with:
7
+ """
8
+ { registration_status: 'REGISTERED' }
9
+ """
10
+ Then the response "domain_infos" should be an array
11
+
12
+ Scenario: Error handling
13
+ Given I call "describe_domain" on "swf" with:
14
+ """
15
+ { name: 'fake_domain' }
16
+ """
17
+ Then I expect the response error code to be "UnknownResourceFault"
18
+ And I expect the response error message to include:
19
+ """
20
+ Unknown domain: fake_domain
21
+ """
@@ -0,0 +1,6 @@
1
+ Before("@swf") do
2
+ @swf = Aws.swf
3
+ end
4
+
5
+ After("@swf") do
6
+ end
@@ -0,0 +1,3 @@
1
+ {
2
+ "region": "us-west-2"
3
+ }
@@ -0,0 +1,11 @@
1
+ require 'seahorse'
2
+
3
+ # @api private
4
+ module Seahorse::Model::Shapes
5
+ class FlatMapShape < MapShape; end
6
+ class FlatListShape < ListShape; end
7
+ Shape.register_type flat_map: FlatMapShape
8
+ Shape.register_type flat_list: FlatListShape
9
+ end
10
+
11
+ require_relative 'aws'
@@ -0,0 +1,175 @@
1
+ module Aws
2
+
3
+ # @api private
4
+ GEM_ROOT = File.dirname(File.dirname(__FILE__))
5
+
6
+ @config = {}
7
+
8
+ autoload :Credentials, 'aws/credentials'
9
+ autoload :Errors, 'aws/errors'
10
+ autoload :ErrorHandler, 'aws/error_handler'
11
+ autoload :RequestHandler, 'aws/request_handler'
12
+ autoload :ResponseHandler, 'aws/response_handler'
13
+ autoload :Service, 'aws/service'
14
+ autoload :Structure, 'aws/structure'
15
+ autoload :TimestampFormatter, 'aws/timestamp_formatter'
16
+ autoload :Util, 'aws/util'
17
+ autoload :VERSION, 'aws/version'
18
+
19
+ # @api private
20
+ module Api
21
+ autoload :BaseTranslator, 'aws/api/base_translator'
22
+ autoload :Documentor, 'aws/api/documentor'
23
+ autoload :DocExample, 'aws/api/doc_example'
24
+ autoload :InputShapeTranslator, 'aws/api/shape_translator'
25
+ autoload :OperationTranslator, 'aws/api/operation_translator'
26
+ autoload :OutputShapeTranslator, 'aws/api/shape_translator'
27
+ autoload :ServiceNamer, 'aws/api/service_namer'
28
+ autoload :ShapeTranslator, 'aws/api/shape_translator'
29
+ autoload :Translator, 'aws/api/translator'
30
+ autoload :Visitor, 'aws/api/visitor'
31
+
32
+ module ServiceTranslators
33
+ autoload :CloudFront, 'aws/api/service_translators/cloud_front'
34
+ autoload :DynamoDB, 'aws/api/service_translators/dynamo_db'
35
+ autoload :Glacier, 'aws/api/service_translators/glacier'
36
+ autoload :ImportExport, 'aws/api/service_translators/import_export'
37
+ autoload :Route53, 'aws/api/service_translators/route53'
38
+ autoload :S3, 'aws/api/service_translators/s3'
39
+ autoload :SQS, 'aws/api/service_translators/sqs'
40
+ autoload :SWF, 'aws/api/service_translators/swf'
41
+ end
42
+
43
+ end
44
+
45
+ # @api private
46
+ module Json
47
+ autoload :Builder, 'aws/json/builder'
48
+ autoload :ErrorParser, 'aws/json/error_parser'
49
+ autoload :Parser, 'aws/json/parser'
50
+ autoload :Serializer, 'aws/json/serializer'
51
+ end
52
+
53
+ module Plugins
54
+ autoload :Credentials, 'aws/plugins/credentials'
55
+ autoload :DynamoDBExtendedRetries, 'aws/plugins/dynamodb_extended_retries'
56
+ autoload :GlacierApiVersion, 'aws/plugins/glacier_api_version'
57
+ autoload :GlacierChecksums, 'aws/plugins/glacier_checksums'
58
+ autoload :GlobalConfiguration, 'aws/plugins/global_configuration'
59
+ autoload :JsonProtocol, 'aws/plugins/json_protocol'
60
+ autoload :JsonRpcHeaders, 'aws/plugins/json_rpc_headers'
61
+ autoload :QueryProtocol, 'aws/plugins/query_protocol'
62
+ autoload :RegionalEndpoint, 'aws/plugins/regional_endpoint'
63
+ autoload :RetryErrors, 'aws/plugins/retry_errors'
64
+ autoload :S3BucketDns, 'aws/plugins/s3_bucket_dns'
65
+ autoload :S3CompleteMultipartUploadFix, 'aws/plugins/s3_complete_multipart_upload_fix'
66
+ autoload :S3GetBucketLocationFix, 'aws/plugins/s3_get_bucket_location_fix'
67
+ autoload :S3Md5s, 'aws/plugins/s3_md5s'
68
+ autoload :S3Redirects, 'aws/plugins/s3_redirects'
69
+ autoload :S3Signer, 'aws/plugins/s3_signer'
70
+ autoload :SignatureV2, 'aws/plugins/signature_v2'
71
+ autoload :SignatureV3, 'aws/plugins/signature_v3'
72
+ autoload :SignatureV4, 'aws/plugins/signature_v4'
73
+ autoload :SQSQueueUrls, 'aws/plugins/sqs_queue_urls'
74
+ autoload :SWFReadTimeouts, 'aws/plugins/swf_read_timeouts'
75
+ autoload :UserAgent, 'aws/plugins/user_agent'
76
+ autoload :XmlProtocol, 'aws/plugins/xml_protocol'
77
+ end
78
+
79
+ # @api private
80
+ module Query
81
+ autoload :Builder, 'aws/query/builder'
82
+ autoload :Param, 'aws/query/param'
83
+ autoload :ParamList, 'aws/query/param_list'
84
+ autoload :Serializer, 'aws/query/serializer'
85
+ end
86
+
87
+ # @api private
88
+ module Signers
89
+ autoload :Base, 'aws/signers/base'
90
+ autoload :Handler, 'aws/signers/handler'
91
+ autoload :S3, 'aws/signers/s3'
92
+ autoload :V2, 'aws/signers/v2'
93
+ autoload :V3, 'aws/signers/v3'
94
+ autoload :V4, 'aws/signers/v4'
95
+ end
96
+
97
+ # @api private
98
+ module Xml
99
+ autoload :Builder, 'aws/xml/builder'
100
+ autoload :ErrorParser, 'aws/xml/error_parser'
101
+ autoload :Parser, 'aws/xml/parser'
102
+ autoload :Serializer, 'aws/xml/serializer'
103
+ end
104
+
105
+ class << self
106
+
107
+ # @return [Hash] Returns a hash of default configuration options shared
108
+ # by all constructed clients.
109
+ attr_accessor :config
110
+
111
+ # Adds a plugin to every AWS client class. This registers the plugin
112
+ # with each versioned client for each service.
113
+ # @param [Plugin] plugin
114
+ # @return [void]
115
+ def add_plugin(plugin)
116
+ service_classes.values.each do |svc_class|
117
+ svc_class.add_plugin(plugin)
118
+ end
119
+ end
120
+
121
+ # Removes a plugin to from AWS client class. This removes the plugin
122
+ # from each versioned client for each service.
123
+ # @param [Plugin] plugin
124
+ # @return [void]
125
+ def remove_plugin(plugin)
126
+ service_classes.values.each do |svc_class|
127
+ svc_class.remove_plugin(plugin)
128
+ end
129
+ end
130
+
131
+ # @return [Array<Class>]
132
+ # @api private
133
+ def service_classes
134
+ @service_classes ||= {}
135
+ end
136
+
137
+ # Registers a new service interface. This method accepts a constant
138
+ # (class name) for the new service class and a list of client API
139
+ # versions.
140
+ #
141
+ # Aws.add_servcie(:S3, ['apis/S3-2006-03-01.json'])
142
+ #
143
+ # This method is called for each service defined in the apis directory of
144
+ # this project.
145
+ #
146
+ # @note You should normally not need to call this method directly.
147
+ #
148
+ # @param [Symbol] name The name of the new service class.
149
+ # @param [Array<String, Seahorse::Model::Api>] apis
150
+ # @return [Class<Service>]
151
+ def add_service(name, apis = [])
152
+ svc_class = const_set(name, Service.define(name.downcase.to_sym, apis))
153
+ service_classes[svc_class.identifier] = svc_class
154
+ self.class.send(:define_method, svc_class.identifier) do |options = {}|
155
+ svc_class.new(options)
156
+ end
157
+ svc_class
158
+ end
159
+
160
+ private
161
+
162
+ # @return Returns a hash of API paths grouped by their service class names.
163
+ def bundled_apis
164
+ Dir.glob(File.join(GEM_ROOT, 'apis', '*.json')).group_by do |path|
165
+ File.basename(path).split('-').first
166
+ end
167
+ end
168
+
169
+ end
170
+
171
+ bundled_apis.each do |svc_class_name, api_versions|
172
+ add_service(svc_class_name, api_versions)
173
+ end
174
+
175
+ end