Replace restful-js with Axios

Change-Id: If47c5b7708885e84d632255557543d292f3ccd69
Issue-ID: SDC-869
Signed-off-by: ilanap <ilanap@amdocs.com>
diff --git a/openecomp-ui/proxy-server.js b/openecomp-ui/proxy-server.js
new file mode 100644
index 0000000..3c4c32c
--- /dev/null
+++ b/openecomp-ui/proxy-server.js
@@ -0,0 +1,102 @@
+'use strict';
+
+const proxy = require('http-proxy-middleware');
+
+let localDevConfig = {};
+try {
+	localDevConfig = require('./devConfig');
+} catch (e) {}
+const devConfig = Object.assign({}, require('./devConfig.defaults'), localDevConfig);
+let devPort = process.env.PORT || devConfig.port;
+
+
+module.exports = function (server) {
+	let cookieRules = devConfig.proxyConfig.cookieReplaceRules;
+	let cookies = devConfig.proxyConfig.cookies;
+	console.log('---------------------');
+
+	let proxyConfigDefaults = {
+		changeOrigin: true,
+		secure: false,
+		onProxyRes: (proxyRes, req, res) => {
+			let setCookie = proxyRes.headers['set-cookie'];
+			if (setCookie) {
+				cookieRules.forEach(function(rule) {
+					setCookie[0] = setCookie[0].replace(rule.replace, rule.with);
+				});
+			}
+			if (proxyRes.statusCode === 302 && proxyRes.headers.location.indexOf(devConfig.proxyConfig.login) > -1) {
+				proxyRes.headers.location = `http://localhost:${devPort}/${devConfig.proxyConfig.redirectionPath}`;
+				let myCookies = [];
+				for (let cookie in cookies) {
+					myCookies.push(cookie + '=' + cookies[cookie]);
+				}
+				res.setHeader('Set-Cookie', myCookies);
+			}
+		}
+	};
+
+	let middlewares = [
+		(req, res, next) => {
+			devConfig.proxyConfig.urlReplaceRules.forEach(function(rule) {
+				if (req.url.indexOf(rule.url) > -1) {
+					req.url = req.url.replace(rule.replace, rule.with);
+				}
+			});
+			devConfig.proxyConfig.jsReplaceRules.forEach(function(rule) {
+				let regex = new RegExp('^(.*)' + rule.replace);
+				let match = req.url.match(regex);
+				let newUrl = match && match[1] + rule.with + '.js';
+				if (newUrl) {
+					console.log(`REWRITING URL: ${req.url} -> ${newUrl}`);
+					req.url = newUrl;
+				}
+			});
+			next();
+		}
+	];
+
+
+	let proxies = [];
+
+	// standalone back-end (proxyTarget) has higher priority, so it should be first
+	if (devConfig.proxyTarget) {
+		console.log('Onboarding proxy set to : ' + devConfig.proxyTarget);
+		proxies.push({
+			target : devConfig.proxyTarget,
+			config: devConfig.proxyConfig.onboardingProxy}
+		);
+	} else {
+		console.log('Catalog proxy set to : ' + devConfig.proxyCatalogTarget);
+	}
+	console.log('Catalog proxy set to : ' + devConfig.proxyCatalogTarget);
+	proxies.push({
+		target : devConfig.proxyCatalogTarget,
+		config: devConfig.proxyConfig.catalogProxy}
+	);
+	proxies.forEach(function(p) {
+		middlewares.push(
+			proxy(p.config.proxy, Object.assign({}, proxyConfigDefaults, {
+				target: p.target,
+				pathRewrite: p.config.rewrite
+			}))
+		);
+
+	});
+
+	let websocketTarget = devConfig.proxyCatalogTarget;
+	if (devConfig.proxyWebsocketTarget) {
+		websocketTarget = devConfig.proxyWebsocketTarget;
+	}
+	console.log('Websocket proxy set to : ' + websocketTarget);
+	console.log('---------------------');
+	var wsProxy = proxy(devConfig.proxyConfig.websocketProxy.proxy, Object.assign({}, proxyConfigDefaults, {
+		target: websocketTarget,
+		ws: true
+	}))
+	middlewares.push(wsProxy);
+
+
+	server.use(middlewares);
+	server.on('upgrade', wsProxy.upgrade);
+};