shradmin
Version:
A frontend Framework for building admin application, using antd and mirrorjs.
81 lines (66 loc) • 2.51 kB
JavaScript
;
exports.__esModule = true;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _superagent = require('superagent');
var _superagent2 = _interopRequireDefault(_superagent);
var _types = require('./types');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var fetch = function fetch(url, type, model, params, headers) {
switch (type) {
case _types.GET_LIST:
var _page = params._page,
_limit = params._limit,
_sort = params._sort,
_order = params._order,
_filter = params._filter;
var query = _extends({
_page: _page,
_limit: _limit,
_sort: _sort,
_order: _order
}, _filter);
return _superagent2.default.get(url + '/' + model).set(headers).query(query);
case _types.GET_ONE:
return _superagent2.default.get(url + '/' + model + '/' + params.id).set(headers);
case _types.CREATE:
return _superagent2.default.post(url + '/' + model).set(headers).send(params.data);
case _types.UPDATE:
return _superagent2.default.patch(url + '/' + model + '/' + params.id).set(headers).send(params.data);
case _types.REMOVE:
return _superagent2.default.delete(url + '/' + model + '/' + params.id).set(headers);
default:
throw new Error('Unsupported fetch type ' + type);
}
};
var formatResponse = function formatResponse(response, type) {
var body = response.body,
headers = response.headers;
switch (type) {
case _types.GET_LIST:
return {
data: body,
total: parseInt(headers['x-total-count'].split('/').pop(), 10)
};
case _types.GET_ONE:
return {
data: body
};
default:
return {
data: body
};
}
};
exports.default = function (url) {
var getHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {
return {};
};
return function (type, model) {
var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var headers = getHeaders(type, model, params);
return fetch(url, type, model, params, headers).then(function (response) {
return formatResponse(response, type);
});
};
};
module.exports = exports['default'];