vulcan 0.1.6 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/vulcan/cli.rb +3 -0
- data/lib/vulcan/version.rb +1 -1
- data/server/lib/spawner.js +9 -4
- data/server/node_modules/cradle/lib/cradle.js +0 -1
- data/server/node_modules/cradle/package.json +3 -3
- data/server/node_modules/cradle/test/cache-test.js +6 -7
- data/server/node_modules/cradle/test/cradle-test.js +4 -5
- data/server/node_modules/cradle/test/response-test.js +5 -6
- data/server/node_modules/express/History.md +40 -0
- data/server/node_modules/express/Makefile +3 -9
- data/server/node_modules/express/Readme.md +3 -1
- data/server/node_modules/express/bin/express +61 -63
- data/server/node_modules/express/lib/express.js +1 -1
- data/server/node_modules/express/lib/request.js +9 -7
- data/server/node_modules/express/lib/view.js +19 -16
- data/server/node_modules/express/node_modules/connect/lib/connect.js +1 -1
- data/server/node_modules/express/node_modules/connect/lib/http.js +2 -0
- data/server/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js +135 -31
- data/server/node_modules/express/node_modules/connect/lib/middleware/limit.js +5 -1
- data/server/node_modules/express/node_modules/connect/lib/middleware/session.js +2 -2
- data/server/node_modules/express/node_modules/connect/lib/middleware/static.js +26 -21
- data/server/node_modules/express/node_modules/connect/lib/middleware/staticCache.js +91 -38
- data/server/node_modules/express/node_modules/connect/lib/middleware/vhost.js +1 -1
- data/server/node_modules/express/node_modules/connect/lib/utils.js +11 -4
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/Makefile +14 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md +286 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/TODO +3 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js +70 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js +43 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js +48 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/index.js +1 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js +61 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js +377 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js +3 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js +312 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js +25 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/util.js +6 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/package.json +22 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js +19 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt +1 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt +1 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/no-filename/generic.http +13 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md +3 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-chrome-13.http +26 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-firefox-3.6.http +24 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-safari-5.http +23 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-chrome-12.http +24 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-7.http +22 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-8.http +22 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-safari-5.http +22 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js +3 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js +21 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multi_video.upload +0 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js +72 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js +89 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js +24 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js +80 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js +104 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js +715 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js +50 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js +45 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js +72 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js +2 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js +63 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js +47 -0
- data/server/node_modules/express/node_modules/connect/package.json +7 -6
- data/server/node_modules/express/node_modules/connect/test.js +44 -31
- data/server/node_modules/express/node_modules/qs/History.md +11 -0
- data/server/node_modules/express/node_modules/qs/Makefile +1 -3
- data/server/node_modules/express/node_modules/qs/Readme.md +2 -4
- data/server/node_modules/express/node_modules/qs/lib/querystring.js +100 -74
- data/server/node_modules/express/node_modules/qs/package.json +9 -2
- data/server/node_modules/express/node_modules/qs/test/mocha.opts +2 -0
- data/server/node_modules/express/node_modules/qs/test/{parse.test.js → parse.js} +1 -2
- data/server/node_modules/express/node_modules/qs/test/{stringify.test.js → stringify.js} +0 -0
- data/server/node_modules/express/package.json +7 -7
- data/server/node_modules/express/testing/foo/app.js +35 -0
- data/server/node_modules/express/testing/foo/package.json +9 -0
- data/server/node_modules/express/testing/foo/public/stylesheets/style.css +8 -0
- data/server/node_modules/express/testing/foo/routes/index.js +10 -0
- data/server/node_modules/express/testing/foo/views/index.jade +2 -0
- data/server/node_modules/express/testing/foo/views/layout.jade +6 -0
- data/server/node_modules/express/testing/index.js +31 -5
- data/server/node_modules/express/testing/public/test.txt +2971 -0
- data/server/node_modules/express/testing/views/page.html +1 -0
- data/server/node_modules/express/testing/views/page.jade +3 -0
- data/server/node_modules/express/testing/views/test.md +1 -0
- data/server/node_modules/express/testing/views/user/index.jade +1 -0
- data/server/node_modules/express/testing/views/user/list.jade +1 -0
- data/server/node_modules/node-uuid/README.md +166 -67
- data/server/node_modules/node-uuid/benchmark/README.md +53 -0
- data/server/node_modules/node-uuid/benchmark/bench.gnu +174 -0
- data/server/node_modules/node-uuid/benchmark/bench.sh +34 -0
- data/server/node_modules/node-uuid/{test → benchmark}/benchmark-native.c +0 -0
- data/server/node_modules/node-uuid/benchmark/benchmark.js +84 -0
- data/server/node_modules/node-uuid/package.json +5 -3
- data/server/node_modules/node-uuid/test/benchmark-native +0 -0
- data/server/node_modules/node-uuid/test/compare_v1.js +63 -0
- data/server/node_modules/node-uuid/test/test.html +3 -0
- data/server/node_modules/node-uuid/test/test.js +214 -57
- data/server/node_modules/node-uuid/uuid.js +225 -56
- data/server/node_modules/restler/README.md +20 -7
- data/server/node_modules/restler/bin/restler +1 -1
- data/server/node_modules/restler/lib/multipartform.js +9 -8
- data/server/node_modules/restler/lib/restler.js +64 -22
- data/server/node_modules/restler/package.json +2 -2
- data/server/node_modules/restler/test/restler.js +22 -2
- data/server/node_modules/restler/test/test_helper.js +20 -1
- data/server/package.json +8 -8
- data/server/web.js +22 -6
- metadata +72 -82
- data/server/node_modules/cradle/node_modules/vows/LICENSE +0 -20
- data/server/node_modules/cradle/node_modules/vows/Makefile +0 -7
- data/server/node_modules/cradle/node_modules/vows/README.md +0 -39
- data/server/node_modules/cradle/node_modules/vows/bin/vows +0 -515
- data/server/node_modules/cradle/node_modules/vows/lib/assert/error.js +0 -27
- data/server/node_modules/cradle/node_modules/vows/lib/assert/macros.js +0 -215
- data/server/node_modules/cradle/node_modules/vows/lib/assert/utils.js +0 -77
- data/server/node_modules/cradle/node_modules/vows/lib/vows.js +0 -193
- data/server/node_modules/cradle/node_modules/vows/lib/vows/console.js +0 -131
- data/server/node_modules/cradle/node_modules/vows/lib/vows/context.js +0 -55
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/file.js +0 -29
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/fragments/coverage-foot.html +0 -2
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/fragments/coverage-head.html +0 -61
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-html.js +0 -54
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-json.js +0 -54
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-plain.js +0 -38
- data/server/node_modules/cradle/node_modules/vows/lib/vows/extras.js +0 -28
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/dot-matrix.js +0 -67
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/json.js +0 -16
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/silent.js +0 -8
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/spec.js +0 -44
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/watch.js +0 -39
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/xunit.js +0 -90
- data/server/node_modules/cradle/node_modules/vows/lib/vows/suite.js +0 -319
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/LICENSE +0 -20
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/Makefile +0 -4
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/README.md +0 -72
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/lib/eyes.js +0 -233
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/package.json +0 -14
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/test/eyes-test.js +0 -55
- data/server/node_modules/cradle/node_modules/vows/package.json +0 -14
- data/server/node_modules/cradle/node_modules/vows/test/assert-test.js +0 -135
- data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/failing.js +0 -18
- data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/log.js +0 -18
- data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/passing.js +0 -17
- data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/stderr.js +0 -18
- data/server/node_modules/cradle/node_modules/vows/test/isolate-test.js +0 -140
- data/server/node_modules/cradle/node_modules/vows/test/testInherit.js +0 -133
- data/server/node_modules/cradle/node_modules/vows/test/vows-error-test.js +0 -51
- data/server/node_modules/cradle/node_modules/vows/test/vows-test.js +0 -374
- data/server/node_modules/express/node_modules/qs/support/expresso/History.md +0 -128
- data/server/node_modules/express/node_modules/qs/support/expresso/Makefile +0 -53
- data/server/node_modules/express/node_modules/qs/support/expresso/Readme.md +0 -61
- data/server/node_modules/express/node_modules/qs/support/expresso/bin/expresso +0 -856
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/api.html +0 -1080
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/index.html +0 -377
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/index.md +0 -290
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/layout/foot.html +0 -3
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/layout/head.html +0 -42
- data/server/node_modules/express/node_modules/qs/support/expresso/lib/bar.js +0 -4
- data/server/node_modules/express/node_modules/qs/support/expresso/lib/foo.js +0 -16
- data/server/node_modules/express/node_modules/qs/support/expresso/package.json +0 -12
- data/server/node_modules/express/node_modules/qs/support/expresso/test/assert.test.js +0 -91
- data/server/node_modules/express/node_modules/qs/support/expresso/test/async.test.js +0 -12
- data/server/node_modules/express/node_modules/qs/support/expresso/test/bar.test.js +0 -13
- data/server/node_modules/express/node_modules/qs/support/expresso/test/foo.test.js +0 -14
- data/server/node_modules/express/node_modules/qs/support/expresso/test/http.test.js +0 -146
- data/server/node_modules/express/node_modules/qs/support/expresso/test/serial/async.test.js +0 -39
- data/server/node_modules/express/node_modules/qs/support/expresso/test/serial/http.test.js +0 -48
- data/server/node_modules/express/node_modules/qs/support/should/History.md +0 -22
- data/server/node_modules/express/node_modules/qs/support/should/Makefile +0 -6
- data/server/node_modules/express/node_modules/qs/support/should/Readme.md +0 -248
- data/server/node_modules/express/node_modules/qs/support/should/examples/runner.js +0 -53
- data/server/node_modules/express/node_modules/qs/support/should/index.js +0 -2
- data/server/node_modules/express/node_modules/qs/support/should/lib/eql.js +0 -91
- data/server/node_modules/express/node_modules/qs/support/should/lib/should.js +0 -548
- data/server/node_modules/express/node_modules/qs/support/should/package.json +0 -8
- data/server/node_modules/express/node_modules/qs/support/should/test/should.test.js +0 -358
- data/server/node_modules/express/testing/views/users.jade +0 -1
- data/server/node_modules/node-uuid/test/benchmark.js +0 -27
@@ -0,0 +1,50 @@
|
|
1
|
+
var common = require('../common');
|
2
|
+
var multipartParser = require(common.lib + '/multipart_parser'),
|
3
|
+
MultipartParser = multipartParser.MultipartParser,
|
4
|
+
events = require('events'),
|
5
|
+
Buffer = require('buffer').Buffer,
|
6
|
+
parser;
|
7
|
+
|
8
|
+
function test(test) {
|
9
|
+
parser = new MultipartParser();
|
10
|
+
test();
|
11
|
+
}
|
12
|
+
|
13
|
+
test(function constructor() {
|
14
|
+
assert.equal(parser.boundary, null);
|
15
|
+
assert.equal(parser.state, 0);
|
16
|
+
assert.equal(parser.flags, 0);
|
17
|
+
assert.equal(parser.boundaryChars, null);
|
18
|
+
assert.equal(parser.index, null);
|
19
|
+
assert.equal(parser.lookbehind, null);
|
20
|
+
assert.equal(parser.constructor.name, 'MultipartParser');
|
21
|
+
});
|
22
|
+
|
23
|
+
test(function initWithBoundary() {
|
24
|
+
var boundary = 'abc';
|
25
|
+
parser.initWithBoundary(boundary);
|
26
|
+
assert.deepEqual(Array.prototype.slice.call(parser.boundary), [13, 10, 45, 45, 97, 98, 99]);
|
27
|
+
assert.equal(parser.state, multipartParser.START);
|
28
|
+
|
29
|
+
assert.deepEqual(parser.boundaryChars, {10: true, 13: true, 45: true, 97: true, 98: true, 99: true});
|
30
|
+
});
|
31
|
+
|
32
|
+
test(function parserError() {
|
33
|
+
var boundary = 'abc',
|
34
|
+
buffer = new Buffer(5);
|
35
|
+
|
36
|
+
parser.initWithBoundary(boundary);
|
37
|
+
buffer.write('--ad', 'ascii', 0);
|
38
|
+
assert.equal(parser.write(buffer), 3);
|
39
|
+
});
|
40
|
+
|
41
|
+
test(function end() {
|
42
|
+
(function testError() {
|
43
|
+
assert.equal(parser.end().message, 'MultipartParser.end(): stream ended unexpectedly: ' + parser.explain());
|
44
|
+
})();
|
45
|
+
|
46
|
+
(function testRegular() {
|
47
|
+
parser.state = multipartParser.END;
|
48
|
+
assert.strictEqual(parser.end(), undefined);
|
49
|
+
})();
|
50
|
+
});
|
@@ -0,0 +1,45 @@
|
|
1
|
+
var common = require('../common');
|
2
|
+
var QuerystringParser = require(common.lib + '/querystring_parser').QuerystringParser,
|
3
|
+
Buffer = require('buffer').Buffer,
|
4
|
+
gently,
|
5
|
+
parser;
|
6
|
+
|
7
|
+
function test(test) {
|
8
|
+
gently = new Gently();
|
9
|
+
parser = new QuerystringParser();
|
10
|
+
test();
|
11
|
+
gently.verify(test.name);
|
12
|
+
}
|
13
|
+
|
14
|
+
test(function constructor() {
|
15
|
+
assert.equal(parser.buffer, '');
|
16
|
+
assert.equal(parser.constructor.name, 'QuerystringParser');
|
17
|
+
});
|
18
|
+
|
19
|
+
test(function write() {
|
20
|
+
var a = new Buffer('a=1');
|
21
|
+
assert.equal(parser.write(a), a.length);
|
22
|
+
|
23
|
+
var b = new Buffer('&b=2');
|
24
|
+
parser.write(b);
|
25
|
+
assert.equal(parser.buffer, a + b);
|
26
|
+
});
|
27
|
+
|
28
|
+
test(function end() {
|
29
|
+
var FIELDS = {a: ['b', {c: 'd'}], e: 'f'};
|
30
|
+
|
31
|
+
gently.expect(GENTLY.hijacked.querystring, 'parse', function(str) {
|
32
|
+
assert.equal(str, parser.buffer);
|
33
|
+
return FIELDS;
|
34
|
+
});
|
35
|
+
|
36
|
+
gently.expect(parser, 'onField', Object.keys(FIELDS).length, function(key, val) {
|
37
|
+
assert.deepEqual(FIELDS[key], val);
|
38
|
+
});
|
39
|
+
|
40
|
+
gently.expect(parser, 'onEnd');
|
41
|
+
|
42
|
+
parser.buffer = 'my buffer';
|
43
|
+
parser.end();
|
44
|
+
assert.equal(parser.buffer, '');
|
45
|
+
});
|
@@ -0,0 +1,72 @@
|
|
1
|
+
var common = require('../common');
|
2
|
+
var BOUNDARY = '---------------------------10102754414578508781458777923',
|
3
|
+
FIXTURE = TEST_FIXTURES+'/multi_video.upload',
|
4
|
+
fs = require('fs'),
|
5
|
+
util = require(common.lib + '/util'),
|
6
|
+
http = require('http'),
|
7
|
+
formidable = require(common.lib + '/index'),
|
8
|
+
server = http.createServer();
|
9
|
+
|
10
|
+
server.on('request', function(req, res) {
|
11
|
+
var form = new formidable.IncomingForm(),
|
12
|
+
uploads = {};
|
13
|
+
|
14
|
+
form.uploadDir = TEST_TMP;
|
15
|
+
form.parse(req);
|
16
|
+
|
17
|
+
form
|
18
|
+
.on('fileBegin', function(field, file) {
|
19
|
+
assert.equal(field, 'upload');
|
20
|
+
|
21
|
+
var tracker = {file: file, progress: [], ended: false};
|
22
|
+
uploads[file.filename] = tracker;
|
23
|
+
file
|
24
|
+
.on('progress', function(bytesReceived) {
|
25
|
+
tracker.progress.push(bytesReceived);
|
26
|
+
assert.equal(bytesReceived, file.length);
|
27
|
+
})
|
28
|
+
.on('end', function() {
|
29
|
+
tracker.ended = true;
|
30
|
+
});
|
31
|
+
})
|
32
|
+
.on('field', function(field, value) {
|
33
|
+
assert.equal(field, 'title');
|
34
|
+
assert.equal(value, '');
|
35
|
+
})
|
36
|
+
.on('file', function(field, file) {
|
37
|
+
assert.equal(field, 'upload');
|
38
|
+
assert.strictEqual(uploads[file.filename].file, file);
|
39
|
+
})
|
40
|
+
.on('end', function() {
|
41
|
+
assert.ok(uploads['shortest_video.flv']);
|
42
|
+
assert.ok(uploads['shortest_video.flv'].ended);
|
43
|
+
assert.ok(uploads['shortest_video.flv'].progress.length > 3);
|
44
|
+
assert.equal(uploads['shortest_video.flv'].progress.slice(-1), uploads['shortest_video.flv'].file.length);
|
45
|
+
assert.ok(uploads['shortest_video.mp4']);
|
46
|
+
assert.ok(uploads['shortest_video.mp4'].ended);
|
47
|
+
assert.ok(uploads['shortest_video.mp4'].progress.length > 3);
|
48
|
+
|
49
|
+
server.close();
|
50
|
+
res.writeHead(200);
|
51
|
+
res.end('good');
|
52
|
+
});
|
53
|
+
});
|
54
|
+
|
55
|
+
server.listen(TEST_PORT, function() {
|
56
|
+
var client = http.createClient(TEST_PORT),
|
57
|
+
stat = fs.statSync(FIXTURE),
|
58
|
+
headers = {
|
59
|
+
'content-type': 'multipart/form-data; boundary='+BOUNDARY,
|
60
|
+
'content-length': stat.size,
|
61
|
+
}
|
62
|
+
request = client.request('POST', '/', headers),
|
63
|
+
fixture = new fs.ReadStream(FIXTURE);
|
64
|
+
|
65
|
+
fixture
|
66
|
+
.on('data', function(b) {
|
67
|
+
request.write(b);
|
68
|
+
})
|
69
|
+
.on('end', function() {
|
70
|
+
request.end();
|
71
|
+
});
|
72
|
+
});
|
@@ -0,0 +1,63 @@
|
|
1
|
+
var common = require('../common');
|
2
|
+
var test = require('utest');
|
3
|
+
var assert = common.assert;
|
4
|
+
var IncomingForm = common.require('incoming_form').IncomingForm;
|
5
|
+
var path = require('path');
|
6
|
+
|
7
|
+
var from;
|
8
|
+
test('IncomingForm', {
|
9
|
+
before: function() {
|
10
|
+
form = new IncomingForm();
|
11
|
+
},
|
12
|
+
|
13
|
+
'#_fileName with regular characters': function() {
|
14
|
+
var filename = 'foo.txt';
|
15
|
+
assert.equal(form._fileName(makeHeader(filename)), 'foo.txt');
|
16
|
+
},
|
17
|
+
|
18
|
+
'#_fileName with unescaped quote': function() {
|
19
|
+
var filename = 'my".txt';
|
20
|
+
assert.equal(form._fileName(makeHeader(filename)), 'my".txt');
|
21
|
+
},
|
22
|
+
|
23
|
+
'#_fileName with escaped quote': function() {
|
24
|
+
var filename = 'my%22.txt';
|
25
|
+
assert.equal(form._fileName(makeHeader(filename)), 'my".txt');
|
26
|
+
},
|
27
|
+
|
28
|
+
'#_fileName with bad quote and additional sub-header': function() {
|
29
|
+
var filename = 'my".txt';
|
30
|
+
var header = makeHeader(filename) + '; foo="bar"';
|
31
|
+
assert.equal(form._fileName(header), filename);
|
32
|
+
},
|
33
|
+
|
34
|
+
'#_fileName with semicolon': function() {
|
35
|
+
var filename = 'my;.txt';
|
36
|
+
assert.equal(form._fileName(makeHeader(filename)), 'my;.txt');
|
37
|
+
},
|
38
|
+
|
39
|
+
'#_fileName with utf8 character': function() {
|
40
|
+
var filename = 'my☃.txt';
|
41
|
+
assert.equal(form._fileName(makeHeader(filename)), 'my☃.txt');
|
42
|
+
},
|
43
|
+
|
44
|
+
'#_uploadPath strips harmful characters from extension when keepExtensions': function() {
|
45
|
+
form.keepExtensions = true;
|
46
|
+
|
47
|
+
var ext = path.extname(form._uploadPath('fine.jpg?foo=bar'));
|
48
|
+
assert.equal(ext, '.jpg');
|
49
|
+
|
50
|
+
var ext = path.extname(form._uploadPath('fine?foo=bar'));
|
51
|
+
assert.equal(ext, '');
|
52
|
+
|
53
|
+
var ext = path.extname(form._uploadPath('super.cr2+dsad'));
|
54
|
+
assert.equal(ext, '.cr2');
|
55
|
+
|
56
|
+
var ext = path.extname(form._uploadPath('super.bar'));
|
57
|
+
assert.equal(ext, '.bar');
|
58
|
+
},
|
59
|
+
});
|
60
|
+
|
61
|
+
function makeHeader(filename) {
|
62
|
+
return 'Content-Disposition: form-data; name="upload"; filename="' + filename + '"';
|
63
|
+
}
|
@@ -0,0 +1,47 @@
|
|
1
|
+
var http = require('http');
|
2
|
+
var fs = require('fs');
|
3
|
+
var connections = 0;
|
4
|
+
|
5
|
+
var server = http.createServer(function(req, res) {
|
6
|
+
var socket = req.socket;
|
7
|
+
console.log('Request: %s %s -> %s', req.method, req.url, socket.filename);
|
8
|
+
|
9
|
+
req.on('end', function() {
|
10
|
+
if (req.url !== '/') {
|
11
|
+
res.end(JSON.stringify({
|
12
|
+
method: req.method,
|
13
|
+
url: req.url,
|
14
|
+
filename: socket.filename,
|
15
|
+
}));
|
16
|
+
return;
|
17
|
+
}
|
18
|
+
|
19
|
+
res.writeHead(200, {'content-type': 'text/html'});
|
20
|
+
res.end(
|
21
|
+
'<form action="/upload" enctype="multipart/form-data" method="post">'+
|
22
|
+
'<input type="text" name="title"><br>'+
|
23
|
+
'<input type="file" name="upload" multiple="multiple"><br>'+
|
24
|
+
'<input type="submit" value="Upload">'+
|
25
|
+
'</form>'
|
26
|
+
);
|
27
|
+
});
|
28
|
+
});
|
29
|
+
|
30
|
+
server.on('connection', function(socket) {
|
31
|
+
connections++;
|
32
|
+
|
33
|
+
socket.id = connections;
|
34
|
+
socket.filename = 'connection-' + socket.id + '.http';
|
35
|
+
socket.file = fs.createWriteStream(socket.filename);
|
36
|
+
socket.pipe(socket.file);
|
37
|
+
|
38
|
+
console.log('--> %s', socket.filename);
|
39
|
+
socket.on('close', function() {
|
40
|
+
console.log('<-- %s', socket.filename);
|
41
|
+
});
|
42
|
+
});
|
43
|
+
|
44
|
+
var port = process.env.PORT || 8080;
|
45
|
+
server.listen(port, function() {
|
46
|
+
console.log('Recording connections on port %s', port);
|
47
|
+
});
|
@@ -1,24 +1,25 @@
|
|
1
1
|
{
|
2
2
|
"name": "connect",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.8.5",
|
4
4
|
"description": "High performance middleware framework",
|
5
5
|
"keywords": ["framework", "web", "middleware", "connect", "rack"],
|
6
6
|
"repository": "git://github.com/senchalabs/connect.git",
|
7
7
|
"author": "TJ Holowaychuk <tj@vision-media.ca> (http://tjholowaychuk.com)",
|
8
8
|
"repository": "git://github.com/senchalabs/connect",
|
9
9
|
"dependencies": {
|
10
|
-
"qs": ">= 0.
|
11
|
-
"mime": ">= 0.0.1"
|
10
|
+
"qs": ">= 0.4.0",
|
11
|
+
"mime": ">= 0.0.1",
|
12
|
+
"formidable": "1.0.x"
|
12
13
|
},
|
13
14
|
"devDependencies": {
|
14
|
-
"expresso": "0.
|
15
|
+
"expresso": "0.9.2",
|
15
16
|
"koala": "0.1.2",
|
16
17
|
"less": "1.1.1",
|
17
18
|
"sass": "0.5.0",
|
18
19
|
"markdown": "0.2.1",
|
19
20
|
"ejs": "0.4.3",
|
20
|
-
"should": "0.2
|
21
|
+
"should": "0.3.2"
|
21
22
|
},
|
22
23
|
"main": "index",
|
23
|
-
"engines": { "node": ">= 0.4.1 < 0.
|
24
|
+
"engines": { "node": ">= 0.4.1 < 0.7.0" }
|
24
25
|
}
|
@@ -1,39 +1,52 @@
|
|
1
1
|
|
2
|
-
/**
|
3
|
-
* Module dependencies.
|
4
|
-
*/
|
5
|
-
|
6
2
|
var connect = require('./')
|
7
|
-
, utils = connect.utils
|
8
3
|
, http = require('http')
|
9
|
-
,
|
10
|
-
|
11
|
-
|
12
|
-
connect()
|
13
|
-
.use(connect.cookieParser())
|
14
|
-
.use(connect.session({ secret: 'hey' }))
|
15
|
-
.use(function(req, res, next){
|
16
|
-
if ('/foo' == req.url) {
|
17
|
-
req.session.foo = 'bar';
|
18
|
-
}
|
19
|
-
res.end('hello\n')
|
20
|
-
})
|
21
|
-
.listen(3000)
|
4
|
+
, RedisStore = require('connect-redis')(connect);
|
22
5
|
|
23
|
-
|
24
|
-
|
25
|
-
|
6
|
+
var app = connect();
|
7
|
+
app.use(connect.cookieParser('fucj'));
|
8
|
+
app.use(connect.session({store:new RedisStore}));
|
9
|
+
app.use(function(req, res, next){
|
10
|
+
req.session.views = (req.session.views || 0) + 1;
|
11
|
+
res.writeHead(200, {"Content-Type": "text/plain"});
|
12
|
+
res.end("You've viewed this page "+req.session.views+" times.");
|
13
|
+
})
|
26
14
|
|
27
|
-
|
15
|
+
http.createServer(app).listen(3000);
|
28
16
|
|
29
|
-
// 472k
|
30
|
-
// node-static: 1651rps
|
31
|
-
// connect: 581rps
|
32
17
|
|
33
|
-
// var
|
34
|
-
//
|
18
|
+
// var set = RedisStore.prototype.set;
|
19
|
+
//
|
20
|
+
// function slow(sid){
|
21
|
+
// console.log('%s saving', sid);
|
22
|
+
// var args = arguments;
|
23
|
+
// setTimeout(function(self){
|
24
|
+
// console.log('%s saved', sid);
|
25
|
+
// set.apply(self, args);
|
26
|
+
// }, 2000, this);
|
27
|
+
// };
|
28
|
+
//
|
29
|
+
// http.createServer(connect()
|
30
|
+
// .use(connect.logger('dev'))
|
31
|
+
// .use(connect.cookieParser('keyboard cat'))
|
32
|
+
// .use(connect.session({ store: new RedisStore }))
|
33
|
+
// .use(function(req, res, next){
|
34
|
+
// var sess = req.session;
|
35
|
+
// switch (req.url) {
|
36
|
+
// case '/foo.js':
|
37
|
+
// console.log('%s foo.js sid', sess.id);
|
38
|
+
// RedisStore.prototype.set = set;
|
39
|
+
// res.end('data');
|
40
|
+
// break;
|
41
|
+
// default:
|
42
|
+
// console.log('%s html sid', sess.id);
|
43
|
+
// RedisStore.prototype.set = slow;
|
44
|
+
// res.setHeader('Content-Type', 'html');
|
45
|
+
// res.write('<html><head><script src="/foo.js"></script></head><body>');
|
46
|
+
// setTimeout(function(){
|
47
|
+
// res.end('</body></html>');
|
48
|
+
// }, 1000);
|
49
|
+
// }
|
50
|
+
// })).listen(3000);
|
35
51
|
//
|
36
|
-
//
|
37
|
-
// http.createServer(function(req, res){
|
38
|
-
// file.serve(req, res);
|
39
|
-
// }).listen(3000);
|
52
|
+
// console.log('port 3000');
|
@@ -1,4 +1,15 @@
|
|
1
1
|
|
2
|
+
0.4.0 / 2011-11-21
|
3
|
+
==================
|
4
|
+
|
5
|
+
* Allow parsing of an existing object (for `bodyParser()`) [jackyz]
|
6
|
+
* Replaced expresso with mocha
|
7
|
+
|
8
|
+
0.3.2 / 2011-11-08
|
9
|
+
==================
|
10
|
+
|
11
|
+
* Fixed global variable leak
|
12
|
+
|
2
13
|
0.3.1 / 2011-08-17
|
3
14
|
==================
|
4
15
|
|
@@ -6,7 +6,6 @@
|
|
6
6
|
|
7
7
|
$ npm install qs
|
8
8
|
|
9
|
-
|
10
9
|
## Examples
|
11
10
|
|
12
11
|
require('qs').parse('user[name][first]=tj&user[email]=tj');
|
@@ -14,10 +13,9 @@
|
|
14
13
|
|
15
14
|
## Testing
|
16
15
|
|
17
|
-
|
16
|
+
Install dev dependencies:
|
18
17
|
|
19
|
-
$
|
20
|
-
$ git submodule update
|
18
|
+
$ npm install -d
|
21
19
|
|
22
20
|
and execute:
|
23
21
|
|