marbles
Version:
Front-end framework for routing, http, and data handling
45 lines (39 loc) • 1.11 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true
});
/* @flow weak */
/**
* @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 SerializeJSON = {
willSendRequest: function willSendRequest(request) {
if (request.multipart) {
return;
}
var contentType = request.getRequestHeader('Content-Type');
if (!/\bjson/i.test(contentType)) {
return;
}
var requestBody = request.requestBody;
request.requestBody = requestBody ? JSON.stringify(requestBody) : null;
},
didReceiveResponse: function didReceiveResponse(request) {
var contentType = request.getResponseHeader('Content-Type');
if (!/\bjson/i.test(contentType)) {
return;
}
var responseData = request.xhr.response;
request.responseData = null;
if (responseData) {
try {
request.responseData = JSON.parse(responseData);
} catch (err) {
request.terminate(err);
}
}
}
};
exports['default'] = SerializeJSON;
module.exports = exports['default'];