import jamshelper = require("./jamshelper"); var jamsconfig = require("./config"); import fs = require("fs-extra"); import jamstoken = require("./jamstoken"); var helper = new jamshelper.Helper(); export class Admin { // #region Properties config: any; homepath = helper.getHomePath(); // #endregion // #region Constructor constructor(configuration: any) { if (configuration === null) { configuration = new jamsconfig.Config(); } this.config = configuration; } // #endregion // #region Action Methods getConfig(setting: string): string { var returnValue = ""; var configFileLoc = helper.getPath("JAMSConfig.json"); var jsonFile = require(configFileLoc); if (this.configExists(setting)) { returnValue = jsonFile[setting].toString(); } return returnValue; } getConfigs(): string[] { return require("./JAMSConfig.json"); } setConfig(setting: string, value: string, filepath: string = "./"): boolean { var returnValue = false; if (this.configExists(setting)) { if (this.isValidKeySetting(setting, value)) { returnValue = true; this.saveConfig(setting, value, filepath); } } return returnValue; } saveConfig(setting: string, value: string, filepath: string = "./") { var configFileLoc = helper.getPath("JAMSConfig.json"); var token = new jamstoken.Token(); var jsonFile = require(configFileLoc); var writeoptions = token.getWriteOptions(this.config); jsonFile[setting] = value; fs.writeJSONSync(configFileLoc, jsonFile, writeoptions); } isValidKeySetting(setting: string, value: string): boolean { var isValid = false; switch (setting.toLowerCase()) { case "server": isValid = helper.validateUrl(value); break; case "tokenfilename": isValid = helper.validateJSONFileName(value); break; case "locale": isValid = helper.validateLocale(value); break; case "globalfileloc": isValid = helper.validateFolder(value); break; case "ignoreerror": var err: any; switch (value.toLowerCase()) { case "true": err = true; break; case "false": err = false; break; default: err = value; break; } console.log("ignoreerror: " + err); isValid = helper.isBoolean(err); break; case "testvalue": isValid = !helper.isNullOrEmpty(value); break; } return (isValid); } // #endregion // #region Methods // #endregion // #region Helper Methods configExists(key: string): boolean { var result = false; if (!helper.isNullOrEmpty(key)) { result = this.config.properties.indexOf(key) > -1; } return result; } // #endregion }