vulcan 0.1.6 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (181) hide show
  1. data/lib/vulcan/cli.rb +3 -0
  2. data/lib/vulcan/version.rb +1 -1
  3. data/server/lib/spawner.js +9 -4
  4. data/server/node_modules/cradle/lib/cradle.js +0 -1
  5. data/server/node_modules/cradle/package.json +3 -3
  6. data/server/node_modules/cradle/test/cache-test.js +6 -7
  7. data/server/node_modules/cradle/test/cradle-test.js +4 -5
  8. data/server/node_modules/cradle/test/response-test.js +5 -6
  9. data/server/node_modules/express/History.md +40 -0
  10. data/server/node_modules/express/Makefile +3 -9
  11. data/server/node_modules/express/Readme.md +3 -1
  12. data/server/node_modules/express/bin/express +61 -63
  13. data/server/node_modules/express/lib/express.js +1 -1
  14. data/server/node_modules/express/lib/request.js +9 -7
  15. data/server/node_modules/express/lib/view.js +19 -16
  16. data/server/node_modules/express/node_modules/connect/lib/connect.js +1 -1
  17. data/server/node_modules/express/node_modules/connect/lib/http.js +2 -0
  18. data/server/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js +135 -31
  19. data/server/node_modules/express/node_modules/connect/lib/middleware/limit.js +5 -1
  20. data/server/node_modules/express/node_modules/connect/lib/middleware/session.js +2 -2
  21. data/server/node_modules/express/node_modules/connect/lib/middleware/static.js +26 -21
  22. data/server/node_modules/express/node_modules/connect/lib/middleware/staticCache.js +91 -38
  23. data/server/node_modules/express/node_modules/connect/lib/middleware/vhost.js +1 -1
  24. data/server/node_modules/express/node_modules/connect/lib/utils.js +11 -4
  25. data/server/node_modules/express/node_modules/connect/node_modules/formidable/Makefile +14 -0
  26. data/server/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md +286 -0
  27. data/server/node_modules/express/node_modules/connect/node_modules/formidable/TODO +3 -0
  28. data/server/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js +70 -0
  29. data/server/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js +43 -0
  30. data/server/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js +48 -0
  31. data/server/node_modules/express/node_modules/connect/node_modules/formidable/index.js +1 -0
  32. data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js +61 -0
  33. data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js +377 -0
  34. data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js +3 -0
  35. data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js +312 -0
  36. data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js +25 -0
  37. data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/util.js +6 -0
  38. data/server/node_modules/express/node_modules/connect/node_modules/formidable/package.json +22 -0
  39. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js +19 -0
  40. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt +1 -0
  41. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt +1 -0
  42. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/no-filename/generic.http +13 -0
  43. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md +3 -0
  44. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-chrome-13.http +26 -0
  45. 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
  46. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-safari-5.http +23 -0
  47. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-chrome-12.http +24 -0
  48. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-7.http +22 -0
  49. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-8.http +22 -0
  50. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-safari-5.http +22 -0
  51. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js +3 -0
  52. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js +21 -0
  53. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multi_video.upload +0 -0
  54. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js +72 -0
  55. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js +89 -0
  56. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js +24 -0
  57. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js +80 -0
  58. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js +104 -0
  59. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js +715 -0
  60. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js +50 -0
  61. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js +45 -0
  62. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js +72 -0
  63. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js +2 -0
  64. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js +63 -0
  65. data/server/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js +47 -0
  66. data/server/node_modules/express/node_modules/connect/package.json +7 -6
  67. data/server/node_modules/express/node_modules/connect/test.js +44 -31
  68. data/server/node_modules/express/node_modules/qs/History.md +11 -0
  69. data/server/node_modules/express/node_modules/qs/Makefile +1 -3
  70. data/server/node_modules/express/node_modules/qs/Readme.md +2 -4
  71. data/server/node_modules/express/node_modules/qs/lib/querystring.js +100 -74
  72. data/server/node_modules/express/node_modules/qs/package.json +9 -2
  73. data/server/node_modules/express/node_modules/qs/test/mocha.opts +2 -0
  74. data/server/node_modules/express/node_modules/qs/test/{parse.test.js → parse.js} +1 -2
  75. data/server/node_modules/express/node_modules/qs/test/{stringify.test.js → stringify.js} +0 -0
  76. data/server/node_modules/express/package.json +7 -7
  77. data/server/node_modules/express/testing/foo/app.js +35 -0
  78. data/server/node_modules/express/testing/foo/package.json +9 -0
  79. data/server/node_modules/express/testing/foo/public/stylesheets/style.css +8 -0
  80. data/server/node_modules/express/testing/foo/routes/index.js +10 -0
  81. data/server/node_modules/express/testing/foo/views/index.jade +2 -0
  82. data/server/node_modules/express/testing/foo/views/layout.jade +6 -0
  83. data/server/node_modules/express/testing/index.js +31 -5
  84. data/server/node_modules/express/testing/public/test.txt +2971 -0
  85. data/server/node_modules/express/testing/views/page.html +1 -0
  86. data/server/node_modules/express/testing/views/page.jade +3 -0
  87. data/server/node_modules/express/testing/views/test.md +1 -0
  88. data/server/node_modules/express/testing/views/user/index.jade +1 -0
  89. data/server/node_modules/express/testing/views/user/list.jade +1 -0
  90. data/server/node_modules/node-uuid/README.md +166 -67
  91. data/server/node_modules/node-uuid/benchmark/README.md +53 -0
  92. data/server/node_modules/node-uuid/benchmark/bench.gnu +174 -0
  93. data/server/node_modules/node-uuid/benchmark/bench.sh +34 -0
  94. data/server/node_modules/node-uuid/{test → benchmark}/benchmark-native.c +0 -0
  95. data/server/node_modules/node-uuid/benchmark/benchmark.js +84 -0
  96. data/server/node_modules/node-uuid/package.json +5 -3
  97. data/server/node_modules/node-uuid/test/benchmark-native +0 -0
  98. data/server/node_modules/node-uuid/test/compare_v1.js +63 -0
  99. data/server/node_modules/node-uuid/test/test.html +3 -0
  100. data/server/node_modules/node-uuid/test/test.js +214 -57
  101. data/server/node_modules/node-uuid/uuid.js +225 -56
  102. data/server/node_modules/restler/README.md +20 -7
  103. data/server/node_modules/restler/bin/restler +1 -1
  104. data/server/node_modules/restler/lib/multipartform.js +9 -8
  105. data/server/node_modules/restler/lib/restler.js +64 -22
  106. data/server/node_modules/restler/package.json +2 -2
  107. data/server/node_modules/restler/test/restler.js +22 -2
  108. data/server/node_modules/restler/test/test_helper.js +20 -1
  109. data/server/package.json +8 -8
  110. data/server/web.js +22 -6
  111. metadata +72 -82
  112. data/server/node_modules/cradle/node_modules/vows/LICENSE +0 -20
  113. data/server/node_modules/cradle/node_modules/vows/Makefile +0 -7
  114. data/server/node_modules/cradle/node_modules/vows/README.md +0 -39
  115. data/server/node_modules/cradle/node_modules/vows/bin/vows +0 -515
  116. data/server/node_modules/cradle/node_modules/vows/lib/assert/error.js +0 -27
  117. data/server/node_modules/cradle/node_modules/vows/lib/assert/macros.js +0 -215
  118. data/server/node_modules/cradle/node_modules/vows/lib/assert/utils.js +0 -77
  119. data/server/node_modules/cradle/node_modules/vows/lib/vows.js +0 -193
  120. data/server/node_modules/cradle/node_modules/vows/lib/vows/console.js +0 -131
  121. data/server/node_modules/cradle/node_modules/vows/lib/vows/context.js +0 -55
  122. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/file.js +0 -29
  123. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/fragments/coverage-foot.html +0 -2
  124. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/fragments/coverage-head.html +0 -61
  125. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-html.js +0 -54
  126. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-json.js +0 -54
  127. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-plain.js +0 -38
  128. data/server/node_modules/cradle/node_modules/vows/lib/vows/extras.js +0 -28
  129. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/dot-matrix.js +0 -67
  130. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/json.js +0 -16
  131. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/silent.js +0 -8
  132. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/spec.js +0 -44
  133. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/watch.js +0 -39
  134. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/xunit.js +0 -90
  135. data/server/node_modules/cradle/node_modules/vows/lib/vows/suite.js +0 -319
  136. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/LICENSE +0 -20
  137. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/Makefile +0 -4
  138. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/README.md +0 -72
  139. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/lib/eyes.js +0 -233
  140. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/package.json +0 -14
  141. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/test/eyes-test.js +0 -55
  142. data/server/node_modules/cradle/node_modules/vows/package.json +0 -14
  143. data/server/node_modules/cradle/node_modules/vows/test/assert-test.js +0 -135
  144. data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/failing.js +0 -18
  145. data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/log.js +0 -18
  146. data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/passing.js +0 -17
  147. data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/stderr.js +0 -18
  148. data/server/node_modules/cradle/node_modules/vows/test/isolate-test.js +0 -140
  149. data/server/node_modules/cradle/node_modules/vows/test/testInherit.js +0 -133
  150. data/server/node_modules/cradle/node_modules/vows/test/vows-error-test.js +0 -51
  151. data/server/node_modules/cradle/node_modules/vows/test/vows-test.js +0 -374
  152. data/server/node_modules/express/node_modules/qs/support/expresso/History.md +0 -128
  153. data/server/node_modules/express/node_modules/qs/support/expresso/Makefile +0 -53
  154. data/server/node_modules/express/node_modules/qs/support/expresso/Readme.md +0 -61
  155. data/server/node_modules/express/node_modules/qs/support/expresso/bin/expresso +0 -856
  156. data/server/node_modules/express/node_modules/qs/support/expresso/docs/api.html +0 -1080
  157. data/server/node_modules/express/node_modules/qs/support/expresso/docs/index.html +0 -377
  158. data/server/node_modules/express/node_modules/qs/support/expresso/docs/index.md +0 -290
  159. data/server/node_modules/express/node_modules/qs/support/expresso/docs/layout/foot.html +0 -3
  160. data/server/node_modules/express/node_modules/qs/support/expresso/docs/layout/head.html +0 -42
  161. data/server/node_modules/express/node_modules/qs/support/expresso/lib/bar.js +0 -4
  162. data/server/node_modules/express/node_modules/qs/support/expresso/lib/foo.js +0 -16
  163. data/server/node_modules/express/node_modules/qs/support/expresso/package.json +0 -12
  164. data/server/node_modules/express/node_modules/qs/support/expresso/test/assert.test.js +0 -91
  165. data/server/node_modules/express/node_modules/qs/support/expresso/test/async.test.js +0 -12
  166. data/server/node_modules/express/node_modules/qs/support/expresso/test/bar.test.js +0 -13
  167. data/server/node_modules/express/node_modules/qs/support/expresso/test/foo.test.js +0 -14
  168. data/server/node_modules/express/node_modules/qs/support/expresso/test/http.test.js +0 -146
  169. data/server/node_modules/express/node_modules/qs/support/expresso/test/serial/async.test.js +0 -39
  170. data/server/node_modules/express/node_modules/qs/support/expresso/test/serial/http.test.js +0 -48
  171. data/server/node_modules/express/node_modules/qs/support/should/History.md +0 -22
  172. data/server/node_modules/express/node_modules/qs/support/should/Makefile +0 -6
  173. data/server/node_modules/express/node_modules/qs/support/should/Readme.md +0 -248
  174. data/server/node_modules/express/node_modules/qs/support/should/examples/runner.js +0 -53
  175. data/server/node_modules/express/node_modules/qs/support/should/index.js +0 -2
  176. data/server/node_modules/express/node_modules/qs/support/should/lib/eql.js +0 -91
  177. data/server/node_modules/express/node_modules/qs/support/should/lib/should.js +0 -548
  178. data/server/node_modules/express/node_modules/qs/support/should/package.json +0 -8
  179. data/server/node_modules/express/node_modules/qs/support/should/test/should.test.js +0 -358
  180. data/server/node_modules/express/testing/views/users.jade +0 -1
  181. 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,2 @@
1
+ #!/usr/bin/env node
2
+ require('urun')(__dirname)
@@ -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.7.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.3.1",
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.7.6",
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.1"
21
+ "should": "0.3.2"
21
22
  },
22
23
  "main": "index",
23
- "engines": { "node": ">= 0.4.1 < 0.5.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
- , fs = require('fs');
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
- // Connect: 2296
24
- // Connect+LRU: 4900
25
- // node-static: 3865
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
- // ab -n 5000 -c 50 -k http://local/Readme.md
15
+ http.createServer(app).listen(3000);
28
16
 
29
- // 472k
30
- // node-static: 1651rps
31
- // connect: 581rps
32
17
 
33
- // var static = require('node-static')
34
- // , file = new static.Server(__dirname);
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
- // var send = connect.static(__dirname);
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
 
@@ -1,7 +1,5 @@
1
1
 
2
2
  test:
3
- @./support/expresso/bin/expresso \
4
- -I support \
5
- -I lib
3
+ @./node_modules/.bin/mocha
6
4
 
7
5
  .PHONY: test
@@ -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
- Update git submodules:
16
+ Install dev dependencies:
18
17
 
19
- $ git submodule init
20
- $ git submodule update
18
+ $ npm install -d
21
19
 
22
20
  and execute:
23
21