UNPKG

devshare

Version:

Library to communicate with devshare development sharing platform.

126 lines (108 loc) 3.56 kB
'use strict'; 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'); };