aws-sdk 2.0.1 → 2.0.5

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 (251) hide show
  1. package/.eslintrc +20 -0
  2. package/.gitignore +10 -0
  3. package/.travis.yml +20 -0
  4. package/.yardopts +20 -0
  5. package/.yardopts_guide +21 -0
  6. package/Gemfile +16 -0
  7. package/Gemfile.lock +34 -0
  8. package/README.md +5 -6
  9. package/Rakefile +14 -0
  10. package/UPGRADING.md +9 -4
  11. package/configuration.sample +5 -0
  12. package/dist/BUNDLE_LICENSE.txt +96 -0
  13. package/dist/aws-sdk.js +9594 -0
  14. package/dist/aws-sdk.min.js +21 -0
  15. package/dist-tools/.eslintrc +10 -0
  16. package/dist-tools/browser-builder.js +142 -0
  17. package/dist-tools/strategies/cache.js +68 -0
  18. package/dist-tools/strategies/default.js +165 -0
  19. package/dist-tools/test/browser-builder.mocha.spec.coffee +182 -0
  20. package/dist-tools/test/helpers.coffee +16 -0
  21. package/doc-src/guide/browser-building.md +93 -0
  22. package/doc-src/guide/browser-configuring-wif.md +287 -0
  23. package/doc-src/guide/browser-configuring.md +218 -0
  24. package/doc-src/guide/browser-examples.md +220 -0
  25. package/doc-src/guide/browser-intro.md +46 -0
  26. package/doc-src/guide/browser-making-requests.md +279 -0
  27. package/doc-src/guide/browser-services.md +75 -0
  28. package/doc-src/guide/index.md +41 -0
  29. package/doc-src/guide/node-configuring.md +272 -0
  30. package/doc-src/guide/node-examples.md +341 -0
  31. package/doc-src/guide/node-intro.md +32 -0
  32. package/doc-src/guide/node-making-requests.md +309 -0
  33. package/doc-src/guide/node-services.md +159 -0
  34. package/doc-src/templates/api-versions/model_documentor.rb +366 -0
  35. package/doc-src/templates/api-versions/plugin.rb +230 -0
  36. package/doc-src/templates/api-versions/templates/default/class/html/setup.rb +9 -0
  37. package/doc-src/templates/api-versions/templates/default/class/html/waiter_details_list.erb +7 -0
  38. package/doc-src/templates/api-versions/templates/default/class/html/waiter_summary.erb +7 -0
  39. package/doc-src/templates/api-versions/templates/default/docstring/html/experimental.erb +4 -0
  40. package/doc-src/templates/api-versions/templates/default/docstring/setup.rb +9 -0
  41. package/doc-src/templates/api-versions/templates/default/fulldoc/html/css/common.css +6 -0
  42. package/doc-src/templates/api-versions/templates/default/fulldoc/html/setup.rb +62 -0
  43. package/doc-src/templates/api-versions/templates/default/layout/html/services.erb +10 -0
  44. package/doc-src/templates/api-versions/templates/default/layout/html/setup.rb +28 -0
  45. package/doc-src/templates/api-versions/templates/default/module/html/box_info.erb +45 -0
  46. package/doc-src/templates/api-versions/templates/default/module/html/children.erb +8 -0
  47. package/doc-src/templates/api-versions/templates/default/tags/setup.rb +3 -0
  48. package/doc-src/templates/api-versions/templates/default/waiter_details/html/method_signature.erb +3 -0
  49. package/doc-src/templates/api-versions/templates/default/waiter_details/html/setup.rb +5 -0
  50. package/doc-src/templates/default/layout/html/footer.erb +31 -0
  51. package/doc-src/templates/default/layout/html/layout.erb +23 -0
  52. package/doc-src/templates/flasky_sphinx_guide/fulldoc/html/css/highlight.github.css +127 -0
  53. package/doc-src/templates/flasky_sphinx_guide/fulldoc/html/css/style.css +1192 -0
  54. package/doc-src/templates/flasky_sphinx_guide/fulldoc/html/img/logo.png +0 -0
  55. package/doc-src/templates/flasky_sphinx_guide/fulldoc/html/js/app.js +33 -0
  56. package/doc-src/templates/flasky_sphinx_guide/fulldoc/html/js/highlight.pack.js +27 -0
  57. package/doc-src/templates/flasky_sphinx_guide/fulldoc/html/js/sphinx/AUTHORS +55 -0
  58. package/doc-src/templates/flasky_sphinx_guide/fulldoc/html/js/sphinx/LICENSE +25 -0
  59. package/doc-src/templates/flasky_sphinx_guide/fulldoc/html/js/sphinx/doctools.js +247 -0
  60. package/doc-src/templates/flasky_sphinx_guide/fulldoc/html/js/sphinx/file.png +0 -0
  61. package/doc-src/templates/flasky_sphinx_guide/fulldoc/html/js/sphinx/searchtools.js +568 -0
  62. package/doc-src/templates/flasky_sphinx_guide/fulldoc/html/js/underscore.js +23 -0
  63. package/doc-src/templates/flasky_sphinx_guide/fulldoc/html/search.erb +29 -0
  64. package/doc-src/templates/flasky_sphinx_guide/fulldoc/html/search_index.erb +1 -0
  65. package/doc-src/templates/flasky_sphinx_guide/fulldoc/html/setup.rb +75 -0
  66. package/doc-src/templates/flasky_sphinx_guide/layout/html/layout.erb +93 -0
  67. package/doc-src/templates/flasky_sphinx_guide/layout/html/setup.rb +9 -0
  68. package/doc-src/templates/flasky_sphinx_guide/layout/html/sidebar.erb +45 -0
  69. package/doc-src/templates/flasky_sphinx_guide/onefile/html/layout.erb +51 -0
  70. package/doc-src/templates/flasky_sphinx_guide/onefile/html/setup.rb +1 -0
  71. package/eslint-rules/no-require-in-service.js +10 -0
  72. package/features/autoscaling/autoscaling.feature +21 -0
  73. package/features/autoscaling/step_definitions/autoscaling.js +49 -0
  74. package/features/cloudformation/cloudformation.feature +22 -0
  75. package/features/cloudformation/step_definitions/cloudformation.js +26 -0
  76. package/features/cloudfront/cloudfront.feature +28 -0
  77. package/features/cloudfront/step_definitions/cloudfront-latest.js +54 -0
  78. package/features/cloudfront/step_definitions/cloudfront.js +21 -0
  79. package/features/cloudsearch/cloudsearch.feature +34 -0
  80. package/features/cloudsearch/step_definitions/cloudsearch.js +42 -0
  81. package/features/cloudtrail/cloudtrail.feature +17 -0
  82. package/features/cloudtrail/step_definitions/cloudtrail.js +14 -0
  83. package/features/cloudwatch/cloudwatch.feature +15 -0
  84. package/features/cloudwatch/step_definitions/cloudwatch.js +48 -0
  85. package/features/datapipeline/datapipeline.feature +23 -0
  86. package/features/datapipeline/step_definitions/datapipeline.js +79 -0
  87. package/features/directconnect/directconnect.feature +20 -0
  88. package/features/directconnect/step_definitions/directconnect.js +44 -0
  89. package/features/dynamodb/crc32.feature +18 -0
  90. package/features/dynamodb/step_definitions/dynamodb.js +154 -0
  91. package/features/dynamodb/tables.feature +50 -0
  92. package/features/ec2/ec2.feature +28 -0
  93. package/features/ec2/step_definitions/ec2.js +65 -0
  94. package/features/elasticache/elasticache.feature +20 -0
  95. package/features/elasticache/step_definitions/elasticache.js +34 -0
  96. package/features/elasticbeanstalk/elasticbeanstalk.feature +22 -0
  97. package/features/elasticbeanstalk/step_definitions/elasticbeanstalk.js +38 -0
  98. package/features/elastictranscoder/elastictranscoder.feature +24 -0
  99. package/features/elastictranscoder/step_definitions/elastictranscoder.js +56 -0
  100. package/features/elb/elb.feature +19 -0
  101. package/features/elb/step_definitions/elb.js +37 -0
  102. package/features/emr/emr.feature +16 -0
  103. package/features/emr/step_definitions/emr.js +45 -0
  104. package/features/extra/assertions.js +29 -0
  105. package/features/extra/dummy.feature +0 -0
  106. package/features/extra/fixtures/testfile.txt +1 -0
  107. package/features/extra/helpers.js +113 -0
  108. package/features/extra/hooks.js +107 -0
  109. package/features/extra/world.js +12 -0
  110. package/features/glacier/glacier.feature +47 -0
  111. package/features/glacier/step_definitions/glacier.js +112 -0
  112. package/features/iam/iam.feature +24 -0
  113. package/features/iam/step_definitions/iam.js +66 -0
  114. package/features/importexport/importexport.feature +53 -0
  115. package/features/importexport/step_definitions/importexport.js +42 -0
  116. package/features/kinesis/kinesis.feature +9 -0
  117. package/features/kinesis/step_definitions/kinesis.js +10 -0
  118. package/features/opsworks/opsworks.feature +26 -0
  119. package/features/opsworks/step_definitions/opsworks.js +42 -0
  120. package/features/rds/rds.feature +32 -0
  121. package/features/rds/step_definitions/rds.js +72 -0
  122. package/features/redshift/redshift.feature +20 -0
  123. package/features/redshift/step_definitions/redshift.js +33 -0
  124. package/features/route53/route53.feature +41 -0
  125. package/features/route53/step_definitions/route53.js +97 -0
  126. package/features/s3/buckets.feature +40 -0
  127. package/features/s3/objects.feature +122 -0
  128. package/features/s3/step_definitions/buckets.js +136 -0
  129. package/features/s3/step_definitions/hooks.js +39 -0
  130. package/features/s3/step_definitions/objects.js +204 -0
  131. package/features/s3/step_definitions/proxy.js +44 -0
  132. package/features/ses/ses.feature +20 -0
  133. package/features/ses/step_definitions/ses.js +22 -0
  134. package/features/simpledb/simpledb.feature +29 -0
  135. package/features/simpledb/step_definitions/simpledb.js +46 -0
  136. package/features/sns/sns.feature +15 -0
  137. package/features/sns/step_definitions/sns.js +33 -0
  138. package/features/sqs/messages.feature +21 -0
  139. package/features/sqs/queues.feature +18 -0
  140. package/features/sqs/step_definitions/messages.js +46 -0
  141. package/features/sqs/step_definitions/queues.js +33 -0
  142. package/features/sqs/step_definitions/sqs.js +7 -0
  143. package/features/storagegateway/step_definitions/storagegateway.js +16 -0
  144. package/features/storagegateway/storagegateway.feature +13 -0
  145. package/features/sts/step_definitions/sts.js +35 -0
  146. package/features/sts/sts.feature +29 -0
  147. package/features/support/step_definitions/support.js +35 -0
  148. package/features/support/support.feature +18 -0
  149. package/features/swf/step_definitions/swf.js +38 -0
  150. package/features/swf/swf.feature +15 -0
  151. package/index.js +2 -0
  152. package/lib/core.js +2 -2
  153. package/lib/credentials/shared_ini_file_credentials.js +0 -1
  154. package/lib/event_listeners.js +13 -1
  155. package/lib/http/node.js +19 -30
  156. package/lib/model/resource_waiter.js +0 -4
  157. package/lib/model/shape.js +2 -1
  158. package/lib/protocol/rest_xml.js +1 -1
  159. package/lib/region_config.js +31 -0
  160. package/lib/region_config.json +56 -0
  161. package/lib/request.js +37 -45
  162. package/lib/sequential_executor.js +17 -34
  163. package/lib/service.js +17 -44
  164. package/lib/services/cloudsearchdomain.js +69 -0
  165. package/lib/services/route53.js +0 -12
  166. package/lib/services/s3.js +3 -19
  167. package/lib/signers/v4.js +2 -1
  168. package/lib/util.js +28 -3
  169. package/package.json +3 -3
  170. package/scripts/console +11 -3
  171. package/scripts/coverage +126 -0
  172. package/tasks/apis.rake +122 -0
  173. package/tasks/browser.rake +89 -0
  174. package/tasks/docs.rake +36 -0
  175. package/tasks/lib/cucumber_generator.rb +40 -0
  176. package/tasks/util.rake +33 -0
  177. package/test/browser/js/jasmine-1.3.1.js +2600 -0
  178. package/test/browser/js/jasmine-html.js +681 -0
  179. package/test/browser/runner.html +109 -0
  180. package/test/browser/runner.js +92 -0
  181. package/test/browser/sample/appinfo.sample.js +15 -0
  182. package/test/browser/sample/console.html +429 -0
  183. package/test/browser/sample/css/smoothness/images/animated-overlay.gif +0 -0
  184. package/test/browser/sample/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  185. package/test/browser/sample/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  186. package/test/browser/sample/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  187. package/test/browser/sample/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  188. package/test/browser/sample/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  189. package/test/browser/sample/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  190. package/test/browser/sample/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  191. package/test/browser/sample/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  192. package/test/browser/sample/css/smoothness/images/ui-icons_222222_256x240.png +0 -0
  193. package/test/browser/sample/css/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  194. package/test/browser/sample/css/smoothness/images/ui-icons_454545_256x240.png +0 -0
  195. package/test/browser/sample/css/smoothness/images/ui-icons_888888_256x240.png +0 -0
  196. package/test/browser/sample/css/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  197. package/test/browser/sample/css/smoothness/jquery-ui-1.10.1.custom.css +1175 -0
  198. package/test/browser/sample/css/smoothness/jquery-ui-1.10.1.custom.min.css +5 -0
  199. package/test/browser/sample/img/loading.gif +0 -0
  200. package/test/browser/sample/js/jquery-1.9.1.js +9597 -0
  201. package/test/browser/sample/js/jquery-ui-1.10.1.custom.js +14903 -0
  202. package/test/browser/sample/js/jquery-ui-1.10.1.custom.min.js +6 -0
  203. package/test/browser/sample/s3upload.html +111 -0
  204. package/test/browser.spec.coffee +207 -0
  205. package/test/config.spec.coffee +202 -0
  206. package/test/credential_provider_chain.spec.coffee +90 -0
  207. package/test/credentials.spec.coffee +452 -0
  208. package/test/endpoint.spec.coffee +80 -0
  209. package/test/event_listeners.spec.coffee +493 -0
  210. package/test/helpers.coffee +150 -0
  211. package/test/http_request.spec.coffee +55 -0
  212. package/test/json/builder.spec.coffee +129 -0
  213. package/test/json/parser.spec.coffee +108 -0
  214. package/test/metadata_service.spec.coffee +54 -0
  215. package/test/model/api.spec.coffee +67 -0
  216. package/test/model/shape.spec.coffee +23 -0
  217. package/test/node_http_client.spec.coffee +40 -0
  218. package/test/param_validator.spec.coffee +456 -0
  219. package/test/protocol/json.spec.coffee +167 -0
  220. package/test/protocol/query.spec.coffee +191 -0
  221. package/test/protocol/rest.spec.coffee +237 -0
  222. package/test/protocol/rest_json.spec.coffee +255 -0
  223. package/test/protocol/rest_xml.spec.coffee +329 -0
  224. package/test/query/query_param_serializer.spec.coffee +327 -0
  225. package/test/region_config.spec.coffee +50 -0
  226. package/test/request.spec.coffee +316 -0
  227. package/test/resource_waiter.spec.coffee +89 -0
  228. package/test/response.spec.coffee +81 -0
  229. package/test/sequential_executor.spec.coffee +118 -0
  230. package/test/service.spec.coffee +230 -0
  231. package/test/services/cloudfront.spec.coffee +44 -0
  232. package/test/services/cloudsearchdomain.spec.coffee +23 -0
  233. package/test/services/dynamodb.spec.coffee +32 -0
  234. package/test/services/ec2.spec.coffee +78 -0
  235. package/test/services/elastictranscoder.spec.coffee +43 -0
  236. package/test/services/glacier.spec.coffee +61 -0
  237. package/test/services/rds.spec.coffee +38 -0
  238. package/test/services/route53.spec.coffee +77 -0
  239. package/test/services/s3.spec.coffee +538 -0
  240. package/test/services/simpledb.spec.coffee +12 -0
  241. package/test/services/sqs.spec.coffee +130 -0
  242. package/test/services/sts.spec.coffee +72 -0
  243. package/test/services/swf.spec.coffee +6 -0
  244. package/test/signers/presign.spec.coffee +36 -0
  245. package/test/signers/s3.spec.coffee +297 -0
  246. package/test/signers/v2.spec.coffee +68 -0
  247. package/test/signers/v4.spec.coffee +135 -0
  248. package/test/util.spec.coffee +510 -0
  249. package/test/xml/builder.spec.coffee +529 -0
  250. package/test/xml/parser.spec.coffee +587 -0
  251. package/lib/services/simpledb.js +0 -15
@@ -0,0 +1,109 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>AWS SDK for JavaScript - Browser Tests</title>
6
+ <style>
7
+ body { background-color: #eeeeee; padding: 0; margin: 5px; overflow-y: scroll; }
8
+
9
+ #HTMLReporter { font-size: 11px; font-family: Monaco, "Lucida Console", monospace; line-height: 14px; color: #333333; }
10
+ #HTMLReporter a { text-decoration: none; }
11
+ #HTMLReporter a:hover { text-decoration: underline; }
12
+ #HTMLReporter p, #HTMLReporter h1, #HTMLReporter h2, #HTMLReporter h3, #HTMLReporter h4, #HTMLReporter h5, #HTMLReporter h6 { margin: 0; line-height: 14px; }
13
+ #HTMLReporter .banner, #HTMLReporter .symbolSummary, #HTMLReporter .summary, #HTMLReporter .resultMessage, #HTMLReporter .specDetail .description, #HTMLReporter .alert .bar, #HTMLReporter .stackTrace { padding-left: 9px; padding-right: 9px; }
14
+ #HTMLReporter #jasmine_content { position: fixed; right: 100%; }
15
+ #HTMLReporter .version { color: #aaaaaa; }
16
+ #HTMLReporter .banner { margin-top: 14px; }
17
+ #HTMLReporter .duration { color: #aaaaaa; float: right; }
18
+ #HTMLReporter .symbolSummary { overflow: hidden; *zoom: 1; margin: 14px 0; }
19
+ #HTMLReporter .symbolSummary li { display: block; float: left; height: 7px; width: 14px; margin-bottom: 7px; font-size: 16px; }
20
+ #HTMLReporter .symbolSummary li.passed { font-size: 14px; }
21
+ #HTMLReporter .symbolSummary li.passed:before { color: #5e7d00; content: "\02022"; }
22
+ #HTMLReporter .symbolSummary li.failed { line-height: 9px; }
23
+ #HTMLReporter .symbolSummary li.failed:before { color: #b03911; content: "x"; font-weight: bold; margin-left: -1px; }
24
+ #HTMLReporter .symbolSummary li.skipped { font-size: 14px; }
25
+ #HTMLReporter .symbolSummary li.skipped:before { color: #bababa; content: "\02022"; }
26
+ #HTMLReporter .symbolSummary li.pending { line-height: 11px; }
27
+ #HTMLReporter .symbolSummary li.pending:before { color: #aaaaaa; content: "-"; }
28
+ #HTMLReporter .exceptions { color: #fff; float: right; margin-top: 5px; margin-right: 5px; }
29
+ #HTMLReporter .bar { line-height: 28px; font-size: 14px; display: block; color: #eee; }
30
+ #HTMLReporter .runningAlert { background-color: #666666; }
31
+ #HTMLReporter .skippedAlert { background-color: #aaaaaa; }
32
+ #HTMLReporter .skippedAlert:first-child { background-color: #333333; }
33
+ #HTMLReporter .skippedAlert:hover { text-decoration: none; color: white; text-decoration: underline; }
34
+ #HTMLReporter .passingAlert { background-color: #a6b779; }
35
+ #HTMLReporter .passingAlert:first-child { background-color: #5e7d00; }
36
+ #HTMLReporter .failingAlert { background-color: #cf867e; }
37
+ #HTMLReporter .failingAlert:first-child { background-color: #b03911; }
38
+ #HTMLReporter .results { margin-top: 14px; }
39
+ #HTMLReporter #details { display: none; }
40
+ #HTMLReporter .resultsMenu, #HTMLReporter .resultsMenu a { background-color: #fff; color: #333333; }
41
+ #HTMLReporter.showDetails .summaryMenuItem { font-weight: normal; text-decoration: inherit; }
42
+ #HTMLReporter.showDetails .summaryMenuItem:hover { text-decoration: underline; }
43
+ #HTMLReporter.showDetails .detailsMenuItem { font-weight: bold; text-decoration: underline; }
44
+ #HTMLReporter.showDetails .summary { display: none; }
45
+ #HTMLReporter.showDetails #details { display: block; }
46
+ #HTMLReporter .summaryMenuItem { font-weight: bold; text-decoration: underline; }
47
+ #HTMLReporter .summary { margin-top: 14px; }
48
+ #HTMLReporter .summary .suite .suite, #HTMLReporter .summary .specSummary { margin-left: 14px; }
49
+ #HTMLReporter .summary .specSummary.passed a { color: #5e7d00; }
50
+ #HTMLReporter .summary .specSummary.failed a { color: #b03911; }
51
+ #HTMLReporter .description + .suite { margin-top: 0; }
52
+ #HTMLReporter .suite { margin-top: 14px; }
53
+ #HTMLReporter .suite a { color: #333333; }
54
+ #HTMLReporter #details .specDetail { margin-bottom: 28px; }
55
+ #HTMLReporter #details .specDetail .description { display: block; color: white; background-color: #b03911; }
56
+ #HTMLReporter .resultMessage { padding-top: 14px; color: #333333; }
57
+ #HTMLReporter .resultMessage span.result { display: block; }
58
+ #HTMLReporter .stackTrace { margin: 5px 0 0 0; max-height: 224px; overflow: auto; line-height: 18px; color: #666666; border: 1px solid #ddd; background: white; white-space: pre; }
59
+
60
+ #TrivialReporter { padding: 8px 13px; position: absolute; top: 0; bottom: 0; left: 0; right: 0; overflow-y: scroll; background-color: white; font-family: "Helvetica Neue Light", "Lucida Grande", "Calibri", "Arial", sans-serif; /*.resultMessage {*/ /*white-space: pre;*/ /*}*/ }
61
+ #TrivialReporter a:visited, #TrivialReporter a { color: #303; }
62
+ #TrivialReporter a:hover, #TrivialReporter a:active { color: blue; }
63
+ #TrivialReporter .run_spec { float: right; padding-right: 5px; font-size: .8em; text-decoration: none; }
64
+ #TrivialReporter .banner { color: #303; background-color: #fef; padding: 5px; }
65
+ #TrivialReporter .logo { float: left; font-size: 1.1em; padding-left: 5px; }
66
+ #TrivialReporter .logo .version { font-size: .6em; padding-left: 1em; }
67
+ #TrivialReporter .runner.running { background-color: yellow; }
68
+ #TrivialReporter .options { text-align: right; font-size: .8em; }
69
+ #TrivialReporter .suite { border: 1px outset gray; margin: 5px 0; padding-left: 1em; }
70
+ #TrivialReporter .suite .suite { margin: 5px; }
71
+ #TrivialReporter .suite.passed { background-color: #dfd; }
72
+ #TrivialReporter .suite.failed { background-color: #fdd; }
73
+ #TrivialReporter .spec { margin: 5px; padding-left: 1em; clear: both; }
74
+ #TrivialReporter .spec.failed, #TrivialReporter .spec.passed, #TrivialReporter .spec.skipped { padding-bottom: 5px; border: 1px solid gray; }
75
+ #TrivialReporter .spec.failed { background-color: #fbb; border-color: red; }
76
+ #TrivialReporter .spec.passed { background-color: #bfb; border-color: green; }
77
+ #TrivialReporter .spec.skipped { background-color: #bbb; }
78
+ #TrivialReporter .messages { border-left: 1px dashed gray; padding-left: 1em; padding-right: 1em; }
79
+ #TrivialReporter .passed { background-color: #cfc; display: none; }
80
+ #TrivialReporter .failed { background-color: #fbb; }
81
+ #TrivialReporter .skipped { color: #777; background-color: #eee; display: none; }
82
+ #TrivialReporter .resultMessage span.result { display: block; line-height: 2em; color: black; }
83
+ #TrivialReporter .resultMessage .mismatch { color: black; }
84
+ #TrivialReporter .stackTrace { white-space: pre; font-size: .8em; margin-left: 10px; max-height: 5em; overflow: auto; border: 1px inset red; padding: 1em; background: #eef; }
85
+ #TrivialReporter .finished-at { padding-left: 1em; font-size: .6em; }
86
+ #TrivialReporter.show-passed .passed, #TrivialReporter.show-skipped .skipped { display: block; }
87
+ #TrivialReporter #jasmine_content { position: fixed; right: 100%; }
88
+ #TrivialReporter .runner { border: 1px solid gray; display: block; margin: 5px 0; padding: 2px 0 2px 10px; }
89
+ </style>
90
+ <script type="text/javascript" src="js/jasmine-1.3.1.js"></script>
91
+ <script type="text/javascript" src="js/jasmine-html.js"></script>
92
+ <script src="/testem.js"></script>
93
+ <script type="text/javascript" src="build/aws-sdk-all.js"></script>
94
+ <script type="text/javascript" src="build/tests.js" charset="UTF-8"></script>
95
+ <script type="text/javascript" charset="UTF-8">
96
+ window.addEventListener('load', function() {
97
+ var htmlReporter = new jasmine.HtmlReporter();
98
+ jasmine.getEnv().addReporter(htmlReporter);
99
+ jasmine.getEnv().specFilter = function(spec) {
100
+ return htmlReporter.specFilter(spec);
101
+ };
102
+ jasmine.getEnv().execute();
103
+ });
104
+ </script>
105
+ </head>
106
+ <body>
107
+
108
+ </body>
109
+ </html>
@@ -0,0 +1,92 @@
1
+ var system = require('system');
2
+
3
+ function waitFor(testFx, onReady, timeOutMillis) {
4
+ var maxtimeOutMillis = timeOutMillis ? timeOutMillis : 30000,
5
+ start = new Date().getTime(),
6
+ condition = false,
7
+ interval = setInterval(function() {
8
+ if ( (new Date().getTime() - start < maxtimeOutMillis) && !condition ) {
9
+ condition = (typeof(testFx) === "string" ? eval(testFx) : testFx());
10
+ } else {
11
+ if(!condition) {
12
+ console.log("'waitFor()' timeout");
13
+ phantom.exit(1);
14
+ } else {
15
+ typeof(onReady) === "string" ? eval(onReady) : onReady();
16
+ clearInterval(interval);
17
+ }
18
+ }
19
+ }, 100);
20
+ };
21
+
22
+ var page = require('webpage').create();
23
+
24
+ page.onConsoleMessage = function(msg) {
25
+ console.log(msg);
26
+ };
27
+
28
+ page.open(system.args[1] || 'test/browser/runner.html', function(status){
29
+ if (status !== "success") {
30
+ console.log("Unable to access network");
31
+ phantom.exit();
32
+ } else {
33
+ var index = 0;
34
+ function printStatus() {
35
+ var items = page.evaluate(function() {
36
+ var symbols = document.body.querySelectorAll('.symbolSummary li');
37
+ if (!symbols) return null;
38
+
39
+ var classes = [];
40
+ for (var i = 0; i < symbols.length; i++) {
41
+ classes.push(symbols[i].className);
42
+ }
43
+ return classes;
44
+ });
45
+
46
+ if (!items) return;
47
+ for (; index < items.length; index++) {
48
+ if (items[index] === 'pending') break;
49
+ var item = '';
50
+ switch (items[index]) {
51
+ case 'skipped': item = ''; break;
52
+ case 'passed': item = '.'; break;
53
+ case 'failed': item = 'X'; break;
54
+ }
55
+ system.stdout.write(item);
56
+ }
57
+ }
58
+
59
+ var interval = setInterval(printStatus, 10);
60
+
61
+ waitFor(function(){
62
+ return page.evaluate(function(){
63
+ return document.body.querySelector('.symbolSummary .pending') === null;
64
+ });
65
+ }, function(){
66
+ clearInterval(interval);
67
+ var exitCode = page.evaluate(function(){
68
+ console.log('');
69
+ console.log('');
70
+ var list = document.body.querySelectorAll('.results > #details > .specDetail.failed');
71
+ if (list && list.length > 0) {
72
+ console.log('');
73
+ console.log(list.length + ' test(s) FAILED:');
74
+ for (i = 0; i < list.length; ++i) {
75
+ var el = list[i],
76
+ desc = el.querySelector('.description'),
77
+ msg = el.querySelector('.resultMessage.fail');
78
+ console.log('');
79
+ console.log(desc.innerText);
80
+ console.log(msg.innerText);
81
+ console.log('');
82
+ }
83
+ return 1;
84
+ } else {
85
+ console.log(document.body.querySelector('.alert > .passingAlert.bar').innerText);
86
+ return 0;
87
+ }
88
+ });
89
+ phantom.exit(exitCode);
90
+ });
91
+ }
92
+ });
@@ -0,0 +1,15 @@
1
+ // Fill these in with your application details
2
+ appInfo = {
3
+ amazon: {
4
+ appId: '...',
5
+ roleArn: '...'
6
+ },
7
+ facebook: {
8
+ appId: '...',
9
+ roleArn: '...'
10
+ },
11
+ google: {
12
+ appId: '...',
13
+ roleArn: '...'
14
+ }
15
+ };
@@ -0,0 +1,429 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>AWS SDK for JavaScript - Console</title>
5
+ <link rel="stylesheet" href="css/smoothness/jquery-ui-1.10.1.custom.css" />
6
+ <style type="text/css">
7
+ body { font-family: Helvetica, Arial, sans-serif; font-size: 9pt; }
8
+ .padding { padding: 12px; }
9
+ #header { background: #eee; font-size: 1.2em; }
10
+ .selectorControl * { height: 200px; }
11
+ #operationSelector { border: 1px solid #ccc; }
12
+ #operationSelector h3 { padding: 0; margin-top: 0; }
13
+ #serviceSelector { width: 20%; }
14
+ #operationSelector { width: 20%; }
15
+ #operationData { width: 50%; position: relative; top: 7px; font-family: Monaco, fixed; }
16
+ .tableOutput { width: 100%; overflow: scroll; }
17
+ .history-entry { margin-bottom: 12px; }
18
+ .history-entry pre.output { background: #eee; border: 1px solid #ccc; overflow: scroll; height: 300px; }
19
+ .grid { clear: right; }
20
+ .halfwidth { float: left; width: 48%; margin-right: 6px; }
21
+ .halfwidth:last-child { margin-right: 0px; }
22
+ .break { clear: both; }
23
+ table, th, td { border: 1px solid #ccc; border-collapse: collapse; vertical-align: top; }
24
+
25
+ #login-buttons { float: right; }
26
+
27
+ /* jquery-ui overrides */
28
+ :focus { outline-width: 0; }
29
+ </style>
30
+ <script type="text/javascript" src="js/jquery-1.9.1.js"></script>
31
+ <script type="text/javascript" src="js/jquery-ui-1.10.1.custom.min.js"></script>
32
+ <script type="text/javascript" src="../../../dist/aws-sdk-all.js"></script>
33
+ <script type="text/javascript" src="appinfo.js"></script>
34
+ <script type="text/template" id="template-historyEntry">
35
+ <div id="history-{entry}" class="history-entry">
36
+ <ul>
37
+ <li>
38
+ <a href="#history-tab-{entry}">
39
+ <img src="img/loading.gif"/>
40
+ {service}.{operation}() &mdash; {date}
41
+ </a>
42
+ </li>
43
+ <li><a href="#history-details-tab-{entry}">Details</a></li>
44
+ <li><a href="#history-table-tab-{entry}">Tabular (Experimental)</a></li>
45
+ </ul>
46
+ <div id="history-tab-{entry}">
47
+ <div class="grid">
48
+ <div class="halfwidth">
49
+ <h3>Response</h3>
50
+ <pre class="padding output operationResponse"></pre>
51
+ </div>
52
+ <div class="halfwidth">
53
+ <h3>Request</h3>
54
+ <pre class="padding output operationRequest"></pre>
55
+ </div>
56
+ </div>
57
+ <div class="break"></div>
58
+ </div>
59
+ <div id="history-details-tab-{entry}">
60
+ <div class="grid">
61
+ <div class="halfwidth">
62
+ <h3>Request Details</h3>
63
+ <pre class="padding output operationRequestDetails"></pre>
64
+ </div>
65
+ <div class="halfwidth">
66
+ <h3>Response Details</h3>
67
+ <pre class="padding output operationResponseDetails"></pre>
68
+ </div>
69
+ </div>
70
+ <div class="break"></div>
71
+ </div>
72
+ <div id="history-table-tab-{entry}">
73
+ <div class="tableOutput"></div>
74
+ </div>
75
+ </div>
76
+ </script>
77
+ <script type="text/javascript">
78
+ services = {};
79
+ currentServiceVar = null;
80
+ currentService = null;
81
+ currentOperation = null;
82
+ data = null;
83
+ error = null;
84
+ response = null;
85
+ requestCount = 0;
86
+
87
+ function s4() {
88
+ return Math.floor((1 + Math.random()) * 0x10000)
89
+ .toString(16)
90
+ .substring(1);
91
+ };
92
+
93
+ function guid() {
94
+ return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
95
+ s4() + '-' + s4() + s4() + s4();
96
+ }
97
+
98
+ /**
99
+ * Turns a JS object into a table representation using a set of hints
100
+ * to detect the key/value structure.
101
+ *
102
+ * Assume EC2 for now
103
+ */
104
+ function tableView(items, resultKey) {
105
+ var table = $('<table/>').attr('cellpadding', 5);
106
+
107
+ // transposed table for structures
108
+ if (!Array.isArray(items)) {
109
+ for (var key in items) {
110
+ var row = $('<tr/>');
111
+ $('<th/>').text(key).appendTo(row);
112
+ $('<td/>').text(items[key]).appendTo(row);
113
+ row.appendTo(table);
114
+ }
115
+ return table;
116
+ }
117
+
118
+ if (items.length === 0) return '';
119
+ var i;
120
+ // first build the headers
121
+ var row = $('<tr/>');
122
+ var keys = typeof items[0] === 'object' ? Object.keys(items[0]) : [resultKey];
123
+ for (i = 0; i < keys.length; i++) {
124
+ $('<th/>').text(keys[i]).appendTo(row);
125
+ }
126
+ row.appendTo(table);
127
+
128
+ for (i = 0; i < items.length; i++) {
129
+ row = $('<tr/>');
130
+ if (typeof items[i] === 'object') {
131
+ for (var key in items[i]) {
132
+ var value = items[i][key];
133
+ if (typeof value === 'object') { // complex type
134
+ value = tableView(value);
135
+ }
136
+ $('<td/>').html(value).appendTo(row);
137
+ }
138
+ } else {
139
+ $('<td/>').html(items[i]).appendTo(row);
140
+ }
141
+ row.appendTo(table);
142
+ }
143
+
144
+ return table;
145
+ }
146
+
147
+ function loadOperationsForService(svc) {
148
+ if (currentServiceVar === svc) return;
149
+ currentServiceVar = svc;
150
+ currentService = services[svc];
151
+
152
+ $('#operationSelector').empty();
153
+ for (var key in currentService.api.operations) {
154
+ var el = $('<option/>').attr('value', key).text(key);
155
+ $('#operationSelector').append(el).change(function() {
156
+ loadOperation($(this).val());
157
+ });
158
+ }
159
+ }
160
+
161
+ function loadOperation(operation) {
162
+ if (currentOperation === operation) return;
163
+ currentOperation = operation;
164
+
165
+ var input = currentService.api.operations[operation].input.members;
166
+ $('#operationData').val(JSON.stringify(input, null, 2));
167
+ }
168
+
169
+ function loadServices() {
170
+ $('#serviceSelector').empty();
171
+ for (var key in AWS) {
172
+ if (!AWS[key].prototype) continue;
173
+ if (AWS[key].prototype.constructor.__super__.name === 'Service') {
174
+ var svcVarName = key.toLowerCase();
175
+ var svc = services[svcVarName] = window[svcVarName] = new AWS[key]();
176
+ var fullName = svc.api.serviceAbbreviation || svc.api.serviceFullName;
177
+ var el = $('<option/>').attr('value', svcVarName).text(fullName);
178
+ $('#serviceSelector').append(el).change(function () {
179
+ loadOperationsForService($(this).val());
180
+ });
181
+ }
182
+ }
183
+ }
184
+
185
+ function executeOperation() {
186
+ var params = JSON.parse($('#operationData').val() || '{}');
187
+ currentService[currentOperation](params).send();
188
+ }
189
+
190
+ function template(name, options) {
191
+ var html = $('#template-' + name).html();
192
+ html = html.replace(/\{(.+?)\}/g, function(matches, key) {
193
+ return key in options ? options[key] : '';
194
+ });
195
+ return html;
196
+ }
197
+
198
+ function addHistoryEntry(req) {
199
+ req.id = guid();
200
+
201
+ // add entry to page
202
+ $('#history :first').tabs('option', 'active', false);
203
+ $('#history').prepend(template('historyEntry', {
204
+ operation: req.operation,
205
+ service: req.service.api.endpointPrefix,
206
+ entry: req.id,
207
+ date: new Date(),
208
+ }));
209
+
210
+ var reqHttpData = JSON.stringify(req.httpRequest, null, 2);
211
+ var entry = $('#history-' + req.id);
212
+ entry.tabs({collapsible: true});
213
+ entry.find('.operationRequestDetails').text(reqHttpData);
214
+ }
215
+
216
+ function updateHistoryEntry(resp) {
217
+ var req = resp.request;
218
+ var entry = $('#history-' + req.id);
219
+ var params = JSON.stringify(req.params);
220
+ var time = new Date().getTime();
221
+ var elapsed = (time - (resp.requestStarted || time)) / 1000;
222
+ var service = req.service.api.endpointPrefix;
223
+ var statusCode = resp.httpResponse.statusCode || 'ERR';
224
+ var retryCount = resp.retryCount || 0;
225
+ var operation = req.operation;
226
+ var info = statusCode + ' ' + elapsed + 's ' + retryCount + ' retries';
227
+
228
+ var data;
229
+ if (resp.error) {
230
+ data = resp.error.message + '\n' + resp.error.stack;
231
+ } else {
232
+ data = AWS.util.copy(resp.data);
233
+ if (data.Body) {
234
+ delete data.Body.parent; // remove circular ref
235
+ data.Body = data.Body.toString();
236
+ }
237
+ data = JSON.stringify(data, null, 2);
238
+
239
+ var tableData = resp.data;
240
+ var resultKey = '';
241
+ entry.find('.tableOutput').html(tableView(tableData, resultKey));
242
+ }
243
+
244
+ // debug to console
245
+ var opInfo = service + '.' + operation + '(' + params + ')';
246
+ console.log('[AWS ' + info + ']', opInfo);
247
+
248
+ entry.find('.operationResponse').text(data);
249
+ entry.find('.operationRequest').text(params);
250
+ var link = entry.children('ul').find('a').first();
251
+ link.text('[' + info + '] ' + link.text());
252
+
253
+ if (resp.httpResponse.body) {
254
+ delete resp.httpResponse.body.parent; // remove circular reference
255
+ resp.httpResponse.body = resp.httpResponse.body.toString();
256
+ }
257
+ var respHttpData = JSON.stringify(resp.httpResponse, null, 2);
258
+ entry.find('.operationResponseDetails').text(respHttpData);
259
+ }
260
+
261
+ function startRequest(resp) {
262
+ addHistoryEntry(resp.request);
263
+ resp.requestStarted = new Date().getTime();
264
+ }
265
+
266
+ function endRequest(resp) {
267
+ // set window properties for console debugging
268
+ window.response = resp;
269
+ window.data = resp.data;
270
+ window.error = resp.error;
271
+ window.requestCount++;
272
+
273
+ // update history info
274
+ try {
275
+ updateHistoryEntry(resp);
276
+ } catch (err) {
277
+ console.log(err.message);
278
+ console.log(err.stack);
279
+ }
280
+ }
281
+
282
+ function loadEvents() {
283
+ AWS.events.
284
+ on('send', startRequest).
285
+ on('complete', endRequest);
286
+ }
287
+
288
+ function loaded() {
289
+ $('#selectOperation').tabs({collapsible: true});
290
+ $('#executeOperation').click(executeOperation);
291
+ $('#header .title').text('AWS SDK for JavaScript ' + AWS.VERSION);
292
+ }
293
+
294
+ function init() {
295
+ AWS.config.update({region: 'us-east-1'});
296
+ loadEvents();
297
+ loaded();
298
+ }
299
+
300
+ function loadIDPCredentials(provider, arn, accessToken) {
301
+ var params = {
302
+ ProviderId: provider,
303
+ RoleArn: arn,
304
+ WebIdentityToken: accessToken
305
+ };
306
+ if (provider === null) delete params.ProviderId;
307
+
308
+ AWS.config.credentials = new AWS.WebIdentityCredentials(params);
309
+ AWS.config.credentials.get(function (err) {
310
+ if (err) {
311
+ console.log(err.message);
312
+ console.log(err.stack);
313
+ }
314
+ else loadServices();
315
+ });
316
+ }
317
+
318
+ $(init);
319
+ </script>
320
+ </head>
321
+ <body>
322
+ <div id="fb-root"></div>
323
+ <script>
324
+ window.fbAsyncInit = function() {
325
+ // init the FB JS SDK
326
+ FB.init({
327
+ appId: window.appInfo.facebook.appId,
328
+ status: false,
329
+ xfbml: false
330
+ });
331
+
332
+ FB.Event.subscribe('auth.authResponseChange', function(response) {
333
+ if (response.status === 'connected') {
334
+ loadIDPCredentials('graph.facebook.com',
335
+ window.appInfo.facebook.roleArn,
336
+ response.authResponse.accessToken);
337
+ }
338
+ });
339
+
340
+ FB.getLoginStatus();
341
+ $('#login-facebook').click(function() { FB.login() });
342
+ };
343
+
344
+ // Load the SDK asynchronously
345
+ (function(d, s, id){
346
+ var js, fjs = d.getElementsByTagName(s)[0];
347
+ if (d.getElementById(id)) {return;}
348
+ js = d.createElement(s); js.id = id;
349
+ js.src = "//connect.facebook.net/en_US/all.js";
350
+ fjs.parentNode.insertBefore(js, fjs);
351
+ }(document, 'script', 'facebook-jssdk'));
352
+ </script>
353
+
354
+ <div id="amazon-root"></div>
355
+ <script type="text/javascript">
356
+ window.onAmazonLoginReady = function() {
357
+ amazon.Login.setClientId(window.appInfo.amazon.appId);
358
+
359
+ $('#login-amazon').click(function() {
360
+ amazon.Login.authorize({scope: 'profile'}, function(response) {
361
+ if (!response.error) {
362
+ loadIDPCredentials('www.amazon.com',
363
+ window.appInfo.amazon.roleArn,
364
+ response.access_token);
365
+ }
366
+ });
367
+ });
368
+ };
369
+
370
+ (function(d) {
371
+ var a = d.createElement('script'); a.type = 'text/javascript';
372
+ a.async = true; a.id = 'amazon-login-sdk';
373
+ a.src = 'https://api-cdn.amazon.com/sdk/login1.js';
374
+ d.getElementById('amazon-root').appendChild(a);
375
+ })(document);
376
+ </script>
377
+
378
+ <script type="text/javascript">
379
+ (function() {
380
+ var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
381
+ po.src = 'https://apis.google.com/js/client:plusone.js';
382
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
383
+ })();
384
+
385
+ function loginToGoogle(response) {
386
+ if (!response.error) {
387
+ loadIDPCredentials(null, window.appInfo.google.roleArn, response.id_token);
388
+ }
389
+ }
390
+ </script>
391
+
392
+ <div id="header" class="padding">
393
+ <span class="title"></span>
394
+ <div id="login-buttons">
395
+ <button id="login-amazon">Login with Amazon</button>
396
+ <button id="login-facebook">Login with Facebook</button>
397
+ <button id="login-google">
398
+ <span
399
+ class="g-signin"
400
+ data-height="short"
401
+ data-callback="loginToGoogle"
402
+ data-clientid="156058024465.apps.googleusercontent.com"
403
+ data-cookiepolicy="single_host_origin"
404
+ data-requestvisibleactions="http://schemas.google.com/AddActivity"
405
+ data-scope="https://www.googleapis.com/auth/plus.login">
406
+ </span>
407
+ </button>
408
+ </div>
409
+ </div>
410
+ <div id="selectOperation">
411
+ <ul>
412
+ <li><a href="#selectOperationTab">Select an operation</a></li>
413
+ </ul>
414
+ <div id="selectOperationTab">
415
+ <div class="selectorControl">
416
+ <select size="10" id="serviceSelector"></select>
417
+ <select size="10" id="operationSelector"></select>
418
+ <textarea id="operationData"></textarea>
419
+ </div>
420
+ <div class="runControl">
421
+ <button id="executeOperation">Run</button>
422
+ </div>
423
+ </div>
424
+ </div>
425
+ <h2>Requests</h2>
426
+ <div id="history">
427
+ </div>
428
+ </body>
429
+ </html>