UNPKG

cloudworker-proxy

Version:
136 lines (105 loc) 4.31 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.getAgent = getAgent; exports.configureFetchDefaults = configureFetchDefaults; var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs); var _https = require('https'); var _https2 = _interopRequireDefault(_https); var _nodeFetch = require('node-fetch'); var _nodeFetch2 = _interopRequireDefault(_nodeFetch); var _httpsProxyAgent = require('https-proxy-agent'); var _httpsProxyAgent2 = _interopRequireDefault(_httpsProxyAgent); var _utils = require('./utils'); var _package = require('../package.json'); var _url = require('url'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } var agent = void 0; var headers = void 0; function getAgent() { // Use HTTPS Proxy (Optional) var proxy = process.env.proxy || process.env.HTTP_PROXY || process.env.http_proxy || process.env.HTTPS_PROXY || process.env.https_proxy; var agentOptions = {}; if (proxy) { Object.assign(agentOptions, (0, _url.parse)(proxy)); } var ca = process.env.ca || process.env.HTTPS_CA || process.env.https_ca; var caCerts = []; if (ca) { // Can be a single certificate or multiple, comma separated. var caArr = ca.split(','); // Replace the newline -- https://stackoverflow.com/questions/30400341 caCerts = caCerts.concat(caArr.map(function (cert) { return cert.replace(/\\n/g, '\n'); })); } var cafile = process.env.cafile || process.env.HTTPS_CAFILE || process.env.https_cafile; if (cafile) { // Can be a single certificate file path or multiple paths, comma separated. var caPathArr = cafile.split(','); caCerts = caCerts.concat(caPathArr.map(function (cafilePath) { return _fs2.default.readFileSync(cafilePath.trim()); })); } if (caCerts.length > 0) { Object.assign(agentOptions, { rejectUnauthorized: true, ca: caCerts }); } if (proxy) { return new _httpsProxyAgent2.default(agentOptions); } else if (agentOptions.ca) { return new _https2.default.Agent(agentOptions); } return undefined; } function configureFetchDefaults() { agent = getAgent(); headers = { 'Content-Type': 'application/json', 'x-platform-version': _package.version }; } exports.default = function () { var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(url) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var response; return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: if (process.env.SDK_HTTP_DEBUG) { // eslint-disable-next-line no-console console.log(`platform-sdk fetching: ${options.method || 'GET'} ${url} ${JSON.stringify(options.headers) || 'NO_HEADERS'} ${options.body || 'NO_BODY'}`); } else if (process.env.SLS_DEBUG) { // eslint-disable-next-line no-console console.log(`platform-sdk fetching: ${options.method || 'GET'} ${url}`); } _context.next = 3; return (0, _nodeFetch2.default)(url, Object.assign({ agent }, options, { headers: Object.assign({}, headers, options.headers || {}) })); case 3: response = _context.sent; _context.next = 6; return (0, _utils.checkHttpResponse)(response); case 6: return _context.abrupt('return', response); case 7: case 'end': return _context.stop(); } } }, _callee, undefined); })); return function (_x2) { return _ref.apply(this, arguments); }; }(); //# sourceMappingURL=fetch.js.map