stratumn-cli
Version:
CLI tools for Stratumn
125 lines (91 loc) • 3.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = request;
var _util = require('util');
var _util2 = _interopRequireDefault(_util);
var _url = require('url');
var _superagent = require('superagent');
var _superagent2 = _interopRequireDefault(_superagent);
var _superagentProxy = require('superagent-proxy');
var _superagentProxy2 = _interopRequireDefault(_superagentProxy);
var _config = require('../config');
var _config2 = _interopRequireDefault(_config);
var _loadConfig = require('./loadConfig');
var _loadConfig2 = _interopRequireDefault(_loadConfig);
var _saveConfig = require('./saveConfig');
var _saveConfig2 = _interopRequireDefault(_saveConfig);
var _filterKeys = require('./filterKeys');
var _filterKeys2 = _interopRequireDefault(_filterKeys);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
if (_config2.default.allowUnauthorizedTls) {
process.env.NODE_TLS_REJECT_UNAUTHORIZED = 0;
}
// Monkey patch superagent with proxy functionality if needed
if (_config2.default.proxy) {
(0, _superagentProxy2.default)(_superagent2.default);
}
function exec(method, path, payload, jwt, app) {
return new Promise(function (resolve, reject) {
var url = void 0;
if (app) {
if (_config2.default.applicationUrl.indexOf('%s') > -1) {
url = _util2.default.format(_config2.default.applicationUrl, app) + path;
} else {
url = _config2.default.applicationUrl + path;
}
} else {
url = _config2.default.baseUrl + path;
}
if (_config2.default.debug) {
console.log('Requesting ' + method + ' ' + url);
}
var req = _superagent2.default[method](url);
if (jwt) {
req = req.set('Authorization', 'JWT ' + jwt).set('X-Refresh-Jwt', 1);
}
if (payload) {
req = req.send(payload);
}
// Proxy request if needed.
if (_config2.default.proxy) {
if (_config2.default.debug) {
var obj = (0, _filterKeys2.default)((0, _url.parse)(_config2.default.proxy), 'protocol', 'hostname', 'port', 'auth', 'path');
var proxyInfo = JSON.stringify(obj, null, '\t');
console.log('Proxying request through ' + proxyInfo);
}
req.proxy(_config2.default.proxy);
}
req.end(function (err, res) {
if (err) {
if (err.status >= 400 && res.body.error) {
reject(new Error(res.body.error));
return;
}
reject(err);
return;
}
var result = res.headers['content-type'] && res.headers['content-type'].match(/^application\/json/) ? res.body : res.text;
if (!jwt) {
resolve(result);
return;
}
(0, _loadConfig2.default)().then(function (c) {
var conf = c; // stupid eslint rule!
conf.jwt = res.headers['x-jwt'];
return (0, _saveConfig2.default)(conf);
}).then(function () {
return resolve(result);
}).catch(reject);
});
});
}
function request(method, path, payload, auth, app) {
if (auth) {
return (0, _loadConfig2.default)().then(function (conf) {
return exec(method, path, payload, conf.jwt, app);
});
}
return exec(method, path, payload, null, app);
}