167 lines
2.9 KiB
JavaScript
167 lines
2.9 KiB
JavaScript
|
/**
|
||
|
* Module of mixed-in functions shared between node and client code
|
||
|
*/
|
||
|
var isObject = require('./is-object');
|
||
|
|
||
|
/**
|
||
|
* Clear previous timeout.
|
||
|
*
|
||
|
* @return {Request} for chaining
|
||
|
* @api public
|
||
|
*/
|
||
|
|
||
|
exports.clearTimeout = function _clearTimeout(){
|
||
|
this._timeout = 0;
|
||
|
clearTimeout(this._timer);
|
||
|
return this;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Force given parser
|
||
|
*
|
||
|
* Sets the body parser no matter type.
|
||
|
*
|
||
|
* @param {Function}
|
||
|
* @api public
|
||
|
*/
|
||
|
|
||
|
exports.parse = function parse(fn){
|
||
|
this._parser = fn;
|
||
|
return this;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Set timeout to `ms`.
|
||
|
*
|
||
|
* @param {Number} ms
|
||
|
* @return {Request} for chaining
|
||
|
* @api public
|
||
|
*/
|
||
|
|
||
|
exports.timeout = function timeout(ms){
|
||
|
this._timeout = ms;
|
||
|
return this;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Faux promise support
|
||
|
*
|
||
|
* @param {Function} fulfill
|
||
|
* @param {Function} reject
|
||
|
* @return {Request}
|
||
|
*/
|
||
|
|
||
|
exports.then = function then(fulfill, reject) {
|
||
|
return this.end(function(err, res) {
|
||
|
err ? reject(err) : fulfill(res);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Allow for extension
|
||
|
*/
|
||
|
|
||
|
exports.use = function use(fn) {
|
||
|
fn(this);
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Get request header `field`.
|
||
|
* Case-insensitive.
|
||
|
*
|
||
|
* @param {String} field
|
||
|
* @return {String}
|
||
|
* @api public
|
||
|
*/
|
||
|
|
||
|
exports.get = function(field){
|
||
|
return this._header[field.toLowerCase()];
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Get case-insensitive header `field` value.
|
||
|
* This is a deprecated internal API. Use `.get(field)` instead.
|
||
|
*
|
||
|
* (getHeader is no longer used internally by the superagent code base)
|
||
|
*
|
||
|
* @param {String} field
|
||
|
* @return {String}
|
||
|
* @api private
|
||
|
* @deprecated
|
||
|
*/
|
||
|
|
||
|
exports.getHeader = exports.get;
|
||
|
|
||
|
/**
|
||
|
* Set header `field` to `val`, or multiple fields with one object.
|
||
|
* Case-insensitive.
|
||
|
*
|
||
|
* Examples:
|
||
|
*
|
||
|
* req.get('/')
|
||
|
* .set('Accept', 'application/json')
|
||
|
* .set('X-API-Key', 'foobar')
|
||
|
* .end(callback);
|
||
|
*
|
||
|
* req.get('/')
|
||
|
* .set({ Accept: 'application/json', 'X-API-Key': 'foobar' })
|
||
|
* .end(callback);
|
||
|
*
|
||
|
* @param {String|Object} field
|
||
|
* @param {String} val
|
||
|
* @return {Request} for chaining
|
||
|
* @api public
|
||
|
*/
|
||
|
|
||
|
exports.set = function(field, val){
|
||
|
if (isObject(field)) {
|
||
|
for (var key in field) {
|
||
|
this.set(key, field[key]);
|
||
|
}
|
||
|
return this;
|
||
|
}
|
||
|
this._header[field.toLowerCase()] = val;
|
||
|
this.header[field] = val;
|
||
|
return this;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Remove header `field`.
|
||
|
* Case-insensitive.
|
||
|
*
|
||
|
* Example:
|
||
|
*
|
||
|
* req.get('/')
|
||
|
* .unset('User-Agent')
|
||
|
* .end(callback);
|
||
|
*
|
||
|
* @param {String} field
|
||
|
*/
|
||
|
exports.unset = function(field){
|
||
|
delete this._header[field.toLowerCase()];
|
||
|
delete this.header[field];
|
||
|
return this;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Write the field `name` and `val` for "multipart/form-data"
|
||
|
* request bodies.
|
||
|
*
|
||
|
* ``` js
|
||
|
* request.post('/upload')
|
||
|
* .field('foo', 'bar')
|
||
|
* .end(callback);
|
||
|
* ```
|
||
|
*
|
||
|
* @param {String} name
|
||
|
* @param {String|Blob|File|Buffer|fs.ReadStream} val
|
||
|
* @return {Request} for chaining
|
||
|
* @api public
|
||
|
*/
|
||
|
exports.field = function(name, val) {
|
||
|
this._getFormData().append(name, val);
|
||
|
return this;
|
||
|
};
|