aboutsummaryrefslogtreecommitdiff
path: root/node_modules/superagent/lib/node/unzip.js
diff options
context:
space:
mode:
authorAlee14 <alee14498@gmail.com>2017-03-26 15:18:10 -0400
committerAlee14 <alee14498@gmail.com>2017-03-26 15:18:10 -0400
commit29433e2f7dbd0e4a73d3c78ffe1005b922fb5982 (patch)
treeaa0ad3fe59468cbe452ee597e914839b68c01436 /node_modules/superagent/lib/node/unzip.js
parent878fefb4c4e1f12b804ae5c0def433fa873f4c8b (diff)
downloadAleeBot-29433e2f7dbd0e4a73d3c78ffe1005b922fb5982.tar.gz
AleeBot-29433e2f7dbd0e4a73d3c78ffe1005b922fb5982.tar.bz2
AleeBot-29433e2f7dbd0e4a73d3c78ffe1005b922fb5982.zip
Don't mind me i'm adding the discord.js files
Diffstat (limited to 'node_modules/superagent/lib/node/unzip.js')
-rw-r--r--node_modules/superagent/lib/node/unzip.js69
1 files changed, 69 insertions, 0 deletions
diff --git a/node_modules/superagent/lib/node/unzip.js b/node_modules/superagent/lib/node/unzip.js
new file mode 100644
index 0000000..2911fbc
--- /dev/null
+++ b/node_modules/superagent/lib/node/unzip.js
@@ -0,0 +1,69 @@
+
+/**
+ * Module dependencies.
+ */
+
+var StringDecoder = require('string_decoder').StringDecoder;
+var Stream = require('stream');
+var zlib = require('zlib');
+
+/**
+ * Buffers response data events and re-emits when they're unzipped.
+ *
+ * @param {Request} req
+ * @param {Response} res
+ * @api private
+ */
+
+exports.unzip = function(req, res){
+ var unzip = zlib.createUnzip();
+ var stream = new Stream;
+ var decoder;
+
+ // make node responseOnEnd() happy
+ stream.req = req;
+
+ unzip.on('error', function(err){
+ if (err && err.code === 'Z_BUF_ERROR') { // unexpected end of file is ignored by browsers and curl
+ stream.emit('end');
+ return;
+ }
+ stream.emit('error', err);
+ });
+
+ // pipe to unzip
+ res.pipe(unzip);
+
+ // override `setEncoding` to capture encoding
+ res.setEncoding = function(type){
+ decoder = new StringDecoder(type);
+ };
+
+ // decode upon decompressing with captured encoding
+ unzip.on('data', function(buf){
+ if (decoder) {
+ var str = decoder.write(buf);
+ if (str.length) stream.emit('data', str);
+ } else {
+ stream.emit('data', buf);
+ }
+ });
+
+ unzip.on('end', function(){
+ stream.emit('end');
+ });
+
+ // override `on` to capture data listeners
+ var _on = res.on;
+ res.on = function(type, fn){
+ if ('data' == type || 'end' == type) {
+ stream.on(type, fn);
+ } else if ('error' == type) {
+ stream.on(type, fn);
+ _on.call(res, type, fn);
+ } else {
+ _on.call(res, type, fn);
+ }
+ return this;
+ };
+}; \ No newline at end of file