Files
nym/nym-api/tests/src/config/configHandler.ts
T
benedettadavico de55ffd944 pretty
2023-01-26 12:49:43 +01:00

65 lines
1.6 KiB
TypeScript

import { readFileSync } from "fs";
import { TLogLevelName } from "tslog";
import YAML from "yaml";
class ConfigHandler {
private static instance: ConfigHandler;
private validEnvironments = ["qa", "prod"];
public commonConfig: { request_headers: object };
public environment: string;
public environmnetConfig: {
log_level: TLogLevelName;
time_zone: string;
api_base_url: string;
mix_id: number;
identity_key: string;
gateway_identity: string;
};
private constructor() {
this.setCommonConfig();
this.setEnvironmentConfig(process.env.TEST_ENV || "qa" || "prod");
}
public static getInstance(): ConfigHandler {
if (!ConfigHandler.instance) {
ConfigHandler.instance = new ConfigHandler();
}
return ConfigHandler.instance;
}
private setCommonConfig(): void {
try {
this.commonConfig = YAML.parse(
readFileSync("src/config/config.yaml", "utf8")
).common;
} catch (error) {
throw Error(`Error reading common config: (${error})`);
}
}
private setEnvironmentConfig(environment: string): void {
this.ensureEnvironmentIsValid(environment);
try {
this.environmnetConfig = YAML.parse(
readFileSync("src/config/config.yaml", "utf8")
)[environment];
} catch (error) {
throw Error(`Error reading environment config: (${error})`);
}
}
private ensureEnvironmentIsValid(environment: string): void {
if (this.validEnvironments.indexOf(environment) === -1) {
throw Error(`Config environment is not valid: "${environment}"`);
}
}
}
export default ConfigHandler;