feat: ✨ Created a mini nodeJS server with NewMan for testing without PostMan GUI.
This will mimic a run in a CD/CI environment or docker container.
This commit is contained in:
82
node_modules/stream-length/lib/stream-length.coffee
generated
vendored
Normal file
82
node_modules/stream-length/lib/stream-length.coffee
generated
vendored
Normal file
@@ -0,0 +1,82 @@
|
||||
Promise = require "bluebird"
|
||||
fs = Promise.promisifyAll(require "fs")
|
||||
|
||||
nodeifyWrapper = (callback, func) ->
|
||||
func().nodeify(callback)
|
||||
|
||||
createRetrieverPromise = (stream, retriever) ->
|
||||
new Promise (resolve, reject) ->
|
||||
retriever stream, (result) ->
|
||||
if result?
|
||||
if result instanceof Error
|
||||
reject result
|
||||
else
|
||||
resolve result
|
||||
else
|
||||
reject new Error("Could not find a length using this lengthRetriever.")
|
||||
|
||||
retrieveBuffer = (stream, callback) ->
|
||||
if stream instanceof Buffer
|
||||
callback stream.length
|
||||
else
|
||||
callback null
|
||||
|
||||
retrieveFilesystemStream = (stream, callback) ->
|
||||
if stream.hasOwnProperty "fd"
|
||||
# FIXME: https://github.com/joyent/node/issues/7819
|
||||
if stream.end != undefined and stream.end != Infinity and stream.start != undefined
|
||||
# A stream start and end were defined, we can calculate the size just from that information.
|
||||
callback(stream.end + 1 - (stream.start ? 0))
|
||||
else
|
||||
# We have the start offset at most, stat the file and work off the filesize.
|
||||
Promise.try ->
|
||||
fs.statAsync stream.path
|
||||
.then (stat) ->
|
||||
callback(stat.size - (stream.start ? 0))
|
||||
.catch (err) ->
|
||||
callback err
|
||||
else
|
||||
callback null
|
||||
|
||||
retrieveCoreHttpStream = (stream, callback) ->
|
||||
if stream.hasOwnProperty("httpVersion") and stream.headers["content-length"]?
|
||||
callback parseInt(stream.headers["content-length"])
|
||||
else
|
||||
callback null
|
||||
|
||||
retrieveRequestHttpStream = (stream, callback) ->
|
||||
if stream.hasOwnProperty "httpModule"
|
||||
stream.on "response", (response) ->
|
||||
if response.headers["content-length"]?
|
||||
callback parseInt(response.headers["content-length"])
|
||||
else
|
||||
callback null
|
||||
else
|
||||
callback null
|
||||
|
||||
retrieveCombinedStream = (stream, callback) ->
|
||||
if stream.getCombinedStreamLength?
|
||||
stream.getCombinedStreamLength()
|
||||
.then (length) -> callback(length)
|
||||
.catch (err) -> callback(err)
|
||||
else
|
||||
callback null
|
||||
|
||||
|
||||
module.exports = (stream, options = {}, callback) ->
|
||||
nodeifyWrapper callback, ->
|
||||
retrieverPromises = []
|
||||
|
||||
if options.lengthRetrievers?
|
||||
# First, the custom length retrievers, if any.
|
||||
for retriever in options.lengthRetrievers
|
||||
retrieverPromises.push createRetrieverPromise(stream, retriever)
|
||||
|
||||
# Then, the standard ones.
|
||||
for retriever in [retrieveBuffer, retrieveFilesystemStream, retrieveCoreHttpStream, retrieveRequestHttpStream, retrieveCombinedStream]
|
||||
retrieverPromises.push createRetrieverPromise(stream, retriever)
|
||||
|
||||
Promise.any retrieverPromises
|
||||
|
||||
|
||||
|
110
node_modules/stream-length/lib/stream-length.js
generated
vendored
Normal file
110
node_modules/stream-length/lib/stream-length.js
generated
vendored
Normal file
@@ -0,0 +1,110 @@
|
||||
var Promise, createRetrieverPromise, fs, nodeifyWrapper, retrieveBuffer, retrieveCombinedStream, retrieveCoreHttpStream, retrieveFilesystemStream, retrieveRequestHttpStream;
|
||||
|
||||
Promise = require("bluebird");
|
||||
|
||||
fs = Promise.promisifyAll(require("fs"));
|
||||
|
||||
nodeifyWrapper = function(callback, func) {
|
||||
return func().nodeify(callback);
|
||||
};
|
||||
|
||||
createRetrieverPromise = function(stream, retriever) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
return retriever(stream, function(result) {
|
||||
if (result != null) {
|
||||
if (result instanceof Error) {
|
||||
return reject(result);
|
||||
} else {
|
||||
return resolve(result);
|
||||
}
|
||||
} else {
|
||||
return reject(new Error("Could not find a length using this lengthRetriever."));
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
retrieveBuffer = function(stream, callback) {
|
||||
if (stream instanceof Buffer) {
|
||||
return callback(stream.length);
|
||||
} else {
|
||||
return callback(null);
|
||||
}
|
||||
};
|
||||
|
||||
retrieveFilesystemStream = function(stream, callback) {
|
||||
var _ref;
|
||||
if (stream.hasOwnProperty("fd")) {
|
||||
if (stream.end !== void 0 && stream.end !== Infinity && stream.start !== void 0) {
|
||||
return callback(stream.end + 1 - ((_ref = stream.start) != null ? _ref : 0));
|
||||
} else {
|
||||
return Promise["try"](function() {
|
||||
return fs.statAsync(stream.path);
|
||||
}).then(function(stat) {
|
||||
var _ref1;
|
||||
return callback(stat.size - ((_ref1 = stream.start) != null ? _ref1 : 0));
|
||||
})["catch"](function(err) {
|
||||
return callback(err);
|
||||
});
|
||||
}
|
||||
} else {
|
||||
return callback(null);
|
||||
}
|
||||
};
|
||||
|
||||
retrieveCoreHttpStream = function(stream, callback) {
|
||||
if (stream.hasOwnProperty("httpVersion") && (stream.headers["content-length"] != null)) {
|
||||
return callback(parseInt(stream.headers["content-length"]));
|
||||
} else {
|
||||
return callback(null);
|
||||
}
|
||||
};
|
||||
|
||||
retrieveRequestHttpStream = function(stream, callback) {
|
||||
if (stream.hasOwnProperty("httpModule")) {
|
||||
return stream.on("response", function(response) {
|
||||
if (response.headers["content-length"] != null) {
|
||||
return callback(parseInt(response.headers["content-length"]));
|
||||
} else {
|
||||
return callback(null);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
return callback(null);
|
||||
}
|
||||
};
|
||||
|
||||
retrieveCombinedStream = function(stream, callback) {
|
||||
if (stream.getCombinedStreamLength != null) {
|
||||
return stream.getCombinedStreamLength().then(function(length) {
|
||||
return callback(length);
|
||||
})["catch"](function(err) {
|
||||
return callback(err);
|
||||
});
|
||||
} else {
|
||||
return callback(null);
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = function(stream, options, callback) {
|
||||
if (options == null) {
|
||||
options = {};
|
||||
}
|
||||
return nodeifyWrapper(callback, function() {
|
||||
var retriever, retrieverPromises, _i, _j, _len, _len1, _ref, _ref1;
|
||||
retrieverPromises = [];
|
||||
if (options.lengthRetrievers != null) {
|
||||
_ref = options.lengthRetrievers;
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
retriever = _ref[_i];
|
||||
retrieverPromises.push(createRetrieverPromise(stream, retriever));
|
||||
}
|
||||
}
|
||||
_ref1 = [retrieveBuffer, retrieveFilesystemStream, retrieveCoreHttpStream, retrieveRequestHttpStream, retrieveCombinedStream];
|
||||
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
|
||||
retriever = _ref1[_j];
|
||||
retrieverPromises.push(createRetrieverPromise(stream, retriever));
|
||||
}
|
||||
return Promise.any(retrieverPromises);
|
||||
});
|
||||
};
|
Reference in New Issue
Block a user