superagent
Advanced tools
Comparing version 0.4.2 to 0.4.3
0.4.3 / 2012-06-15 | ||
================== | ||
* Added 303, 305 and 307 as redirect status codes [slaskis] | ||
* Fixed passing an object as the url | ||
0.4.2 / 2012-06-02 | ||
@@ -3,0 +9,0 @@ ================== |
@@ -120,3 +120,3 @@ | ||
var self = this; | ||
if ('string' != url) url = format(url); | ||
if ('string' != typeof url) url = format(url); | ||
this.method = method; | ||
@@ -518,7 +518,8 @@ this.url = url; | ||
, type = res.headers['content-type'] || '' | ||
, multipart = ~type.indexOf('multipart'); | ||
, multipart = ~type.indexOf('multipart') | ||
, redirect = isRedirect(res.statusCode); | ||
// redirect | ||
if (3 == (res.statusCode / 100 | 0)) { | ||
if (self._redirects++ != max) return self.redirect(res); | ||
if (redirect && self._redirects++ != max) { | ||
return self.redirect(res); | ||
} | ||
@@ -685,1 +686,13 @@ | ||
}); | ||
/** | ||
* Check if we should follow the redirect `code`. | ||
* | ||
* @param {Number} code | ||
* @return {Boolean} | ||
* @api private | ||
*/ | ||
function isRedirect(code) { | ||
return ~[301, 302, 303, 305, 307].indexOf(code); | ||
} |
@@ -137,2 +137,3 @@ | ||
, urlencoded: 'application/x-www-form-urlencoded' | ||
, 'form': 'application/x-www-form-urlencoded' | ||
, 'form-data': 'application/x-www-form-urlencoded' | ||
@@ -139,0 +140,0 @@ }; |
{ | ||
"name": "superagent" | ||
, "version": "0.4.2" | ||
, "version": "0.4.3" | ||
, "description": "elegant progressive ajax client" | ||
@@ -5,0 +5,0 @@ , "keywords": ["http", "ajax", "request", "agent"] |
@@ -179,25 +179,17 @@ | ||
* superagent | ||
* Copyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca> | ||
* Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> | ||
* MIT Licensed | ||
*/ | ||
var superagent = function(exports){ | ||
;(function(){ | ||
var Emitter = 'undefined' == typeof exports | ||
? EventEmitter | ||
: require('emitter'); | ||
/** | ||
* Expose the request function. | ||
*/ | ||
exports = request; | ||
/** | ||
* Library version. | ||
*/ | ||
exports.version = '0.3.0'; | ||
/** | ||
* Noop. | ||
*/ | ||
var noop = function(){}; | ||
function noop(){}; | ||
@@ -279,3 +271,3 @@ /** | ||
exports.serializeObject = serialize; | ||
request.serializeObject = serialize; | ||
@@ -309,3 +301,3 @@ /** | ||
exports.parseString = parseString; | ||
request.parseString = parseString; | ||
@@ -319,6 +311,7 @@ /** | ||
exports.types = { | ||
request.types = { | ||
html: 'text/html' | ||
, json: 'application/json' | ||
, urlencoded: 'application/x-www-form-urlencoded' | ||
, 'form': 'application/x-www-form-urlencoded' | ||
, 'form-data': 'application/x-www-form-urlencoded' | ||
@@ -336,3 +329,3 @@ }; | ||
exports.serialize = { | ||
request.serialize = { | ||
'application/x-www-form-urlencoded': serialize | ||
@@ -351,3 +344,3 @@ , 'application/json': JSON.stringify | ||
exports.parse = { | ||
request.parse = { | ||
'application/x-www-form-urlencoded': parseString | ||
@@ -508,3 +501,3 @@ , 'application/json': JSON.parse | ||
Response.prototype.parseBody = function(str){ | ||
var parse = exports.parse[this.type]; | ||
var parse = request.parse[this.type]; | ||
return parse | ||
@@ -563,3 +556,3 @@ ? parse(str) | ||
exports.Response = Response; | ||
request.Response = Response; | ||
@@ -576,3 +569,3 @@ /** | ||
var self = this; | ||
EventEmitter.call(this); | ||
Emitter.call(this); | ||
this.method = method; | ||
@@ -588,6 +581,6 @@ this.url = url; | ||
/** | ||
* Inherit from `EventEmitter.prototype`. | ||
* Inherit from `Emitter.prototype`. | ||
*/ | ||
Request.prototype = new EventEmitter; | ||
Request.prototype = new Emitter; | ||
Request.prototype.constructor = Request; | ||
@@ -627,3 +620,3 @@ | ||
/** | ||
* Set Content-Type to `type`, mapping values from `exports.types`. | ||
* Set Content-Type to `type`, mapping values from `request.types`. | ||
* | ||
@@ -650,3 +643,3 @@ * Examples: | ||
Request.prototype.type = function(type){ | ||
this.set('Content-Type', exports.types[type] || type); | ||
this.set('Content-Type', request.types[type] || type); | ||
return this; | ||
@@ -762,3 +755,3 @@ }; | ||
if (query) { | ||
query = exports.serializeObject(query); | ||
query = request.serializeObject(query); | ||
this.url += ~this.url.indexOf('?') | ||
@@ -775,3 +768,3 @@ ? '&' + query | ||
// serialize stuff | ||
var serialize = exports.serialize[this.header['content-type']]; | ||
var serialize = request.serialize[this.header['content-type']]; | ||
if (serialize) data = serialize(data); | ||
@@ -794,3 +787,3 @@ } | ||
exports.Request = Request; | ||
request.Request = Request; | ||
@@ -928,4 +921,10 @@ /** | ||
return exports; | ||
}({}); | ||
// expose | ||
if ('undefined' == typeof exports) { | ||
window.request = window.superagent = request; | ||
} else { | ||
module.exports = request; | ||
} | ||
})(); |
@@ -5,2 +5,2 @@ /** | ||
* Check if `obj` is an array. | ||
*/function isArray(obj){return"[object Array]"=={}.toString.call(obj)}function EventEmitter(){}EventEmitter.prototype.on=function(name,fn){return this.$events||(this.$events={}),this.$events[name]?isArray(this.$events[name])?this.$events[name].push(fn):this.$events[name]=[this.$events[name],fn]:this.$events[name]=fn,this},EventEmitter.prototype.addListener=EventEmitter.prototype.on,EventEmitter.prototype.once=function(name,fn){var self=this;function on(){self.removeListener(name,on),fn.apply(this,arguments)}return on.listener=fn,this.on(name,on),this},EventEmitter.prototype.removeListener=function(name,fn){if(this.$events&&this.$events[name]){var list=this.$events[name];if(isArray(list)){var pos=-1;for(var i=0,l=list.length;i<l;i++)if(list[i]===fn||list[i].listener&&list[i].listener===fn){pos=i;break}if(pos<0)return this;list.splice(pos,1),list.length||delete this.$events[name]}else(list===fn||list.listener&&list.listener===fn)&&delete this.$events[name]}return this},EventEmitter.prototype.removeAllListeners=function(name){return name===undefined?(this.$events={},this):(this.$events&&this.$events[name]&&(this.$events[name]=null),this)},EventEmitter.prototype.listeners=function(name){return this.$events||(this.$events={}),this.$events[name]||(this.$events[name]=[]),isArray(this.$events[name])||(this.$events[name]=[this.$events[name]]),this.$events[name]},EventEmitter.prototype.emit=function(name){if(!this.$events)return!1;var handler=this.$events[name];if(!handler)return!1;var args=[].slice.call(arguments,1);if("function"==typeof handler)handler.apply(this,args);else{if(!isArray(handler))return!1;var listeners=handler.slice();for(var i=0,l=listeners.length;i<l;i++)listeners[i].apply(this,args)}return!0};var superagent=function(exports){exports=request,exports.version="0.3.0";var noop=function(){};function getXHR(){if(window.XMLHttpRequest&&("file:"!=window.location.protocol||!window.ActiveXObject))return new XMLHttpRequest;try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(e){}return!1}var trim="".trim?function(s){return s.trim()}:function(s){return s.replace(/(^\s*|\s*$)/g,"")};function isFunction(obj){return"function"==typeof obj}function isObject(obj){return null!=obj&&"object"==typeof obj}function serialize(obj){if(!isObject(obj))return obj;var pairs=[];for(var key in obj)pairs.push(encodeURIComponent(key)+"="+encodeURIComponent(obj[key]));return pairs.join("&")}exports.serializeObject=serialize;function parseString(str){var obj={},pairs=str.split("&"),parts,pair;for(var i=0,len=pairs.length;i<len;++i)pair=pairs[i],parts=pair.split("="),obj[decodeURIComponent(parts[0])]=decodeURIComponent(parts[1]);return obj}exports.parseString=parseString,exports.types={html:"text/html",json:"application/json",urlencoded:"application/x-www-form-urlencoded","form-data":"application/x-www-form-urlencoded"},exports.serialize={"application/x-www-form-urlencoded":serialize,"application/json":JSON.stringify},exports.parse={"application/x-www-form-urlencoded":parseString,"application/json":JSON.parse};function parseHeader(str){var lines=str.split(/\r?\n/),fields={},index,line,field,val;lines.pop();for(var i=0,len=lines.length;i<len;++i)line=lines[i],index=line.indexOf(":"),field=line.slice(0,index).toLowerCase(),val=trim(line.slice(index+1)),fields[field]=val;return fields}function type(str){return str.split(/ *; */).shift()}function params(str){return str.split(/ *; */).reduce(function(obj,str){var parts=str.split(/ *= */),key=parts.shift(),val=parts.shift();return key&&val&&(obj[key]=val),obj},{})}function Response(xhr,options){options=options||{},this.xhr=xhr,this.text=xhr.responseText,this.setStatusProperties(xhr.status),this.header=parseHeader(xhr.getAllResponseHeaders()),this.setHeaderProperties(this.header),this.body=this.parseBody(this.text)}Response.prototype.setHeaderProperties=function(header){var ct=this.header["content-type"]||"";this.type=type(ct);var obj=params(ct);for(var key in obj)this[key]=obj[key]},Response.prototype.parseBody=function(str){var parse=exports.parse[this.type];return parse?parse(str):null},Response.prototype.setStatusProperties=function(status){var type=status/100|0;this.status=status,this.statusType=type,this.info=1==type,this.ok=2==type,this.clientError=4==type,this.serverError=5==type,this.error=4==type||5==type,this.accepted=202==status,this.noContent=204==status||1223==status,this.badRequest=400==status,this.unauthorized=401==status,this.notAcceptable=406==status,this.notFound=404==status},exports.Response=Response;function Request(method,url){var self=this;EventEmitter.call(this),this.method=method,this.url=url,this.header={},this.set("X-Requested-With","XMLHttpRequest"),this.on("end",function(){self.callback(new Response(self.xhr))})}Request.prototype=new EventEmitter,Request.prototype.constructor=Request,Request.prototype.set=function(field,val){if(isObject(field)){for(var key in field)this.set(key,field[key]);return this}return this.header[field.toLowerCase()]=val,this},Request.prototype.type=function(type){return this.set("Content-Type",exports.types[type]||type),this},Request.prototype.query=function(obj){this._query=this._query||{};for(var key in obj)this._query[key]=obj[key];return this},Request.prototype.send=function(data){if("GET"==this.method)return this.query(data);var obj=isObject(data);if(obj&&isObject(this._data))for(var key in data)this._data[key]=data[key];else this._data=data;return obj?this.header["content-type"]?this:(this.type("json"),this):this},Request.prototype.end=function(fn){var self=this,xhr=this.xhr=getXHR(),query=this._query,data=this._data;this.callback=fn||noop,xhr.onreadystatechange=function(){4==xhr.readyState&&self.emit("end")},query&&(query=exports.serializeObject(query),this.url+=~this.url.indexOf("?")?"&"+query:"?"+query),xhr.open(this.method,this.url,!0);if("GET"!=this.method&&"HEAD"!=this.method){var serialize=exports.serialize[this.header["content-type"]];serialize&&(data=serialize(data))}for(var field in this.header)xhr.setRequestHeader(field,this.header[field]);return xhr.send(data),this},exports.Request=Request;function request(method,url){return"function"==typeof url?(new Request("GET",method)).end(url):1==arguments.length?new Request("GET",method):new Request(method,url)}return request.get=function(url,data,fn){var req=request("GET",url);return isFunction(data)&&(fn=data,data=null),data&&req.send(data),fn&&req.end(fn),req},request.head=function(url,data,fn){var req=request("HEAD",url);return isFunction(data)&&(fn=data,data=null),data&&req.send(data),fn&&req.end(fn),req},request.del=function(url,fn){var req=request("DELETE",url);return fn&&req.end(fn),req},request.patch=function(url,data,fn){var req=request("PATCH",url);return data&&req.send(data),fn&&req.end(fn),req},request.post=function(url,data,fn){var req=request("POST",url);return data&&req.send(data),fn&&req.end(fn),req},request.put=function(url,data,fn){var req=request("PUT",url);return data&&req.send(data),fn&&req.end(fn),req},exports}({}); | ||
*/function isArray(obj){return"[object Array]"=={}.toString.call(obj)}function EventEmitter(){}EventEmitter.prototype.on=function(name,fn){return this.$events||(this.$events={}),this.$events[name]?isArray(this.$events[name])?this.$events[name].push(fn):this.$events[name]=[this.$events[name],fn]:this.$events[name]=fn,this},EventEmitter.prototype.addListener=EventEmitter.prototype.on,EventEmitter.prototype.once=function(name,fn){var self=this;function on(){self.removeListener(name,on),fn.apply(this,arguments)}return on.listener=fn,this.on(name,on),this},EventEmitter.prototype.removeListener=function(name,fn){if(this.$events&&this.$events[name]){var list=this.$events[name];if(isArray(list)){var pos=-1;for(var i=0,l=list.length;i<l;i++)if(list[i]===fn||list[i].listener&&list[i].listener===fn){pos=i;break}if(pos<0)return this;list.splice(pos,1),list.length||delete this.$events[name]}else(list===fn||list.listener&&list.listener===fn)&&delete this.$events[name]}return this},EventEmitter.prototype.removeAllListeners=function(name){return name===undefined?(this.$events={},this):(this.$events&&this.$events[name]&&(this.$events[name]=null),this)},EventEmitter.prototype.listeners=function(name){return this.$events||(this.$events={}),this.$events[name]||(this.$events[name]=[]),isArray(this.$events[name])||(this.$events[name]=[this.$events[name]]),this.$events[name]},EventEmitter.prototype.emit=function(name){if(!this.$events)return!1;var handler=this.$events[name];if(!handler)return!1;var args=[].slice.call(arguments,1);if("function"==typeof handler)handler.apply(this,args);else{if(!isArray(handler))return!1;var listeners=handler.slice();for(var i=0,l=listeners.length;i<l;i++)listeners[i].apply(this,args)}return!0},function(){var Emitter="undefined"==typeof exports?EventEmitter:require("emitter");function noop(){}function getXHR(){if(window.XMLHttpRequest&&("file:"!=window.location.protocol||!window.ActiveXObject))return new XMLHttpRequest;try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(e){}return!1}var trim="".trim?function(s){return s.trim()}:function(s){return s.replace(/(^\s*|\s*$)/g,"")};function isFunction(obj){return"function"==typeof obj}function isObject(obj){return null!=obj&&"object"==typeof obj}function serialize(obj){if(!isObject(obj))return obj;var pairs=[];for(var key in obj)pairs.push(encodeURIComponent(key)+"="+encodeURIComponent(obj[key]));return pairs.join("&")}request.serializeObject=serialize;function parseString(str){var obj={},pairs=str.split("&"),parts,pair;for(var i=0,len=pairs.length;i<len;++i)pair=pairs[i],parts=pair.split("="),obj[decodeURIComponent(parts[0])]=decodeURIComponent(parts[1]);return obj}request.parseString=parseString,request.types={html:"text/html",json:"application/json",urlencoded:"application/x-www-form-urlencoded",form:"application/x-www-form-urlencoded","form-data":"application/x-www-form-urlencoded"},request.serialize={"application/x-www-form-urlencoded":serialize,"application/json":JSON.stringify},request.parse={"application/x-www-form-urlencoded":parseString,"application/json":JSON.parse};function parseHeader(str){var lines=str.split(/\r?\n/),fields={},index,line,field,val;lines.pop();for(var i=0,len=lines.length;i<len;++i)line=lines[i],index=line.indexOf(":"),field=line.slice(0,index).toLowerCase(),val=trim(line.slice(index+1)),fields[field]=val;return fields}function type(str){return str.split(/ *; */).shift()}function params(str){return str.split(/ *; */).reduce(function(obj,str){var parts=str.split(/ *= */),key=parts.shift(),val=parts.shift();return key&&val&&(obj[key]=val),obj},{})}function Response(xhr,options){options=options||{},this.xhr=xhr,this.text=xhr.responseText,this.setStatusProperties(xhr.status),this.header=parseHeader(xhr.getAllResponseHeaders()),this.setHeaderProperties(this.header),this.body=this.parseBody(this.text)}Response.prototype.setHeaderProperties=function(header){var ct=this.header["content-type"]||"";this.type=type(ct);var obj=params(ct);for(var key in obj)this[key]=obj[key]},Response.prototype.parseBody=function(str){var parse=request.parse[this.type];return parse?parse(str):null},Response.prototype.setStatusProperties=function(status){var type=status/100|0;this.status=status,this.statusType=type,this.info=1==type,this.ok=2==type,this.clientError=4==type,this.serverError=5==type,this.error=4==type||5==type,this.accepted=202==status,this.noContent=204==status||1223==status,this.badRequest=400==status,this.unauthorized=401==status,this.notAcceptable=406==status,this.notFound=404==status},request.Response=Response;function Request(method,url){var self=this;Emitter.call(this),this.method=method,this.url=url,this.header={},this.set("X-Requested-With","XMLHttpRequest"),this.on("end",function(){self.callback(new Response(self.xhr))})}Request.prototype=new Emitter,Request.prototype.constructor=Request,Request.prototype.set=function(field,val){if(isObject(field)){for(var key in field)this.set(key,field[key]);return this}return this.header[field.toLowerCase()]=val,this},Request.prototype.type=function(type){return this.set("Content-Type",request.types[type]||type),this},Request.prototype.query=function(obj){this._query=this._query||{};for(var key in obj)this._query[key]=obj[key];return this},Request.prototype.send=function(data){if("GET"==this.method)return this.query(data);var obj=isObject(data);if(obj&&isObject(this._data))for(var key in data)this._data[key]=data[key];else this._data=data;return obj?this.header["content-type"]?this:(this.type("json"),this):this},Request.prototype.end=function(fn){var self=this,xhr=this.xhr=getXHR(),query=this._query,data=this._data;this.callback=fn||noop,xhr.onreadystatechange=function(){4==xhr.readyState&&self.emit("end")},query&&(query=request.serializeObject(query),this.url+=~this.url.indexOf("?")?"&"+query:"?"+query),xhr.open(this.method,this.url,!0);if("GET"!=this.method&&"HEAD"!=this.method){var serialize=request.serialize[this.header["content-type"]];serialize&&(data=serialize(data))}for(var field in this.header)xhr.setRequestHeader(field,this.header[field]);return xhr.send(data),this},request.Request=Request;function request(method,url){return"function"==typeof url?(new Request("GET",method)).end(url):1==arguments.length?new Request("GET",method):new Request(method,url)}request.get=function(url,data,fn){var req=request("GET",url);return isFunction(data)&&(fn=data,data=null),data&&req.send(data),fn&&req.end(fn),req},request.head=function(url,data,fn){var req=request("HEAD",url);return isFunction(data)&&(fn=data,data=null),data&&req.send(data),fn&&req.end(fn),req},request.del=function(url,fn){var req=request("DELETE",url);return fn&&req.end(fn),req},request.patch=function(url,data,fn){var req=request("PATCH",url);return data&&req.send(data),fn&&req.end(fn),req},request.post=function(url,data,fn){var req=request("POST",url);return data&&req.send(data),fn&&req.end(fn),req},request.put=function(url,data,fn){var req=request("PUT",url);return data&&req.send(data),fn&&req.end(fn),req},"undefined"==typeof exports?window.request=window.superagent=request:module.exports=request}(); |
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
82795
2509
3