@qooxdoo/framework
Version:
The JS Framework for Coders
138 lines (109 loc) • 3.17 kB
JavaScript
/* ************************************************************************
qooxdoo - the new era of web development
http://qooxdoo.org
Copyright:
2004-2008 1&1 Internet AG, Germany, http://www.1und1.de
License:
MIT: https://opensource.org/licenses/MIT
See the LICENSE file in the project's top-level directory for details.
Authors:
* Sebastian Werner (wpbasti)
* Andreas Ecker (ecker)
************************************************************************ */
/**
* This class is used to work with the result of a HTTP request.
*/
qx.Class.define("qx.io.remote.Response",
{
extend : qx.event.type.Event,
/*
*****************************************************************************
PROPERTIES
*****************************************************************************
*/
properties :
{
/*
---------------------------------------------------------------------------
PROPERTIES
---------------------------------------------------------------------------
*/
/** State of the response. */
state :
{
check : "Integer",
nullable : true
},
/** Status code of the response. */
statusCode :
{
check : "Integer",
nullable : true
},
/** Content of the response. */
content :
{
nullable : true
},
/** The headers of the response. */
responseHeaders :
{
check : "Object",
nullable : true,
apply : "_applyResponseHeaders"
}
},
/*
*****************************************************************************
MEMBERS
*****************************************************************************
*/
members :
{
__lowerHeaders: null,
/*
---------------------------------------------------------------------------
USER METHODS
---------------------------------------------------------------------------
*/
// overridden
clone : function(embryo)
{
var clone = this.base(arguments, embryo);
clone.setType(this.getType());
clone.setState(this.getState());
clone.setStatusCode(this.getStatusCode());
clone.setContent(this.getContent());
clone.setResponseHeaders(this.getResponseHeaders());
return clone;
},
/**
* Returns a specific response header
* @param vHeader {String} Response header name
* @return {Object | null} The header value or null;
*/
getResponseHeader : function(vHeader)
{
if (this.__lowerHeaders) {
return this.__lowerHeaders[vHeader.toLowerCase()] || null;
}
return null;
},
/**
* Keep lower-cased shadow of response headers for later
* case-insensitive matching.
*
* @param value {var} Current value
* @param old {var} Previous value
*/
_applyResponseHeaders : function(value, old) {
var lowerHeaders = {};
if (value !== null) {
Object.keys(value).forEach(function(key) {
lowerHeaders[key.toLowerCase()] = value[key];
});
this.__lowerHeaders = lowerHeaders;
}
}
}
});