restaf-server
Version:
Custom app server for Viya apps
140 lines (118 loc) • 3.96 kB
JavaScript
/*
* ------------------------------------------------------------------------------------
* * Copyright (c) SAS Institute Inc.
* * Licensed under the Apache License, Version 2.0 (the 'License');
* * you may not use this file except in compliance with the License.
* * You may obtain a copy of the License at
* *
* * http://www.apache.org/licenses/LICENSE-2.0
* *
* * Unless required by applicable law or agreed to in writing, software
* * distributed under the License is distributed on an 'AS IS' BASIS,
* * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* * See the License for the specific language governing permissions and
* limitations under the License.
* ----------------------------------------------------------------------------------------
*
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.iapp = iapp;
exports.app = app;
exports.service = service;
exports.UIapp = UIapp;
require("babel-polyfill");
var _fs = _interopRequireDefault(require("fs"));
var _iService = _interopRequireDefault(require("./iService"));
var _config = _interopRequireDefault(require("./config"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function UIapp(uTable, rootHandler, rafEnv) {
var asset = setup(rafEnv);
(0, _iService["default"])(uTable, uTable !== null, asset, rootHandler, null);
}
function service(uTable, rootHandler, rafEnv) {
var asset = setup(rafEnv);
(0, _iService["default"])(uTable, false, asset, rootHandler, null);
}
function app(appData) {
var rafEnv = process.argv.length === 3 ? process.argv[2] : null;
console.log(rafEnv === null ? 'NOTE: Using settings from environment variables' : "NOTE: env file is: ".concat(rafEnv));
iapp(appData, rafEnv);
}
function iapp(appSrc, rafEnv, dockerFile) {
var asset = setup(rafEnv, dockerFile);
var uTable = null;
if (appSrc !== null) {
createPayload(appSrc, function (err, appEnv) {
if (err) {
console.log(err);
process.exit(1);
} else {
(0, _iService["default"])(uTable, uTable !== null, asset, null, appEnv);
}
});
} else {
var appEnv = getAllEnv(null);
(0, _iService["default"])(uTable, uTable !== null, asset, null, appEnv);
}
}
function setup(rafEnv, dockeFile) {
(0, _config["default"])(rafEnv, dockeFile);
var asset = process.env.APPLOC === '.' ? process.cwd() : process.env.APPLOC;
process.env.APPASSET = asset;
return asset;
}
function createPayload(srcName, cb) {
var src = _fs["default"].readFileSync(srcName, 'utf8');
if (src === null) {
cb("".concat(srcName, " read failed"));
}
try {
// console.log(src);
var f = new Function(src);
console.log("".concat(srcName, " compile completed"));
var r = f();
f = null;
var ar = getAllEnv(r);
cb(null, ar);
} catch (err) {
console.log("".concat(srcName, " compile failed"));
cb(err);
}
}
function getAllEnv(userData) {
var env;
var l = null;
var authflow = trimit('AUTHFLOW');
if (authflow === 'authorization_code') {
authflow = 'server';
}
if (authflow === 'implicit') {
l = {
authType: authflow,
host: trimit('VIYA_SERVER'),
clientID: trimit('CLIENTID'),
redirect: process.env.REDIRECT != null ? "".concat(trimit('APPNAME'), "/").concat(trimit('REDIRECT')) : null,
appName: trimit('APPNAME')
};
} else {
l = {
authType: authflow,
appName: trimit('APPNAME'),
passThru: trimit('VIYA_SERVER')
};
}
env = l !== null ? "let LOGONPAYLOAD = ".concat(JSON.stringify(l), ";") : "let LOGONPAYLOAD=null;";
if (userData !== null) {
env += "let APPENV = ".concat(JSON.stringify(userData), ";");
} else {
env += "let APPENV = {none: 'none'};";
}
return env;
}
function trimit(e) {
var a = process.env[e];
return a == null ? null : a.trim();
}