Comparing version 0.1.4 to 0.1.5
@@ -14,2 +14,3 @@ ////////////////////////////////////////// | ||
url = require('url'), | ||
unzip = require('zlib').unzip, | ||
stringify = require('qs').stringify, | ||
@@ -79,2 +80,3 @@ version = require('./../package').version; | ||
var protocol = is_https ? https : http; | ||
var request_compressed = options.compressed || false; | ||
@@ -92,2 +94,4 @@ var parse_response = options.parse == false ? false : true; | ||
if(request_compressed) headers['Accept-Encoding'] = 'gzip,deflate'; | ||
if(data) { | ||
@@ -126,6 +130,23 @@ if(options.multipart){ | ||
var response_end = function(response, body){ | ||
if(process.env.DEBUG) console.log(response.headers); | ||
var content_type = response.headers['content-type'].split(';')[0]; | ||
if(parse_response && parsers[content_type]) { | ||
parsers[content_type](body, function(result){ | ||
if(callback) callback(null, response, result); | ||
}); | ||
} else { | ||
if(callback) callback(null, response, body); | ||
} | ||
}; | ||
var request = protocol.request(request_opts, function(response){ | ||
var body = ''; | ||
response.setEncoding('utf8'); | ||
var compressed = /gzip|deflate/.test(response.headers['content-encoding']); | ||
var response_encoding = compressed ? 'binary' : 'utf8'; | ||
response.setEncoding(response_encoding); | ||
@@ -139,10 +160,8 @@ if(timer) clearTimeout(timer); | ||
response.on('end', function() { | ||
var content_type = response.headers['content-type'].split(';')[0]; | ||
if(parse_response && parsers[content_type]) { | ||
parsers[content_type](body, function(result){ | ||
if(callback) callback(null, response, result); | ||
if(compressed) | ||
unzip(new Buffer(body, 'binary'), function(err, buff){ | ||
response_end(response, buff.toString()) | ||
}); | ||
} else { | ||
if(callback) callback(null, response, body); | ||
} | ||
else | ||
response_end(response, body); | ||
}); | ||
@@ -149,0 +168,0 @@ |
{ | ||
"name": "needle" | ||
, "version": "0.1.4" | ||
, "version": "0.1.5" | ||
, "description": "Simplest HTTP client ever. Supports multipart uploads." | ||
@@ -5,0 +5,0 @@ , "keywords": ["http", "https", "client", "multipart", "simple"] |
Needle | ||
====== | ||
HTTP client for node. Supports HTTP basic auth, HTTPS, nested params and multipart | ||
form uploads. Really simple stuff, around ~200 lines of code. | ||
HTTP client for node. Supports HTTPS, basic authentication, nested params, multipart | ||
form uploads and gzip/deflate compression. Really simple stuff, around ~250 lines of code. | ||
@@ -22,2 +22,3 @@ Usage | ||
- compressed: Whether to ask for a deflated or gzipped response or not. Defaults to false. | ||
- timeout: Returns error if response takes more than X. Defaults to 10000 (10 secs). | ||
@@ -55,2 +56,3 @@ - multipart: Enables multipart/form-data encoding. Defaults to false. | ||
password: 'secret', | ||
compressed: true, | ||
timeout: false, | ||
@@ -57,0 +59,0 @@ headers: { |
Sorry, the diff of this file is not supported yet
10943
229
115
7