Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

multipart no longer depends on Promise

  • Loading branch information...
commit 5fbc750db7c8b3b0d4c68aea4a9a00a31c6b3e9a 1 parent daacb81
ry ry authored
Showing with 20 additions and 15 deletions.
  1. +12 −9 doc/api.txt
  2. +8 −6 lib/multipart.js
21 doc/api.txt
View
@@ -1254,18 +1254,21 @@ Node. To use it, +require("multipart")+.
+
See the Stream class below.
-+multipart.cat(message)+ ::
- Returns a promise.
- - on success: Returns a multipart.Stream object representing the completed
- message. The body of each part is saved on the `body` member.
- - on error: Returns an instanceof Error object. This indicates
- that the message was malformed in some way.
++multipart.cat(message, callback)+ ::
+ On success, +callback+ is called with +(null, stream)+ where +stream+ is a
+ +multipart.Stream+ object representing the completed message. The body of
+ each part is saved on the `body` member.
+
- *Note*: This function saves the *entire* message into memory. As such,
- it is ill-suited to parsing actual incoming messages from an HTTP request!
+ On error, +callback+ is called with +(err)+ where +err+ is an instanceof
+ the +Error+ object. This indicates that the message was malformed in some
+ way.
+ +
+ *Note*: This function saves the *entire* message into memory. As such, it
+ is ill-suited to parsing actual incoming messages from an HTTP request!
If a user uploads a very large file, then it may cause serious problems.
No checking is done to ensure that the file does not overload the memory.
- Only use multipart.cat with known and trusted input!
+ Only use +multipart.cat+ with known and trusted input!
+
=== +multipart.Stream+
14 lib/multipart.js
View
@@ -37,9 +37,8 @@ function parse (message) {
// rack up as much memory usage as they can manage. This function
// buffers the whole message, which is very convenient, but also
// very much the wrong thing to do in most cases.
-function cat (message) {
- var p = new (events.Promise),
- stream = parse(message);
+function cat (message, callback) {
+ var stream = parse(message);
stream.files = {};
stream.fields = {};
stream.addListener("partBegin", function (part) {
@@ -49,9 +48,12 @@ function cat (message) {
stream.addListener("body", function (chunk) {
stream.part.body = (stream.part.body || "") + chunk;
});
- stream.addListener("error", function (e) { p.emitError(e) });
- stream.addListener("complete", function () { p.emitSuccess(stream) });
- return p;
+ stream.addListener("error", function (e) { p.emitError(e)
+ if (callback) callback(e);
+ });
+ stream.addListener("complete", function () {
+ if (callback) callback(null, stream);
+ });
};
// events:
Please sign in to comment.
Something went wrong with that request. Please try again.