devshare
Version:
Library to communicate with devshare development sharing platform.
126 lines (108 loc) • 3.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.update = exports.create = exports.add = exports.getWithHeaders = exports.search = exports.post = exports.put = exports.remove = exports.getFile = exports.get = undefined;
var _isomorphicFetch = require('isomorphic-fetch');
var _isomorphicFetch2 = _interopRequireDefault(_isomorphicFetch);
var _auth = require('../auth');
var _index = require('./index');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var handleResponse = function handleResponse(body) {
if (body.code >= 400) {
var message = body.message,
status = body.status; /* istanbul ignore next */
return Promise.reject({ message: message, status: status });
}
return body;
};
var get = exports.get = function get(url) {
return function () {
return (0, _isomorphicFetch2.default)(url, { headers: (0, _auth.createHeaders)() }).then(function (response) {
return response.json();
}).then(function (body) {
return handleResponse(body);
});
};
};
var getFile = exports.getFile = function getFile(url) {
return function () {
return (0, _isomorphicFetch2.default)(url, { headers: (0, _auth.createHeaders)() }).then(function (response) {
return response.blob();
}).then(function (body) {
return handleResponse(body);
});
};
};
var remove = exports.remove = function remove(url) {
return function () {
return (0, _isomorphicFetch2.default)(url, {
method: 'delete',
headers: (0, _auth.createHeaders)()
}).then(function (response) {
return response.json();
}).then(function (body) {
return handleResponse(body);
});
};
};
var put = exports.put = function put(url) {
return function (object) {
return (0, _isomorphicFetch2.default)(url, {
method: 'put',
headers: (0, _auth.createHeaders)(),
body: JSON.stringify(object)
}).then(function (response) {
return response.json();
}).then(function (body) {
return handleResponse(body);
});
};
};
var post = exports.post = function post(url) {
return function (object) {
return (0, _isomorphicFetch2.default)(url, {
method: 'post',
headers: (0, _auth.createHeaders)(),
body: JSON.stringify(object)
}).then(function (response) {
return response.json();
}).then(function (body) {
return handleResponse(body);
});
};
};
var search = exports.search = function search(url) {
return function (key, query) {
return query ? (0, _isomorphicFetch2.default)(url + '/search?' + key + '=' + query, {
method: 'get',
headers: (0, _auth.createHeaders)()
}).then(function (response) {
return response.json();
}).then(function (body) {
return handleResponse(body);
}) : Promise.reject({ message: 'query is required to search' });
};
};
var getWithHeaders = exports.getWithHeaders = function getWithHeaders(url) {
return function (headers) {
return (0, _isomorphicFetch2.default)(url, { headers: headers }).then(function (response) {
return response.json();
}).then(function (body) {
return handleResponse(body);
});
};
};
var add = exports.add = post;
var create = exports.create = post;
var update = exports.update = put;
exports.default = function (url, types) {
var methods = {
get: get,
remove: remove,
update: update,
create: create,
add: add
};
return (0, _index.typeReducer)(url, types, methods, 'cruder');
};