From adc7bb61521b08495f16684ec3df679cbe8f8bdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Minelli?= <michael@minelli.me> Date: Fri, 2 Jun 2023 18:38:40 +0200 Subject: [PATCH] Add Local config (by json file on os) --- NodeApp/src/Config/LocalConfig/LocalConfig.ts | 55 +++++++++++++++++++ .../src/Config/LocalConfig/LocalConfigKeys.ts | 6 ++ 2 files changed, 61 insertions(+) create mode 100644 NodeApp/src/Config/LocalConfig/LocalConfig.ts create mode 100644 NodeApp/src/Config/LocalConfig/LocalConfigKeys.ts diff --git a/NodeApp/src/Config/LocalConfig/LocalConfig.ts b/NodeApp/src/Config/LocalConfig/LocalConfig.ts new file mode 100644 index 0000000..39a376c --- /dev/null +++ b/NodeApp/src/Config/LocalConfig/LocalConfig.ts @@ -0,0 +1,55 @@ +import * as fs from 'fs'; +import logger from '../../shared/logging/WinstonLogger'; +import SessionManager from '../../managers/SessionManager'; +import Config from '../Config'; +import LocalConfigKeys from './LocalConfigKeys'; + + +class LocalConfig { + private static _instance: LocalConfig; + + private get configPath(): string { + return `${ Config.localConfig.folder }/${ Config.localConfig.file }`; + } + + private _config: { [key in LocalConfigKeys]?: any } = {}; + + private constructor() { } + + public static get instance(): LocalConfig { + if ( !LocalConfig._instance ) { + LocalConfig._instance = new LocalConfig(); + } + + return LocalConfig._instance; + } + + loadConfig() { + if ( !fs.existsSync(this.configPath) ) { + fs.mkdirSync(Config.localConfig.folder, { recursive: true }); + + fs.writeFileSync(this.configPath, JSON.stringify({})); + } + + this._config = JSON.parse(fs.readFileSync(this.configPath).toString()); + + SessionManager.token = this._config.apiToken; + } + + updateConfig(key: LocalConfigKeys, value: any) { + if ( (this._config as any)[key] === value ) { + return; + } + + (this._config as any)[key] = value; + + fs.writeFile(this.configPath, JSON.stringify(this._config), (err) => { + if ( err ) { + logger.error(err); + } + }); + } +} + + +export default LocalConfig.instance; \ No newline at end of file diff --git a/NodeApp/src/Config/LocalConfig/LocalConfigKeys.ts b/NodeApp/src/Config/LocalConfig/LocalConfigKeys.ts new file mode 100644 index 0000000..8803557 --- /dev/null +++ b/NodeApp/src/Config/LocalConfig/LocalConfigKeys.ts @@ -0,0 +1,6 @@ +enum LocalConfigKeys { + API_TOKEN = 'apiToken' +} + + +export default LocalConfigKeys; \ No newline at end of file -- GitLab