vulcan 0.2.5 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +1 -80
- data/lib/vulcan/cli.rb +12 -33
- data/lib/vulcan/version.rb +1 -1
- data/server/bin/make +3 -1
- data/server/lib/spawner.js +4 -9
- data/server/node_modules/connect-form/node_modules/formidable/Readme.md +2 -13
- data/server/node_modules/connect-form/node_modules/formidable/lib/incoming_form.js +7 -19
- data/server/node_modules/connect-form/node_modules/formidable/lib/multipart_parser.js +1 -12
- data/server/node_modules/connect-form/node_modules/formidable/package.json +1 -1
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-chrome-13.http +10 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-chrome-12.http +9 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/legacy/simple/test-multipart-parser.js +1 -1
- data/server/node_modules/cradle/lib/cradle.js +1 -0
- data/server/node_modules/cradle/node_modules/vows/LICENSE +20 -0
- data/server/node_modules/cradle/node_modules/vows/Makefile +7 -0
- data/server/node_modules/cradle/node_modules/vows/README.md +39 -0
- data/server/node_modules/cradle/node_modules/vows/bin/vows +515 -0
- data/server/node_modules/cradle/node_modules/vows/lib/assert/error.js +27 -0
- data/server/node_modules/cradle/node_modules/vows/lib/assert/macros.js +215 -0
- data/server/node_modules/cradle/node_modules/vows/lib/assert/utils.js +77 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows.js +193 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/console.js +131 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/context.js +55 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/file.js +29 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/fragments/coverage-foot.html +2 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/fragments/coverage-head.html +61 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-html.js +54 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-json.js +54 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-plain.js +38 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/extras.js +28 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/dot-matrix.js +67 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/json.js +16 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/silent.js +8 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/spec.js +44 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/watch.js +39 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/xunit.js +90 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/suite.js +319 -0
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/LICENSE +20 -0
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/Makefile +4 -0
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/README.md +72 -0
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/lib/eyes.js +233 -0
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/package.json +14 -0
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/test/eyes-test.js +55 -0
- data/server/node_modules/cradle/node_modules/vows/package.json +14 -0
- data/server/node_modules/cradle/node_modules/vows/test/assert-test.js +135 -0
- data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/failing.js +18 -0
- data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/log.js +18 -0
- data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/passing.js +17 -0
- data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/stderr.js +18 -0
- data/server/node_modules/cradle/node_modules/vows/test/isolate-test.js +140 -0
- data/server/node_modules/cradle/node_modules/vows/test/testInherit.js +133 -0
- data/server/node_modules/cradle/node_modules/vows/test/vows-error-test.js +51 -0
- data/server/node_modules/cradle/node_modules/vows/test/vows-test.js +374 -0
- data/server/node_modules/cradle/package.json +3 -3
- data/server/node_modules/cradle/test/cache-test.js +7 -6
- data/server/node_modules/cradle/test/cradle-test.js +5 -4
- data/server/node_modules/cradle/test/response-test.js +6 -5
- data/server/node_modules/express/History.md +1 -53
- data/server/node_modules/express/Makefile +9 -3
- data/server/node_modules/express/Readme.md +1 -3
- data/server/node_modules/express/bin/express +66 -65
- data/server/node_modules/express/lib/express.js +1 -1
- data/server/node_modules/express/lib/request.js +9 -23
- data/server/node_modules/express/lib/response.js +2 -3
- data/server/node_modules/express/lib/utils.js +0 -13
- data/server/node_modules/express/lib/view.js +16 -19
- data/server/node_modules/express/lib/view/view.js +1 -2
- data/server/node_modules/express/node_modules/connect/lib/connect.js +1 -1
- data/server/node_modules/express/node_modules/connect/lib/http.js +0 -2
- data/server/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js +31 -135
- data/server/node_modules/express/node_modules/connect/lib/middleware/limit.js +1 -5
- 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 +21 -26
- data/server/node_modules/express/node_modules/connect/lib/middleware/staticCache.js +38 -91
- 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 +4 -11
- data/server/node_modules/express/node_modules/connect/package.json +6 -7
- data/server/node_modules/express/node_modules/connect/test.js +31 -44
- data/server/node_modules/express/node_modules/mime/index.js +1 -0
- data/server/node_modules/express/node_modules/mime/mime.js +3 -3
- data/server/node_modules/express/node_modules/mime/{types/mime.types → mime.types} +0 -0
- data/server/node_modules/express/node_modules/mime/{types/node.types → node.types} +0 -17
- data/server/node_modules/express/node_modules/mime/package.json +10 -21
- data/server/node_modules/express/node_modules/mime/test.js +3 -2
- data/server/node_modules/express/node_modules/qs/History.md +0 -11
- data/server/node_modules/express/node_modules/qs/Makefile +3 -1
- data/server/node_modules/express/node_modules/qs/Readme.md +4 -2
- data/server/node_modules/express/node_modules/qs/lib/querystring.js +74 -100
- data/server/node_modules/express/node_modules/qs/package.json +2 -9
- data/server/node_modules/express/node_modules/qs/support/expresso/History.md +128 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/Makefile +53 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/Readme.md +61 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/bin/expresso +856 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/api.html +1080 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/index.html +377 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/index.md +290 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/layout/foot.html +3 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/layout/head.html +42 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/lib/bar.js +4 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/lib/foo.js +16 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/package.json +12 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/test/assert.test.js +91 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/test/async.test.js +12 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/test/bar.test.js +13 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/test/foo.test.js +14 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/test/http.test.js +146 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/test/serial/async.test.js +39 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/test/serial/http.test.js +48 -0
- data/server/node_modules/express/node_modules/qs/support/should/History.md +22 -0
- data/server/node_modules/express/node_modules/qs/support/should/Makefile +6 -0
- data/server/node_modules/express/node_modules/qs/support/should/Readme.md +248 -0
- data/server/node_modules/express/node_modules/qs/support/should/examples/runner.js +53 -0
- data/server/node_modules/express/node_modules/qs/support/should/index.js +2 -0
- data/server/node_modules/express/node_modules/qs/support/should/lib/eql.js +91 -0
- data/server/node_modules/express/node_modules/qs/support/should/lib/should.js +548 -0
- data/server/node_modules/express/node_modules/qs/support/should/package.json +8 -0
- data/server/node_modules/express/node_modules/qs/support/should/test/should.test.js +358 -0
- data/server/node_modules/express/node_modules/qs/test/{parse.js → parse.test.js} +2 -1
- data/server/node_modules/express/node_modules/qs/test/{stringify.js → stringify.test.js} +0 -0
- data/server/node_modules/express/package.json +8 -9
- data/server/node_modules/node-uuid/README.md +67 -166
- data/server/node_modules/node-uuid/package.json +3 -5
- data/server/node_modules/node-uuid/{benchmark → test}/benchmark-native.c +0 -0
- data/server/node_modules/node-uuid/test/benchmark.js +27 -0
- data/server/node_modules/node-uuid/test/test.html +0 -3
- data/server/node_modules/node-uuid/test/test.js +57 -214
- data/server/node_modules/node-uuid/uuid.js +56 -225
- data/server/node_modules/restler/README.md +7 -20
- data/server/node_modules/restler/bin/restler +1 -1
- data/server/node_modules/restler/lib/multipartform.js +8 -9
- data/server/node_modules/restler/lib/restler.js +22 -64
- data/server/node_modules/restler/package.json +2 -2
- data/server/node_modules/restler/test/restler.js +2 -22
- data/server/node_modules/restler/test/test_helper.js +1 -20
- data/server/package.json +10 -10
- data/server/web.js +7 -30
- metadata +96 -89
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/file/plain.txt +0 -1
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/no-filename/generic.http +0 -13
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/js/no-filename.js +0 -3
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/Makefile +0 -14
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md +0 -286
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/TODO +0 -3
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js +0 -70
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js +0 -43
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js +0 -48
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/index.js +0 -1
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js +0 -61
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js +0 -377
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js +0 -3
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js +0 -312
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js +0 -25
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/util.js +0 -6
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/package.json +0 -22
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js +0 -19
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt +0 -1
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt +0 -1
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/no-filename/generic.http +0 -13
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md +0 -3
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-chrome-13.http +0 -26
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-firefox-3.6.http +0 -24
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-safari-5.http +0 -23
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-chrome-12.http +0 -24
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-7.http +0 -22
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-8.http +0 -22
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-safari-5.http +0 -22
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js +0 -3
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js +0 -21
- 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 +0 -72
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js +0 -89
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js +0 -24
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js +0 -80
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js +0 -104
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js +0 -715
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js +0 -50
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js +0 -45
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js +0 -72
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js +0 -2
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js +0 -63
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js +0 -47
- data/server/node_modules/express/node_modules/mkdirp/LICENSE +0 -21
- data/server/node_modules/express/node_modules/mkdirp/README.markdown +0 -21
- data/server/node_modules/express/node_modules/mkdirp/examples/pow.js +0 -6
- data/server/node_modules/express/node_modules/mkdirp/examples/pow.js.orig +0 -6
- data/server/node_modules/express/node_modules/mkdirp/examples/pow.js.rej +0 -19
- data/server/node_modules/express/node_modules/mkdirp/index.js +0 -20
- data/server/node_modules/express/node_modules/mkdirp/package.json +0 -23
- data/server/node_modules/express/node_modules/mkdirp/test/mkdirp.js +0 -28
- data/server/node_modules/express/node_modules/mkdirp/test/race.js +0 -41
- data/server/node_modules/express/node_modules/mkdirp/test/rel.js +0 -32
- data/server/node_modules/express/node_modules/qs/test/mocha.opts +0 -2
- data/server/node_modules/express/testing/foo/app.js +0 -35
- data/server/node_modules/express/testing/foo/package.json +0 -9
- data/server/node_modules/express/testing/foo/public/stylesheets/style.css +0 -8
- data/server/node_modules/express/testing/foo/routes/index.js +0 -10
- data/server/node_modules/express/testing/foo/views/index.jade +0 -2
- data/server/node_modules/express/testing/foo/views/layout.jade +0 -6
- data/server/node_modules/express/testing/index.js +0 -43
- data/server/node_modules/express/testing/public/test.txt +0 -2971
- data/server/node_modules/express/testing/views/page.html +0 -1
- data/server/node_modules/express/testing/views/page.jade +0 -3
- data/server/node_modules/express/testing/views/test.md +0 -1
- data/server/node_modules/express/testing/views/user/index.jade +0 -1
- data/server/node_modules/express/testing/views/user/list.jade +0 -1
- data/server/node_modules/node-uuid/benchmark/README.md +0 -53
- data/server/node_modules/node-uuid/benchmark/bench.gnu +0 -174
- data/server/node_modules/node-uuid/benchmark/bench.sh +0 -34
- data/server/node_modules/node-uuid/benchmark/benchmark.js +0 -84
- data/server/node_modules/node-uuid/test/benchmark-native +0 -0
- data/server/node_modules/node-uuid/test/compare_v1.js +0 -63
@@ -1,12 +1,10 @@
|
|
1
|
-
Restler 0.2.
|
1
|
+
Restler 0.2.0
|
2
2
|
===========
|
3
3
|
|
4
4
|
(C) Dan Webb (dan@danwebb.net/@danwrong) 2011, Licensed under the MIT-LICENSE
|
5
5
|
|
6
6
|
An HTTP client library for node.js (0.3 and up). Hides most of the complexity of creating and using http.Client. Very early days yet.
|
7
7
|
|
8
|
-
See [Version History](https://github.com/danwrong/restler/wiki/Version-History) for changes
|
9
|
-
|
10
8
|
|
11
9
|
Features
|
12
10
|
--------
|
@@ -21,9 +19,8 @@ Features
|
|
21
19
|
* Transparently handle SSL (just specify https in the URL)
|
22
20
|
* Deals with basic auth for you, just provide username and password options
|
23
21
|
* Simple service wrapper that allows you to easily put together REST API libraries
|
24
|
-
|
25
|
-
|
26
|
-
|
22
|
+
|
23
|
+
|
27
24
|
API
|
28
25
|
---
|
29
26
|
|
@@ -71,12 +68,9 @@ All of these attempt to turn the response into a JavaScript object. In order to
|
|
71
68
|
|
72
69
|
* _method_ Request method, can be get, post, put, del
|
73
70
|
* _query_ Query string variables as a javascript object, will override the querystring in the URL
|
74
|
-
* _data_ The data to be added to the body of the request. Can be a string or any object
|
75
|
-
Note that if you want your request body to be JSON with the Content-Type `application/json`, you need to
|
76
|
-
JSON.stringify your object first. Otherwise, it will be sent as `application/x-www-form-urlencoded` and encoded accordingly.
|
71
|
+
* _data_ The data to be added to the body of the request. Can be a string or any object
|
77
72
|
* _parser_ A function that will be called on the returned data. try parsers.auto, parsers.json etc
|
78
73
|
* _encoding_ The encoding of the request body. defaults to utf8
|
79
|
-
* _decoding_ The encoding of the response body. For a list of supported values see [Buffers](http://nodejs.org/docs/latest/api/buffers.html#buffers). Additionally accepts `"buffer"` - returns response as `Buffer`. Defaults to `utf8`.
|
80
74
|
* _headers_ a hash of HTTP headers to be sent
|
81
75
|
* _username_ Basic auth username
|
82
76
|
* _password_ Basic auth password
|
@@ -88,7 +82,7 @@ JSON.stringify your object first. Otherwise, it will be sent as `application/x-w
|
|
88
82
|
Example usage
|
89
83
|
-------------
|
90
84
|
|
91
|
-
var sys = require('
|
85
|
+
var sys = require('sys'),
|
92
86
|
rest = require('./restler');
|
93
87
|
|
94
88
|
rest.get('http://google.com').on('complete', function(data) {
|
@@ -118,7 +112,7 @@ Example usage
|
|
118
112
|
password: 'wouldntyouliketoknow',
|
119
113
|
data: {
|
120
114
|
'sound[message]': 'hello from restler!',
|
121
|
-
'sound[file]': rest.file('doug-e-fresh_the-show.mp3',
|
115
|
+
'sound[file]': rest.file('doug-e-fresh_the-show.mp3', 'audio/mpeg')
|
122
116
|
}
|
123
117
|
}).on('complete', function(data) {
|
124
118
|
sys.puts(data.audio_url);
|
@@ -141,13 +135,6 @@ Example usage
|
|
141
135
|
sys.p(data);
|
142
136
|
});
|
143
137
|
|
144
|
-
// the JSON post
|
145
|
-
rest.post('http://example.com/action', {
|
146
|
-
data: JSON.stringify({ id: 334 }),
|
147
|
-
}).on('complete', function(data, response) {
|
148
|
-
// you can get at the raw response like this...
|
149
|
-
});
|
150
|
-
|
151
138
|
|
152
139
|
Running the tests
|
153
140
|
-----------------
|
@@ -157,4 +144,4 @@ Running the tests
|
|
157
144
|
TODO
|
158
145
|
----
|
159
146
|
* Deal with no utf-8 response bodies
|
160
|
-
* What do you need? Let me know or fork.
|
147
|
+
* What do you need? Let me know or fork.
|
@@ -1,5 +1,5 @@
|
|
1
1
|
var fs = require('fs');
|
2
|
-
var sys = require(
|
2
|
+
var sys = require("sys")
|
3
3
|
exports.defaultBoundary = '48940923NODERESLTER3890457293';
|
4
4
|
|
5
5
|
|
@@ -109,7 +109,7 @@ Part.prototype = {
|
|
109
109
|
fs.open(this.value.path, "r", 0666, function (err, fd) {
|
110
110
|
if (err) throw err;
|
111
111
|
|
112
|
-
|
112
|
+
position = 0;
|
113
113
|
|
114
114
|
(function reader () {
|
115
115
|
fs.read(fd, 1024 * 4, position, "binary", function (er, chunk) {
|
@@ -142,13 +142,12 @@ function MultiPartRequest(data, boundary) {
|
|
142
142
|
|
143
143
|
MultiPartRequest.prototype = {
|
144
144
|
_partNames: function() {
|
145
|
-
|
146
|
-
|
147
|
-
|
145
|
+
partNames = []
|
146
|
+
for (var name in this.data) {
|
147
|
+
partNames.push(name)
|
148
148
|
}
|
149
149
|
return partNames;
|
150
150
|
},
|
151
|
-
|
152
151
|
write: function(stream, callback) {
|
153
152
|
var partCount = 0, self = this;
|
154
153
|
|
@@ -158,8 +157,8 @@ MultiPartRequest.prototype = {
|
|
158
157
|
|
159
158
|
// Let each part write itself out to the stream
|
160
159
|
(function writePart() {
|
161
|
-
|
162
|
-
|
160
|
+
partName = this.partNames[partCount];
|
161
|
+
part = new Part(partName, self.data[partName], self.boundary);
|
163
162
|
part.write(stream, function (err) {
|
164
163
|
if (err) {
|
165
164
|
callback(err);
|
@@ -200,4 +199,4 @@ var exportMethods = {
|
|
200
199
|
|
201
200
|
Object.keys(exportMethods).forEach(function(exportMethod) {
|
202
201
|
exports[exportMethod] = exportMethods[exportMethod]
|
203
|
-
})
|
202
|
+
})
|
@@ -1,10 +1,9 @@
|
|
1
|
-
var sys = require('
|
1
|
+
var sys = require('sys'),
|
2
2
|
http = require('http'),
|
3
3
|
https = require('https'),
|
4
4
|
url = require('url'),
|
5
5
|
qs = require('querystring'),
|
6
|
-
multipart = require('./multipartform')
|
7
|
-
zlib = require('zlib');
|
6
|
+
multipart = require('./multipartform');
|
8
7
|
|
9
8
|
function mixin(target, source) {
|
10
9
|
Object.keys(source).forEach(function(key) {
|
@@ -21,7 +20,7 @@ function Request(uri, options) {
|
|
21
20
|
'Accept': '*/*',
|
22
21
|
'User-Agent': 'Restler for node.js',
|
23
22
|
'Host': this.url.host
|
24
|
-
}
|
23
|
+
}
|
25
24
|
|
26
25
|
mixin(this.headers, options.headers || {});
|
27
26
|
|
@@ -47,11 +46,6 @@ function Request(uri, options) {
|
|
47
46
|
this.headers['Content-Type'] = 'application/x-www-form-urlencoded';
|
48
47
|
this.headers['Content-Length'] = this.options.data.length;
|
49
48
|
}
|
50
|
-
if(typeof this.options.data == 'string') {
|
51
|
-
var buffer = new Buffer(this.options.data, this.options.encoding || 'utf8');
|
52
|
-
this.options.data = buffer;
|
53
|
-
this.headers['Content-Length'] = buffer.length;
|
54
|
-
}
|
55
49
|
}
|
56
50
|
|
57
51
|
var proto = (this.url.protocol == 'https:') ? https : http;
|
@@ -68,10 +62,9 @@ function Request(uri, options) {
|
|
68
62
|
}
|
69
63
|
|
70
64
|
Request.prototype = new process.EventEmitter();
|
71
|
-
|
72
65
|
mixin(Request.prototype, {
|
73
66
|
_isRedirect: function(response) {
|
74
|
-
return ([301, 302
|
67
|
+
return ([301, 302].indexOf(response.statusCode) >= 0);
|
75
68
|
},
|
76
69
|
_fullPath: function() {
|
77
70
|
var path = this.url.pathname || '/';
|
@@ -108,46 +101,25 @@ mixin(Request.prototype, {
|
|
108
101
|
} else {
|
109
102
|
var body = '';
|
110
103
|
|
111
|
-
|
104
|
+
// TODO Handle different encodings
|
105
|
+
response.setEncoding('utf8');
|
112
106
|
|
113
107
|
response.on('data', function(chunk) {
|
114
108
|
body += chunk;
|
115
109
|
});
|
116
110
|
|
117
111
|
response.on('end', function() {
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
});
|
112
|
+
if (self.options.parser) {
|
113
|
+
self.options.parser.call(response, body, function(parsedData) {
|
114
|
+
|
115
|
+
self._fireEvents(parsedData, response);
|
116
|
+
});
|
117
|
+
} else {
|
118
|
+
self._fireEvents(body, response);
|
119
|
+
}
|
127
120
|
});
|
128
121
|
}
|
129
122
|
},
|
130
|
-
_decode: function(body, response, callback) {
|
131
|
-
var encoder = response.headers['content-encoding'];
|
132
|
-
if (encoder in decoders) {
|
133
|
-
decoders[encoder].call(response, body, callback);
|
134
|
-
} else {
|
135
|
-
callback(null, body);
|
136
|
-
}
|
137
|
-
},
|
138
|
-
_encode: function(body, response, callback) {
|
139
|
-
var self = this;
|
140
|
-
if (self.options.decoding == 'buffer') {
|
141
|
-
callback(body);
|
142
|
-
} else {
|
143
|
-
body = body.toString(self.options.decoding);
|
144
|
-
if (self.options.parser) {
|
145
|
-
self.options.parser.call(response, body, callback);
|
146
|
-
} else {
|
147
|
-
callback(body);
|
148
|
-
}
|
149
|
-
}
|
150
|
-
},
|
151
123
|
_respond: function(type, data, response) {
|
152
124
|
if (this.options.originalRequest) {
|
153
125
|
this.options.originalRequest.emit(type, data, response);
|
@@ -163,11 +135,11 @@ mixin(Request.prototype, {
|
|
163
135
|
this._respond(response.statusCode.toString(), body, response);
|
164
136
|
this._respond('complete', body, response);
|
165
137
|
},
|
166
|
-
_makeRequest: function() {
|
138
|
+
_makeRequest: function() {
|
167
139
|
var self = this;
|
168
140
|
|
169
141
|
this.request.on('response', function(response) {
|
170
|
-
|
142
|
+
self._responseHandler(response);
|
171
143
|
}).on('error', function(err) {
|
172
144
|
self._respond('error', null, err);
|
173
145
|
});
|
@@ -183,7 +155,7 @@ mixin(Request.prototype, {
|
|
183
155
|
if (this.options.data) {
|
184
156
|
this.request.write(this.options.data.toString(), this.options.encoding || 'utf8');
|
185
157
|
}
|
186
|
-
|
158
|
+
this.request.end();
|
187
159
|
}
|
188
160
|
|
189
161
|
return this;
|
@@ -198,9 +170,7 @@ function shortcutOptions(options, method) {
|
|
198
170
|
}
|
199
171
|
|
200
172
|
function request(url, options) {
|
201
|
-
|
202
|
-
request.on('error', function() {});
|
203
|
-
return request.run();
|
173
|
+
return (new Request(url, options)).run();
|
204
174
|
}
|
205
175
|
|
206
176
|
function get(url, options) {
|
@@ -237,7 +207,7 @@ var parsers = {
|
|
237
207
|
json: function(data, callback) {
|
238
208
|
callback(data && JSON.parse(data));
|
239
209
|
}
|
240
|
-
}
|
210
|
+
}
|
241
211
|
|
242
212
|
parsers.auto.matchers = {
|
243
213
|
'application/json': parsers.json
|
@@ -263,27 +233,15 @@ try {
|
|
263
233
|
parser.on('end', function(result) {
|
264
234
|
callback(result);
|
265
235
|
});
|
266
|
-
|
267
|
-
|
268
|
-
} catch (e) {
|
269
|
-
callback({error:'Oops, something went wrong.'});
|
270
|
-
}
|
236
|
+
|
237
|
+
parser.parseString(data);
|
271
238
|
} else {
|
272
239
|
callback();
|
273
240
|
}
|
274
241
|
};
|
275
242
|
|
276
243
|
parsers.auto.matchers['application/xml'] = parsers.xml;
|
277
|
-
} catch(e) {
|
278
|
-
|
279
|
-
var decoders = {
|
280
|
-
gzip: function(buf, callback) {
|
281
|
-
zlib.gunzip(buf, callback);
|
282
|
-
},
|
283
|
-
deflate: function(buf, callback) {
|
284
|
-
zlib.inflate(buf, callback);
|
285
|
-
}
|
286
|
-
};
|
244
|
+
} catch(e) {}
|
287
245
|
|
288
246
|
|
289
247
|
function Service(defaults) {
|
@@ -1,10 +1,10 @@
|
|
1
1
|
{
|
2
2
|
"name": "restler",
|
3
|
-
"version": "0.2.
|
3
|
+
"version": "0.2.1",
|
4
4
|
"description": "An HTTP client library for node.js",
|
5
5
|
"contributors": [{ "name": "Dan Webb", "email": "dan@danwebb.net" }],
|
6
6
|
"homepage": "https://github.com/danwrong/restler",
|
7
7
|
"directories" : { "lib" : "./lib" },
|
8
8
|
"main" : "./lib/restler",
|
9
9
|
"engines": { "node": ">= 0.3.7" }
|
10
|
-
}
|
10
|
+
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
var helper = require('./test_helper'),
|
2
2
|
rest = require('../lib/restler'),
|
3
|
-
sys = require('
|
3
|
+
sys = require('sys');
|
4
4
|
|
5
5
|
helper.testCase("Basic Tests", helper.echoServer, {
|
6
6
|
testRequestShouldTakePath: function(host, test) {
|
@@ -145,24 +145,4 @@ helper.testCase('Redirect Tests', helper.redirectServer, {
|
|
145
145
|
test.equal('Hell Yeah!', data, "returned " + sys.inspect(data));
|
146
146
|
});
|
147
147
|
}
|
148
|
-
});
|
149
|
-
|
150
|
-
helper.testCase('Content-Length Tests', helper.contentLengthServer, {
|
151
|
-
testRequestHeaderIncludesContentLengthWithJSONData: function(host, test){
|
152
|
-
var jsonString = JSON.stringify({ greeting: 'hello world' });
|
153
|
-
rest.post(host, {
|
154
|
-
data: jsonString
|
155
|
-
}).on('complete', function(data){
|
156
|
-
test.equal(26, data, 'should set content-length');
|
157
|
-
});
|
158
|
-
},
|
159
|
-
testJSONMultibyteContentLength: function (host, test){
|
160
|
-
var multibyteData = JSON.stringify({ greeting: 'こんにちは世界' });
|
161
|
-
rest.post(host, {
|
162
|
-
data: multibyteData
|
163
|
-
}).on('complete', function(data) {
|
164
|
-
test.notEqual(22, data, 'should unicode string length');
|
165
|
-
test.equal(36, data, 'should byte-size content-length');
|
166
|
-
});
|
167
|
-
}
|
168
|
-
});
|
148
|
+
});
|
@@ -1,5 +1,5 @@
|
|
1
1
|
var http = require("http"),
|
2
|
-
sys = require('
|
2
|
+
sys = require('sys'),
|
3
3
|
test = require('assert');
|
4
4
|
|
5
5
|
exports.echoServer = function() {
|
@@ -84,25 +84,6 @@ exports.redirectServer = function() {
|
|
84
84
|
return ["http://localhost:" + port, server];
|
85
85
|
}
|
86
86
|
|
87
|
-
exports.contentLengthServer = function (){
|
88
|
-
var port = exports.port++;
|
89
|
-
|
90
|
-
var server = http.createServer(function(request, response){
|
91
|
-
response.writeHead(200, { 'Content-Type': 'text/plain' });
|
92
|
-
if('content-length' in request.headers){
|
93
|
-
response.write(request.headers['content-length']);
|
94
|
-
} else {
|
95
|
-
response.write('content-length isnot set');
|
96
|
-
}
|
97
|
-
|
98
|
-
response.end();
|
99
|
-
server.close();
|
100
|
-
});
|
101
|
-
|
102
|
-
server.listen(port, 'localhost');
|
103
|
-
return ['http://localhost:' + port, server];
|
104
|
-
};
|
105
|
-
|
106
87
|
exports.port = 7000;
|
107
88
|
|
108
89
|
exports.testCase = function(caseName, serverFunc, tests) {
|
data/server/package.json
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
{
|
2
2
|
"name": "heroku-make",
|
3
3
|
"version": "0.0.1",
|
4
|
-
"dependencies":
|
5
|
-
"connect-form"
|
6
|
-
"cradle"
|
7
|
-
"express"
|
8
|
-
"knox"
|
9
|
-
"node-uuid"
|
10
|
-
"restler"
|
11
|
-
|
4
|
+
"dependencies": [
|
5
|
+
"connect-form",
|
6
|
+
"cradle",
|
7
|
+
"express",
|
8
|
+
"knox",
|
9
|
+
"node-uuid",
|
10
|
+
"restler"
|
11
|
+
],
|
12
12
|
"engines": {
|
13
|
-
"node": "0.6.
|
14
|
-
"npm":
|
13
|
+
"node": ">=0.4.7 <0.6.0",
|
14
|
+
"npm": ">=1.0.0"
|
15
15
|
}
|
16
16
|
}
|
data/server/web.js
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
+
require.paths.unshift(__dirname + '/lib');
|
2
|
+
|
1
3
|
var cradle = require('cradle');
|
2
4
|
var express = require('express');
|
3
5
|
var fs = require('fs');
|
4
6
|
var spawner = require('spawner').create();
|
5
|
-
var
|
7
|
+
var sys = require('sys');
|
6
8
|
var uuid = require('node-uuid');
|
7
9
|
|
8
10
|
var app = express.createServer(
|
@@ -12,14 +14,6 @@ var app = express.createServer(
|
|
12
14
|
require('connect-form')({ keepExtensions: true })
|
13
15
|
);
|
14
16
|
|
15
|
-
function log_action(uuid, message) {
|
16
|
-
console.log(uuid + ': ' + message);
|
17
|
-
}
|
18
|
-
|
19
|
-
function log_error(uuid, message) {
|
20
|
-
log_action(uuid, 'ERROR: ' + message);
|
21
|
-
}
|
22
|
-
|
23
17
|
// connect to couchdb
|
24
18
|
var couchdb_url = require('url').parse(process.env.CLOUDANT_URL);
|
25
19
|
var couchdb_options = couchdb_url.auth ?
|
@@ -33,7 +27,6 @@ app.post('/make', function(request, response, next) {
|
|
33
27
|
|
34
28
|
// require a form
|
35
29
|
if (! request.form) {
|
36
|
-
console.log('invalid form');
|
37
30
|
response.write('invalid form');
|
38
31
|
response.send(500);
|
39
32
|
} else {
|
@@ -55,12 +48,10 @@ app.post('/make', function(request, response, next) {
|
|
55
48
|
var prefix = fields.prefix;
|
56
49
|
|
57
50
|
// create a couchdb documents for this build
|
58
|
-
log_action(id, 'saving to couchdb');
|
59
51
|
db.save(id, { command:command, prefix:prefix }, function(err, doc) {
|
60
|
-
if (err) {
|
52
|
+
if (err) { return next(err); }
|
61
53
|
|
62
54
|
// save the input tarball as an attachment
|
63
|
-
log_action(id, 'saving attachment - [id:' + doc.id + ', rev:' + doc.rev + ']')
|
64
55
|
db.saveAttachment(
|
65
56
|
doc.id,
|
66
57
|
doc.rev,
|
@@ -68,26 +59,16 @@ app.post('/make', function(request, response, next) {
|
|
68
59
|
'application/octet-stream',
|
69
60
|
fs.createReadStream(files.code.path),
|
70
61
|
function(err, data) {
|
71
|
-
if (err) {
|
72
|
-
// work around temporary problem with cloudant and document
|
73
|
-
// conflicts
|
74
|
-
if (err.error != 'conflict') {
|
75
|
-
log_error(id, err.reason);
|
76
|
-
return next(err.reason);
|
77
|
-
}
|
78
|
-
}
|
62
|
+
if (err) { return next(err); }
|
79
63
|
|
80
64
|
// spawn bin/make with this build id
|
81
|
-
log_action(id, 'spawning build');
|
82
65
|
var ls = spawner.spawn('bin/make ' + id, function(err) {
|
83
|
-
log_error(id, 'could not spawn: ' + err);
|
84
66
|
response.write('could not spawn: ' + err);
|
85
67
|
response.send(500);
|
86
68
|
});
|
87
69
|
|
88
70
|
ls.on('error', function(error) {
|
89
|
-
|
90
|
-
response.write('error: ' + util.inspect(error));
|
71
|
+
response.write('error: ' + err);
|
91
72
|
response.send(500);
|
92
73
|
});
|
93
74
|
|
@@ -105,7 +86,7 @@ app.post('/make', function(request, response, next) {
|
|
105
86
|
response.header('X-Make-Id', id);
|
106
87
|
});
|
107
88
|
}
|
108
|
-
|
89
|
+
|
109
90
|
});
|
110
91
|
}
|
111
92
|
});
|
@@ -116,10 +97,6 @@ app.get('/output/:id', function(request, response, next) {
|
|
116
97
|
// from couchdb
|
117
98
|
var stream = db.getAttachment(request.params.id, 'output');
|
118
99
|
|
119
|
-
stream.on('error', function(err) {
|
120
|
-
console.log('download error: ' + err);
|
121
|
-
});
|
122
|
-
|
123
100
|
stream.on('data', function(chunk) {
|
124
101
|
response.write(chunk, 'binary');
|
125
102
|
});
|