bugfix should set application/json on json post unless content-type already set
This commit is contained in:
parent
bdf5262f1b
commit
c9e8c4702b
38
index.js
38
index.js
|
@ -29,6 +29,14 @@ function mergeOrDelete(defaults, updates) {
|
||||||
return updates;
|
return updates;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function hasHeader(reqOpts, header) {
|
||||||
|
var headers = {};
|
||||||
|
Object.keys(reqOpts.headers).forEach(function (key) {
|
||||||
|
headers[key.toLowerCase()] = true;
|
||||||
|
});
|
||||||
|
return headers[header.toLowerCase()];
|
||||||
|
}
|
||||||
|
|
||||||
function toJSONifier(keys) {
|
function toJSONifier(keys) {
|
||||||
|
|
||||||
return function () {
|
return function () {
|
||||||
|
@ -186,7 +194,7 @@ function setDefaults(defs) {
|
||||||
});
|
});
|
||||||
|
|
||||||
if (_body) {
|
if (_body) {
|
||||||
debug("\n[urequest] body");
|
debug("\n[urequest] '" + finalOpts.method + "' (request) body");
|
||||||
debug(_body);
|
debug(_body);
|
||||||
// used for chunked encoding
|
// used for chunked encoding
|
||||||
//req.write(_body);
|
//req.write(_body);
|
||||||
|
@ -209,6 +217,16 @@ function setDefaults(defs) {
|
||||||
if ('string' === typeof opts) {
|
if ('string' === typeof opts) {
|
||||||
opts = { url: opts };
|
opts = { url: opts };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module.exports._keys.forEach(function (key) {
|
||||||
|
if (key in opts && 'undefined' !== typeof opts[key]) {
|
||||||
|
reqOpts[key] = opts[key];
|
||||||
|
} else if (key in defs) {
|
||||||
|
reqOpts[key] = defs[key];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// TODO url.resolve(defs.baseUrl, opts.url);
|
||||||
if ('string' === typeof opts.url || 'string' === typeof opts.uri) {
|
if ('string' === typeof opts.url || 'string' === typeof opts.uri) {
|
||||||
if ('string' === typeof opts.url) {
|
if ('string' === typeof opts.url) {
|
||||||
reqOpts.url = opts.url;
|
reqOpts.url = opts.url;
|
||||||
|
@ -228,19 +246,17 @@ function setDefaults(defs) {
|
||||||
//reqOpts.uri = url.parse(reqOpts.url);
|
//reqOpts.uri = url.parse(reqOpts.url);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
reqOpts.method = (opts.method || 'GET').toUpperCase();
|
|
||||||
reqOpts.headers = opts.headers || {};
|
reqOpts.method = (reqOpts.method || 'GET').toUpperCase();
|
||||||
if ((true === reqOpts.json && reqOpts.body) || reqOpts.json) {
|
reqOpts.headers = reqOpts.headers || {};
|
||||||
|
|
||||||
|
// crazy case for easier testing
|
||||||
|
if (!hasHeader(reqOpts, 'CoNTeNT-TyPe')) {
|
||||||
|
if ((true === reqOpts.json && reqOpts.body)
|
||||||
|
|| (true !== reqOpts.json && reqOpts.json)) {
|
||||||
reqOpts.headers['Content-Type'] = 'application/json';
|
reqOpts.headers['Content-Type'] = 'application/json';
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports._keys.forEach(function (key) {
|
|
||||||
if (key in opts && 'undefined' !== typeof opts[key]) {
|
|
||||||
reqOpts[key] = opts[key];
|
|
||||||
} else if (key in defs) {
|
|
||||||
reqOpts[key] = defs[key];
|
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
|
||||||
return urequestHelper(reqOpts, cb);
|
return urequestHelper(reqOpts, cb);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue