UNPKG

trc-client-core

Version:
88 lines (78 loc) 2.7 kB
import request from 'superagent'; import PromiseErrorHandler from 'trc-client-core/src/utils/PromiseErrorHandler'; import PromiseSuccessHandler from 'trc-client-core/src/utils/PromiseSuccessHandler'; var requests = {}; function simpleQuery (verb, url, query) { return new Promise(function(resolve, reject) { requests[url] = request[verb](url) .query(query) .end(function(err, response){ if(!response) { reject(err); } else if (response.ok) { resolve(response.body, response); } else { reject(response); } requests[url] = null; }); }); } function simplePost(verb, url, query) { return new Promise(function(resolve, reject) { request[verb](url) .send(query) .end(function(err, response){ if(!response) { reject(err); } else if (response.ok) { resolve(response.body, response); } else { reject(response); } }); }); } function fileUpload(url, name, file, onProgress) { return new Promise(function(resolve, reject) { var req = request .post(url) .attach(name, file, file.name) .end((err, response) => { if(!response) { reject(err); } else if (response.ok) { resolve(response.body); } else { reject(response.body); } }); if(onProgress) { req.on('progress', onProgress); } }); } var xhr = { get: function (url, query) { return simpleQuery('get', url, query).then(PromiseSuccessHandler, PromiseErrorHandler); }, post: function (url, query) { return simplePost('post', url, query).then(PromiseSuccessHandler, PromiseErrorHandler); }, patch: function (url, query) { return simplePost('patch', url, query).then(PromiseSuccessHandler, PromiseErrorHandler); }, put: function (url, query) { return simplePost('put', url, query).then(PromiseSuccessHandler, PromiseErrorHandler); }, del: function (url, query) { return simpleQuery('del', url, query).then(PromiseSuccessHandler, PromiseErrorHandler); }, upload: function (url, name, file, onProgress) { return fileUpload(url, name, file, onProgress).then(PromiseSuccessHandler, PromiseErrorHandler); }, requests() { return requests; } }; module.exports = xhr;