UNPKG

stratumn-cli

Version:
125 lines (91 loc) 3.26 kB
'use strict'; 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); }