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.
- package/.eslintrc +20 -0
- package/.gitignore +10 -0
- package/.travis.yml +20 -0
- package/.yardopts +20 -0
- package/.yardopts_guide +21 -0
- package/Gemfile +16 -0
- package/Gemfile.lock +34 -0
- package/README.md +5 -6
- package/Rakefile +14 -0
- package/UPGRADING.md +9 -4
- package/configuration.sample +5 -0
- package/dist/BUNDLE_LICENSE.txt +96 -0
- package/dist/aws-sdk.js +9594 -0
- package/dist/aws-sdk.min.js +21 -0
- package/dist-tools/.eslintrc +10 -0
- package/dist-tools/browser-builder.js +142 -0
- package/dist-tools/strategies/cache.js +68 -0
- package/dist-tools/strategies/default.js +165 -0
- package/dist-tools/test/browser-builder.mocha.spec.coffee +182 -0
- package/dist-tools/test/helpers.coffee +16 -0
- package/doc-src/guide/browser-building.md +93 -0
- package/doc-src/guide/browser-configuring-wif.md +287 -0
- package/doc-src/guide/browser-configuring.md +218 -0
- package/doc-src/guide/browser-examples.md +220 -0
- package/doc-src/guide/browser-intro.md +46 -0
- package/doc-src/guide/browser-making-requests.md +279 -0
- package/doc-src/guide/browser-services.md +75 -0
- package/doc-src/guide/index.md +41 -0
- package/doc-src/guide/node-configuring.md +272 -0
- package/doc-src/guide/node-examples.md +341 -0
- package/doc-src/guide/node-intro.md +32 -0
- package/doc-src/guide/node-making-requests.md +309 -0
- package/doc-src/guide/node-services.md +159 -0
- package/doc-src/templates/api-versions/model_documentor.rb +366 -0
- package/doc-src/templates/api-versions/plugin.rb +230 -0
- package/doc-src/templates/api-versions/templates/default/class/html/setup.rb +9 -0
- package/doc-src/templates/api-versions/templates/default/class/html/waiter_details_list.erb +7 -0
- package/doc-src/templates/api-versions/templates/default/class/html/waiter_summary.erb +7 -0
- package/doc-src/templates/api-versions/templates/default/docstring/html/experimental.erb +4 -0
- package/doc-src/templates/api-versions/templates/default/docstring/setup.rb +9 -0
- package/doc-src/templates/api-versions/templates/default/fulldoc/html/css/common.css +6 -0
- package/doc-src/templates/api-versions/templates/default/fulldoc/html/setup.rb +62 -0
- package/doc-src/templates/api-versions/templates/default/layout/html/services.erb +10 -0
- package/doc-src/templates/api-versions/templates/default/layout/html/setup.rb +28 -0
- package/doc-src/templates/api-versions/templates/default/module/html/box_info.erb +45 -0
- package/doc-src/templates/api-versions/templates/default/module/html/children.erb +8 -0
- package/doc-src/templates/api-versions/templates/default/tags/setup.rb +3 -0
- package/doc-src/templates/api-versions/templates/default/waiter_details/html/method_signature.erb +3 -0
- package/doc-src/templates/api-versions/templates/default/waiter_details/html/setup.rb +5 -0
- package/doc-src/templates/default/layout/html/footer.erb +31 -0
- package/doc-src/templates/default/layout/html/layout.erb +23 -0
- package/doc-src/templates/flasky_sphinx_guide/fulldoc/html/css/highlight.github.css +127 -0
- package/doc-src/templates/flasky_sphinx_guide/fulldoc/html/css/style.css +1192 -0
- package/doc-src/templates/flasky_sphinx_guide/fulldoc/html/img/logo.png +0 -0
- package/doc-src/templates/flasky_sphinx_guide/fulldoc/html/js/app.js +33 -0
- package/doc-src/templates/flasky_sphinx_guide/fulldoc/html/js/highlight.pack.js +27 -0
- package/doc-src/templates/flasky_sphinx_guide/fulldoc/html/js/sphinx/AUTHORS +55 -0
- package/doc-src/templates/flasky_sphinx_guide/fulldoc/html/js/sphinx/LICENSE +25 -0
- package/doc-src/templates/flasky_sphinx_guide/fulldoc/html/js/sphinx/doctools.js +247 -0
- package/doc-src/templates/flasky_sphinx_guide/fulldoc/html/js/sphinx/file.png +0 -0
- package/doc-src/templates/flasky_sphinx_guide/fulldoc/html/js/sphinx/searchtools.js +568 -0
- package/doc-src/templates/flasky_sphinx_guide/fulldoc/html/js/underscore.js +23 -0
- package/doc-src/templates/flasky_sphinx_guide/fulldoc/html/search.erb +29 -0
- package/doc-src/templates/flasky_sphinx_guide/fulldoc/html/search_index.erb +1 -0
- package/doc-src/templates/flasky_sphinx_guide/fulldoc/html/setup.rb +75 -0
- package/doc-src/templates/flasky_sphinx_guide/layout/html/layout.erb +93 -0
- package/doc-src/templates/flasky_sphinx_guide/layout/html/setup.rb +9 -0
- package/doc-src/templates/flasky_sphinx_guide/layout/html/sidebar.erb +45 -0
- package/doc-src/templates/flasky_sphinx_guide/onefile/html/layout.erb +51 -0
- package/doc-src/templates/flasky_sphinx_guide/onefile/html/setup.rb +1 -0
- package/eslint-rules/no-require-in-service.js +10 -0
- package/features/autoscaling/autoscaling.feature +21 -0
- package/features/autoscaling/step_definitions/autoscaling.js +49 -0
- package/features/cloudformation/cloudformation.feature +22 -0
- package/features/cloudformation/step_definitions/cloudformation.js +26 -0
- package/features/cloudfront/cloudfront.feature +28 -0
- package/features/cloudfront/step_definitions/cloudfront-latest.js +54 -0
- package/features/cloudfront/step_definitions/cloudfront.js +21 -0
- package/features/cloudsearch/cloudsearch.feature +34 -0
- package/features/cloudsearch/step_definitions/cloudsearch.js +42 -0
- package/features/cloudtrail/cloudtrail.feature +17 -0
- package/features/cloudtrail/step_definitions/cloudtrail.js +14 -0
- package/features/cloudwatch/cloudwatch.feature +15 -0
- package/features/cloudwatch/step_definitions/cloudwatch.js +48 -0
- package/features/datapipeline/datapipeline.feature +23 -0
- package/features/datapipeline/step_definitions/datapipeline.js +79 -0
- package/features/directconnect/directconnect.feature +20 -0
- package/features/directconnect/step_definitions/directconnect.js +44 -0
- package/features/dynamodb/crc32.feature +18 -0
- package/features/dynamodb/step_definitions/dynamodb.js +154 -0
- package/features/dynamodb/tables.feature +50 -0
- package/features/ec2/ec2.feature +28 -0
- package/features/ec2/step_definitions/ec2.js +65 -0
- package/features/elasticache/elasticache.feature +20 -0
- package/features/elasticache/step_definitions/elasticache.js +34 -0
- package/features/elasticbeanstalk/elasticbeanstalk.feature +22 -0
- package/features/elasticbeanstalk/step_definitions/elasticbeanstalk.js +38 -0
- package/features/elastictranscoder/elastictranscoder.feature +24 -0
- package/features/elastictranscoder/step_definitions/elastictranscoder.js +56 -0
- package/features/elb/elb.feature +19 -0
- package/features/elb/step_definitions/elb.js +37 -0
- package/features/emr/emr.feature +16 -0
- package/features/emr/step_definitions/emr.js +45 -0
- package/features/extra/assertions.js +29 -0
- package/features/extra/dummy.feature +0 -0
- package/features/extra/fixtures/testfile.txt +1 -0
- package/features/extra/helpers.js +113 -0
- package/features/extra/hooks.js +107 -0
- package/features/extra/world.js +12 -0
- package/features/glacier/glacier.feature +47 -0
- package/features/glacier/step_definitions/glacier.js +112 -0
- package/features/iam/iam.feature +24 -0
- package/features/iam/step_definitions/iam.js +66 -0
- package/features/importexport/importexport.feature +53 -0
- package/features/importexport/step_definitions/importexport.js +42 -0
- package/features/kinesis/kinesis.feature +9 -0
- package/features/kinesis/step_definitions/kinesis.js +10 -0
- package/features/opsworks/opsworks.feature +26 -0
- package/features/opsworks/step_definitions/opsworks.js +42 -0
- package/features/rds/rds.feature +32 -0
- package/features/rds/step_definitions/rds.js +72 -0
- package/features/redshift/redshift.feature +20 -0
- package/features/redshift/step_definitions/redshift.js +33 -0
- package/features/route53/route53.feature +41 -0
- package/features/route53/step_definitions/route53.js +97 -0
- package/features/s3/buckets.feature +40 -0
- package/features/s3/objects.feature +122 -0
- package/features/s3/step_definitions/buckets.js +136 -0
- package/features/s3/step_definitions/hooks.js +39 -0
- package/features/s3/step_definitions/objects.js +204 -0
- package/features/s3/step_definitions/proxy.js +44 -0
- package/features/ses/ses.feature +20 -0
- package/features/ses/step_definitions/ses.js +22 -0
- package/features/simpledb/simpledb.feature +29 -0
- package/features/simpledb/step_definitions/simpledb.js +46 -0
- package/features/sns/sns.feature +15 -0
- package/features/sns/step_definitions/sns.js +33 -0
- package/features/sqs/messages.feature +21 -0
- package/features/sqs/queues.feature +18 -0
- package/features/sqs/step_definitions/messages.js +46 -0
- package/features/sqs/step_definitions/queues.js +33 -0
- package/features/sqs/step_definitions/sqs.js +7 -0
- package/features/storagegateway/step_definitions/storagegateway.js +16 -0
- package/features/storagegateway/storagegateway.feature +13 -0
- package/features/sts/step_definitions/sts.js +35 -0
- package/features/sts/sts.feature +29 -0
- package/features/support/step_definitions/support.js +35 -0
- package/features/support/support.feature +18 -0
- package/features/swf/step_definitions/swf.js +38 -0
- package/features/swf/swf.feature +15 -0
- package/index.js +2 -0
- package/lib/core.js +2 -2
- package/lib/credentials/shared_ini_file_credentials.js +0 -1
- package/lib/event_listeners.js +13 -1
- package/lib/http/node.js +19 -30
- package/lib/model/resource_waiter.js +0 -4
- package/lib/model/shape.js +2 -1
- package/lib/protocol/rest_xml.js +1 -1
- package/lib/region_config.js +31 -0
- package/lib/region_config.json +56 -0
- package/lib/request.js +37 -45
- package/lib/sequential_executor.js +17 -34
- package/lib/service.js +17 -44
- package/lib/services/cloudsearchdomain.js +69 -0
- package/lib/services/route53.js +0 -12
- package/lib/services/s3.js +3 -19
- package/lib/signers/v4.js +2 -1
- package/lib/util.js +28 -3
- package/package.json +3 -3
- package/scripts/console +11 -3
- package/scripts/coverage +126 -0
- package/tasks/apis.rake +122 -0
- package/tasks/browser.rake +89 -0
- package/tasks/docs.rake +36 -0
- package/tasks/lib/cucumber_generator.rb +40 -0
- package/tasks/util.rake +33 -0
- package/test/browser/js/jasmine-1.3.1.js +2600 -0
- package/test/browser/js/jasmine-html.js +681 -0
- package/test/browser/runner.html +109 -0
- package/test/browser/runner.js +92 -0
- package/test/browser/sample/appinfo.sample.js +15 -0
- package/test/browser/sample/console.html +429 -0
- package/test/browser/sample/css/smoothness/images/animated-overlay.gif +0 -0
- package/test/browser/sample/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- package/test/browser/sample/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- package/test/browser/sample/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- package/test/browser/sample/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- package/test/browser/sample/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- package/test/browser/sample/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- package/test/browser/sample/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- package/test/browser/sample/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- package/test/browser/sample/css/smoothness/images/ui-icons_222222_256x240.png +0 -0
- package/test/browser/sample/css/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
- package/test/browser/sample/css/smoothness/images/ui-icons_454545_256x240.png +0 -0
- package/test/browser/sample/css/smoothness/images/ui-icons_888888_256x240.png +0 -0
- package/test/browser/sample/css/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
- package/test/browser/sample/css/smoothness/jquery-ui-1.10.1.custom.css +1175 -0
- package/test/browser/sample/css/smoothness/jquery-ui-1.10.1.custom.min.css +5 -0
- package/test/browser/sample/img/loading.gif +0 -0
- package/test/browser/sample/js/jquery-1.9.1.js +9597 -0
- package/test/browser/sample/js/jquery-ui-1.10.1.custom.js +14903 -0
- package/test/browser/sample/js/jquery-ui-1.10.1.custom.min.js +6 -0
- package/test/browser/sample/s3upload.html +111 -0
- package/test/browser.spec.coffee +207 -0
- package/test/config.spec.coffee +202 -0
- package/test/credential_provider_chain.spec.coffee +90 -0
- package/test/credentials.spec.coffee +452 -0
- package/test/endpoint.spec.coffee +80 -0
- package/test/event_listeners.spec.coffee +493 -0
- package/test/helpers.coffee +150 -0
- package/test/http_request.spec.coffee +55 -0
- package/test/json/builder.spec.coffee +129 -0
- package/test/json/parser.spec.coffee +108 -0
- package/test/metadata_service.spec.coffee +54 -0
- package/test/model/api.spec.coffee +67 -0
- package/test/model/shape.spec.coffee +23 -0
- package/test/node_http_client.spec.coffee +40 -0
- package/test/param_validator.spec.coffee +456 -0
- package/test/protocol/json.spec.coffee +167 -0
- package/test/protocol/query.spec.coffee +191 -0
- package/test/protocol/rest.spec.coffee +237 -0
- package/test/protocol/rest_json.spec.coffee +255 -0
- package/test/protocol/rest_xml.spec.coffee +329 -0
- package/test/query/query_param_serializer.spec.coffee +327 -0
- package/test/region_config.spec.coffee +50 -0
- package/test/request.spec.coffee +316 -0
- package/test/resource_waiter.spec.coffee +89 -0
- package/test/response.spec.coffee +81 -0
- package/test/sequential_executor.spec.coffee +118 -0
- package/test/service.spec.coffee +230 -0
- package/test/services/cloudfront.spec.coffee +44 -0
- package/test/services/cloudsearchdomain.spec.coffee +23 -0
- package/test/services/dynamodb.spec.coffee +32 -0
- package/test/services/ec2.spec.coffee +78 -0
- package/test/services/elastictranscoder.spec.coffee +43 -0
- package/test/services/glacier.spec.coffee +61 -0
- package/test/services/rds.spec.coffee +38 -0
- package/test/services/route53.spec.coffee +77 -0
- package/test/services/s3.spec.coffee +538 -0
- package/test/services/simpledb.spec.coffee +12 -0
- package/test/services/sqs.spec.coffee +130 -0
- package/test/services/sts.spec.coffee +72 -0
- package/test/services/swf.spec.coffee +6 -0
- package/test/signers/presign.spec.coffee +36 -0
- package/test/signers/s3.spec.coffee +297 -0
- package/test/signers/v2.spec.coffee +68 -0
- package/test/signers/v4.spec.coffee +135 -0
- package/test/util.spec.coffee +510 -0
- package/test/xml/builder.spec.coffee +529 -0
- package/test/xml/parser.spec.coffee +587 -0
- package/lib/services/simpledb.js +0 -15
package/scripts/coverage
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
var fs = require('fs');
|
|
4
|
+
var path = require('path');
|
|
5
|
+
|
|
6
|
+
var FFI = require('node-ffi');
|
|
7
|
+
var libc = new FFI.Library(null, {'system': ['int32', ['string']]});
|
|
8
|
+
var exec = libc.system;
|
|
9
|
+
|
|
10
|
+
var jsRequire = require.extensions['.js'];
|
|
11
|
+
require.extensions['.js'] = function(module, filename) {
|
|
12
|
+
var baseFile = path.relative(path.join(__dirname, '..'), filename);
|
|
13
|
+
if (baseFile.match(/^lib\//)) {
|
|
14
|
+
filename = filename.replace(/\/lib\//, '/lib-cov/');
|
|
15
|
+
}
|
|
16
|
+
jsRequire(module, filename);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function printStats(file, covered, total) {
|
|
20
|
+
var maxFileLength = 26;
|
|
21
|
+
var pad = maxFileLength - file.length;
|
|
22
|
+
for (var i = 0; i < pad; i++) file += ' ';
|
|
23
|
+
console.log(file + ' ' +
|
|
24
|
+
(parseFloat(covered) / parseFloat(total) * 100).toFixed(2) + '%' +
|
|
25
|
+
((covered != total) ? ' ' : ' ') +
|
|
26
|
+
'(' + covered + '/' + total + ')');
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function cleanup() {
|
|
30
|
+
exec('rm -rf lib-cov');
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
process.on('uncaughtException', function(err) {
|
|
34
|
+
cleanup();
|
|
35
|
+
throw err;
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
process.on('exit', function() {
|
|
39
|
+
var out = 'NO COVERAGE';
|
|
40
|
+
if (typeof(_$jscoverage) !== 'undefined') {
|
|
41
|
+
var stats = {}
|
|
42
|
+
var entireCovered = 0;
|
|
43
|
+
var entireTotal = 0;
|
|
44
|
+
out = '';
|
|
45
|
+
var cov = _$jscoverage;
|
|
46
|
+
for (var file in cov) {
|
|
47
|
+
stats[file] = {covered: 0, total: 0};
|
|
48
|
+
var id = file.replace(/[\.\/]/, '_');
|
|
49
|
+
var total = cov[file].length;
|
|
50
|
+
var uncovered = 0;
|
|
51
|
+
for (var idx in cov[file]) {
|
|
52
|
+
if (cov[file][idx] === 0) uncovered++;
|
|
53
|
+
}
|
|
54
|
+
var covered = total - uncovered;
|
|
55
|
+
stats[file].covered = covered;
|
|
56
|
+
stats[file].total = total;
|
|
57
|
+
entireCovered += covered;
|
|
58
|
+
entireTotal += total;
|
|
59
|
+
|
|
60
|
+
out += '<h2>' + file + ' <small>(' + covered + '/' + total + ', ' +
|
|
61
|
+
(parseFloat(covered) / parseFloat(total) * 100).toFixed(2) +
|
|
62
|
+
'% covered) [<a href="#code_'+id+'" id="show_' + id + '">+</a>]</small></h2>\n';
|
|
63
|
+
var lineAccess = [];
|
|
64
|
+
|
|
65
|
+
out += "<table border='0' cellspacing='0' width='95%' style='display:none' id='code_"+id+"'>";
|
|
66
|
+
for (var lineNo in cov[file].source) {
|
|
67
|
+
lineNo = parseInt(lineNo);
|
|
68
|
+
out += "<tr class='count_"+cov[file][lineNo+1]+"'>";
|
|
69
|
+
out += "<td align='right'>"+(lineNo+1)+"</td><td width='60'></td><td>";
|
|
70
|
+
out += "<pre>" + cov[file].source[lineNo] + "</pre>";
|
|
71
|
+
out += "</td></tr>\n";
|
|
72
|
+
}
|
|
73
|
+
out += "\n</table>\n";
|
|
74
|
+
}
|
|
75
|
+
out += '<script>\n' +
|
|
76
|
+
'function scriptToggleHandler(id) {\n' +
|
|
77
|
+
' var link = document.getElementById("show_"+id);\n' +
|
|
78
|
+
' var code = document.getElementById("code_"+id);\n' +
|
|
79
|
+
' link.addEventListener("click", function() {\n' +
|
|
80
|
+
' if (link.innerText == "+") {\n' +
|
|
81
|
+
' link.innerText = "-";\n' +
|
|
82
|
+
' code.style.display = "block";\n' +
|
|
83
|
+
' } else if (link.innerText == "-") {\n' +
|
|
84
|
+
' link.innerText = "+";\n' +
|
|
85
|
+
' code.style.display = "none";\n' +
|
|
86
|
+
' }\n' +
|
|
87
|
+
' return false;\n' +
|
|
88
|
+
' }, false);\n' +
|
|
89
|
+
'}\n';
|
|
90
|
+
for (var file in cov) {
|
|
91
|
+
var id = file.replace(/[\.\/]/, '_');
|
|
92
|
+
out += 'scriptToggleHandler("'+id+'");\n';
|
|
93
|
+
}
|
|
94
|
+
out += '\n</script>';
|
|
95
|
+
}
|
|
96
|
+
var head = "<style>tr { background: #ddffdd; }\ntr.count_undefined " +
|
|
97
|
+
"{ background: transparent; }\ntr.count_0 { background: #ffdddd; }\nh1 small { font-size: 0.6em; }</style>";
|
|
98
|
+
var body = out;
|
|
99
|
+
body = "<p>Total coverage: " + (parseFloat(entireCovered) / parseFloat(entireTotal) * 100).toFixed(2) + "%</p>\n" + body;
|
|
100
|
+
var page = "<html>\n<head>\n"+head+"\n</head>\n<body>\n"+body+"\n</body>\n</html>\n";
|
|
101
|
+
fs.writeFileSync('coverage.html', page);
|
|
102
|
+
|
|
103
|
+
console.log('Test coverage:\n');
|
|
104
|
+
var files = [];
|
|
105
|
+
for (var file in stats) {
|
|
106
|
+
files.push([file, stats[file]]);
|
|
107
|
+
}
|
|
108
|
+
files.sort(function(a, b) {
|
|
109
|
+
var aVal = parseFloat(a[1].covered) / parseFloat(a[1].total);
|
|
110
|
+
var bVal = parseFloat(b[1].covered) / parseFloat(b[1].total);
|
|
111
|
+
return (aVal > bVal ? -1 : 1);
|
|
112
|
+
});
|
|
113
|
+
for (var item in files) {
|
|
114
|
+
var file = files[item][0];
|
|
115
|
+
var stats = files[item][1];
|
|
116
|
+
printStats(file, stats.covered, stats.total)
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
console.log('');
|
|
120
|
+
printStats('Total', entireCovered, entireTotal);
|
|
121
|
+
|
|
122
|
+
cleanup();
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
exec('./node_modules/visionmedia-jscoverage/jscoverage lib lib-cov')
|
|
126
|
+
require(path.join(__dirname, '../node_modules/jasmine-node/lib/jasmine-node/cli.js'));
|
package/tasks/apis.rake
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
require 'fileutils'
|
|
2
|
+
require 'json'
|
|
3
|
+
|
|
4
|
+
require_relative './lib/cucumber_generator'
|
|
5
|
+
|
|
6
|
+
$apis = {}
|
|
7
|
+
|
|
8
|
+
def root
|
|
9
|
+
File.expand_path(File.dirname(__FILE__) + '/../')
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def models_path
|
|
13
|
+
File.join(root, 'vendor', 'apis', 'apis')
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def service_name(api)
|
|
17
|
+
name = api['metadata']['serviceAbbreviation'] || api['metadata']['serviceFullName']
|
|
18
|
+
name = name.gsub(/^Amazon|AWS\s*|\(.*|\s+|\W+/, '')
|
|
19
|
+
|
|
20
|
+
# Hack for special service names
|
|
21
|
+
case name
|
|
22
|
+
when 'ElasticLoadBalancing'; 'ELB'
|
|
23
|
+
else name
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def add_tasks(model)
|
|
28
|
+
model_path = File.join(models_path, model)
|
|
29
|
+
api = JSON.parse(File.read(model_path), :max_nesting => false)
|
|
30
|
+
klass = service_name(api)
|
|
31
|
+
service = klass.downcase
|
|
32
|
+
version = api['metadata']['apiVersion']
|
|
33
|
+
|
|
34
|
+
namespace :api do
|
|
35
|
+
task :versions
|
|
36
|
+
|
|
37
|
+
namespace(service) do
|
|
38
|
+
task(:api) do
|
|
39
|
+
verbose(false) do
|
|
40
|
+
sh "#{root}/vendor/apis/scripts/translate-api #{model}"
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
task(:cucumber) do
|
|
45
|
+
unless File.exist?("#{root}/features/#{service}")
|
|
46
|
+
sh "mkdir -p #{root}/features/#{service}/step_definitions"
|
|
47
|
+
features = "#{root}/features/#{service}/#{service}.feature"
|
|
48
|
+
step_defns = "#{root}/features/#{service}/step_definitions/#{service}.js"
|
|
49
|
+
generator = CucumberGenerator.new(klass, service, api)
|
|
50
|
+
|
|
51
|
+
File.open(features, "w") do |file|
|
|
52
|
+
file.write(generator.features_file)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
File.open(step_defns, "w") do |file|
|
|
56
|
+
file.write(generator.step_definitions_file)
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
task(:version) do
|
|
62
|
+
puts("%-40s\t%s" % [api['metadata']['serviceFullName'], version])
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
task(:'version:internal') do
|
|
66
|
+
($apis[api['metadata']['serviceFullName']] ||= []) << [version, klass]
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
task(:'version:html') do
|
|
70
|
+
puts "<tr>\n <td>#{api['metadata']['serviceFullName']}</td>"
|
|
71
|
+
puts " <td>#{version}</td>\n <td>AWS.#{klass}</td>\n</tr>"
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
task(:'version:md') do
|
|
75
|
+
base = "http://docs.amazonwebservices.com/AWSJavaScriptSDK/latest/frames.html"
|
|
76
|
+
anchor = "#!AWS/#{klass}.html"
|
|
77
|
+
puts "* [AWS.#{klass}](#{base}#{anchor})"
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
desc "Builds the API for #{service}."
|
|
82
|
+
task service => [
|
|
83
|
+
"#{service}:api",
|
|
84
|
+
"#{service}:cucumber"
|
|
85
|
+
]
|
|
86
|
+
|
|
87
|
+
task :api => "#{service}:api"
|
|
88
|
+
task :versions => ["api:#{service}:version"]
|
|
89
|
+
task :'versions:md' => ["api:#{service}:version:md"]
|
|
90
|
+
task :'versions:internal' => ["api:#{service}:version:internal"]
|
|
91
|
+
|
|
92
|
+
task :all => service
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
namespace :api do
|
|
97
|
+
task :'versions:html' => :'api:versions:internal' do
|
|
98
|
+
# 1 row per service (with rowspan to deal with multiple api versions)
|
|
99
|
+
rows = ''
|
|
100
|
+
$apis.sort_by{|svc,apis| svc.downcase }.each do |(svc,apis)|
|
|
101
|
+
rowspan = apis.length > 1 ? " rowspan=\"#{apis.length}\"" : ''
|
|
102
|
+
rows << "<tr>"
|
|
103
|
+
rows << "<td#{rowspan}>#{svc}</td>"
|
|
104
|
+
rows << "<td#{rowspan}>AWS.#{apis.first.last}</td>" if ENV['README']
|
|
105
|
+
rows << "<td>#{apis.first.first}</td>"
|
|
106
|
+
rows << "</tr>\n"
|
|
107
|
+
apis[1..-1].each do |api|
|
|
108
|
+
rows << "<tr>"
|
|
109
|
+
rows << "<td>#{api.first}</td>"
|
|
110
|
+
rows << "</tr>\n"
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
puts rows
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
desc 'Builds the API for each service.'
|
|
118
|
+
task :api => 'api:all'
|
|
119
|
+
|
|
120
|
+
Dir.glob(File.join(models_path, '*.api.json')).sort.each do |file|
|
|
121
|
+
add_tasks(File.basename(file))
|
|
122
|
+
end
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
require 'json'
|
|
2
|
+
|
|
3
|
+
def write_configuration
|
|
4
|
+
config = {}
|
|
5
|
+
if File.exist?('configuration')
|
|
6
|
+
config = JSON.parse(File.read('configuration'))
|
|
7
|
+
config['accessKeyId'] ||= ENV['AWS_ACCESS_KEY_ID']
|
|
8
|
+
config['secretAccessKey'] ||= ENV['AWS_SECRET_ACCESS_KEY']
|
|
9
|
+
end
|
|
10
|
+
File.open('test/configuration.js', 'w') do |f|
|
|
11
|
+
config_json = JSON.generate(config).inspect
|
|
12
|
+
f.puts "module.exports = JSON.parse(#{config_json});"
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def sdk_version
|
|
17
|
+
JSON.parse(File.read('package.json'))['version']
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
namespace :browser do
|
|
21
|
+
$BUILDER = "./dist-tools/browser-builder.js"
|
|
22
|
+
$BROWSERIFY = "browserify"
|
|
23
|
+
$BROWSERIFY_DIST = "dist/aws-sdk.js"
|
|
24
|
+
$BROWSERIFY_TEST = "test/browser/build/tests.js"
|
|
25
|
+
|
|
26
|
+
task :all => [:build, :test]
|
|
27
|
+
|
|
28
|
+
task :setup_dist_tools do
|
|
29
|
+
unless File.directory?("dist-tools/node_modules")
|
|
30
|
+
sh "cd dist-tools && npm install --production"
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
desc 'Builds browser distributable (SERVICES=s3,dynamodb,...)'
|
|
35
|
+
task :build => :build_complete do
|
|
36
|
+
sh "MINIFY=1 #{$BUILDER} > #{$BROWSERIFY_DIST.sub('.js', '.min.js')}"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
task :build_complete => [:setup_dist_tools, :dist_path] do
|
|
40
|
+
sh "MINIFY='' #{$BUILDER} > #{$BROWSERIFY_DIST}"
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
task :build_all => [:setup_dist_tools, :dist_path] do
|
|
44
|
+
sh "MINIFY='' #{$BUILDER} all > dist/aws-sdk-all.js"
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
desc 'Caches assets to the dist-tools build server'
|
|
48
|
+
task :build_server => [:setup_dist_tools] do
|
|
49
|
+
version = ENV['VERSION'].sub(/^v/, '')
|
|
50
|
+
raise "Missing version" unless version
|
|
51
|
+
root = "vendor/dist-server/sdks/v#{version}"
|
|
52
|
+
mkdir_p(root)
|
|
53
|
+
mkdir_p("#{root}/node_modules")
|
|
54
|
+
cp_r "lib", root
|
|
55
|
+
cp_r "node_modules/aws-sdk-apis", "#{root}/node_modules/aws-sdk-apis"
|
|
56
|
+
cp_r "node_modules/xmlbuilder", "#{root}/node_modules/xmlbuilder"
|
|
57
|
+
cp_r "node_modules/xml2js", "#{root}/node_modules/xml2js"
|
|
58
|
+
Dir.chdir("vendor/dist-server") do
|
|
59
|
+
sh "node setup-versions v#{version}"
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
desc 'Builds browser test harness and runner'
|
|
64
|
+
task :test => [:node10_only, :setup_dist_tools, :dist_path, :build_all] do
|
|
65
|
+
write_configuration
|
|
66
|
+
mkdir_p "test/browser/build"
|
|
67
|
+
cp "dist/aws-sdk-all.js", "test/browser/build/aws-sdk-all.js"
|
|
68
|
+
sh "coffee -c test/helpers.coffee"
|
|
69
|
+
sh "find test -name '*.coffee' | SERVICES=all xargs #{$BROWSERIFY} " +
|
|
70
|
+
"-t coffeeify -i domain > #{$BROWSERIFY_TEST}"
|
|
71
|
+
rm_f "test/helpers.js"
|
|
72
|
+
rm_f "test/configuration.js"
|
|
73
|
+
sh "open test/browser/runner.html" if ENV['OPEN']
|
|
74
|
+
sh "phantomjs test/browser/runner.js"
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
task :dist_path do
|
|
78
|
+
mkdir_p 'dist'
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
task :node10_only do
|
|
82
|
+
version = `node -v`.chomp
|
|
83
|
+
v = version.split('.')
|
|
84
|
+
if v[0] == 'v0' && v[1].to_i < 10
|
|
85
|
+
puts "Skipping task #{ARGV[0]} due to unmet Node version (#{version} < v0.10.x)."
|
|
86
|
+
exit 0
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
package/tasks/docs.rake
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
namespace :docs do
|
|
2
|
+
task :directory do
|
|
3
|
+
mkdir_p "doc"
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
task :setup_apis do
|
|
7
|
+
unless File.directory?("vendor/apis")
|
|
8
|
+
sh "git clone git://github.com/aws/aws-sdk-js-apis vendor/apis"
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
desc "Build API documentation"
|
|
13
|
+
task :api => [:directory, :setup_apis] do
|
|
14
|
+
ENV['SITEMAP_BASEURL'] = 'http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/'
|
|
15
|
+
|
|
16
|
+
rm_rf "doc/latest"
|
|
17
|
+
args = ENV['ARGS'] ? ENV['ARGS'] : []
|
|
18
|
+
sh "bundle exec yard #{args.join(' ')}"
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
desc "Build guide documentation"
|
|
22
|
+
task :guide => :directory do
|
|
23
|
+
ENV['SITEMAP_BASEURL'] = 'http://docs.aws.amazon.com/AWSJavaScriptSDK/guide/'
|
|
24
|
+
|
|
25
|
+
rm_rf "doc/guide"
|
|
26
|
+
args = %w(-q --yardopts .yardopts_guide)
|
|
27
|
+
args += ENV['ARGS'].split(/\s+/) if ENV['ARGS']
|
|
28
|
+
sh "bundle exec yard #{args.join(' ')}"
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
desc "Builds API and guide documentation"
|
|
32
|
+
task :all => [:api, :guide]
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
desc "Builds all documentation"
|
|
36
|
+
task :docs => ['docs:all']
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Generates features/service/* files
|
|
2
|
+
class CucumberGenerator
|
|
3
|
+
def initialize(klass, service, api)
|
|
4
|
+
@klass = klass
|
|
5
|
+
@service = service
|
|
6
|
+
@api = api
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def features_file
|
|
10
|
+
<<-eof
|
|
11
|
+
# language: en
|
|
12
|
+
@#{@service}
|
|
13
|
+
Feature: #{@api['service_full_name']}
|
|
14
|
+
|
|
15
|
+
I want to use #{@api['service_full_name']}
|
|
16
|
+
|
|
17
|
+
Scenario: Feature
|
|
18
|
+
Given I create something with the service
|
|
19
|
+
Then the request should be successful
|
|
20
|
+
And I delete the thing I created
|
|
21
|
+
|
|
22
|
+
Scenario: Error handling
|
|
23
|
+
Given I do something with the service
|
|
24
|
+
Then the error code should be "ValidationError"
|
|
25
|
+
eof
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def step_definitions_file
|
|
29
|
+
<<-eof
|
|
30
|
+
module.exports = function() {
|
|
31
|
+
this.Before("@#{@service}", function (callback) {
|
|
32
|
+
this.service = new this.AWS.#{@klass}();
|
|
33
|
+
callback();
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
// Add step definitions
|
|
37
|
+
};
|
|
38
|
+
eof
|
|
39
|
+
end
|
|
40
|
+
end
|
package/tasks/util.rake
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
desc 'Install dependencies'
|
|
2
|
+
task :setup do
|
|
3
|
+
system "npm #{LOGLEVEL} install"
|
|
4
|
+
system "bundle install"
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
namespace :test do
|
|
8
|
+
desc "Runs all tests"
|
|
9
|
+
task :all => :build do
|
|
10
|
+
sh "npm #{LOGLEVEL} test"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
desc "Runs unit tests"
|
|
14
|
+
task :unit => :build do
|
|
15
|
+
sh "npm #{LOGLEVEL} run-script unit"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
desc "Runs integration tests"
|
|
19
|
+
task :integration => :build do
|
|
20
|
+
sh "npm #{LOGLEVEL} run-script integration"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
desc 'Runs JSHint'
|
|
26
|
+
task :lint do
|
|
27
|
+
sh "npm #{LOGLEVEL} run-script lint"
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
desc 'Interactive console'
|
|
31
|
+
task :console do
|
|
32
|
+
system './scripts/console'
|
|
33
|
+
end
|