marbles
Version:
Front-end framework for routing, http, and data handling
63 lines (49 loc) • 1.57 kB
JavaScript
;
var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; };
Object.defineProperty(exports, '__esModule', {
value: true
});
/* @flow weak */
var _QueryParams = require('../../query_params');
var _QueryParams2 = _interopRequireWildcard(_QueryParams);
var CONTENT_TYPE = 'application/x-www-form-urlencoded';
/**
* @memberof Marbles.HTTP.Middleware
* @desc Serializes the request body if the Content-Type header matches. Deserializes the response body if the Content-Type header matches.
*/
var FormEncoded = {
willSendRequest: function willSendRequest(request) {
if (request.multipart) {
return;
}
if (!request.requestBody) {
return;
}
var contentType = request.getRequestHeader('Content-Type');
if (contentType !== CONTENT_TYPE) {
return;
}
var params = request.requestBody;
if (!Array.isArray(params)) {
params = [params];
}
request.requestBody = _QueryParams2['default'].serializeParams(params).substring(1);
},
didReceiveResponse: function didReceiveResponse(request) {
var contentType = request.getResponseHeader('Content-Type');
if (contentType !== CONTENT_TYPE) {
return;
}
var response = request.xhr.response;
var responseData = null;
if (!response || typeof response !== 'string') {
return;
}
if (!Array.isArray(responseData)) {
responseData = [responseData];
}
request.responseData = _QueryParams2['default'].deserializeParams(responseData);
}
};
exports.CONTENT_TYPE = CONTENT_TYPE;
exports['default'] = FormEncoded;