// License: LGPL-3.0-or-later // super-agent with default json and csrf wrappers // Also has a Promise api ('.then' and '.catch') rather than the default '.end' var request = require('superagent') var wrapper = {} module.exports = wrapper wrapper.post = function() { var req = request.post.apply(this, arguments).set('X-CSRF-Token', window._csrf).type('json') return convert_to_promise(req) } wrapper.put = function() { var req = request.put.apply(this, arguments).set('X-CSRF-Token', window._csrf).type('json') return convert_to_promise(req) } wrapper.del = function() { var req = request.del.apply(this, arguments).set('X-CSRF-Token', window._csrf).type('json') return convert_to_promise(req) } wrapper.get = function(path) { var req = request.get.call(this, path).accept('json') return convert_to_promise(req) } function convert_to_promise(req) { req.perform = function() { return new Promise(function(resolve, reject) { req.end(function(err, resp) { if(resp && resp.ok) { resolve(resp) } else { reject(resp) } }) }) } return req }