From 3119064b773f77dbf20df47a57142e293d35a2ad Mon Sep 17 00:00:00 2001 From: Tanya Byrne Date: Tue, 25 Aug 2020 19:39:00 +0100 Subject: [PATCH] expanding function for envs --- api/src/get-rate-limiter-config.ts | 10 +------- api/src/storage.ts | 17 +------------ api/src/utils/parse-env.ts | 39 ++++++++++++++++++++++++++---- 3 files changed, 36 insertions(+), 30 deletions(-) diff --git a/api/src/get-rate-limiter-config.ts b/api/src/get-rate-limiter-config.ts index df2524ed48..196b360d7d 100644 --- a/api/src/get-rate-limiter-config.ts +++ b/api/src/get-rate-limiter-config.ts @@ -37,7 +37,7 @@ function getRateLimiterConfig(): IRateLimiterOptions { function getRateLimiterRedisConfig(): IRateLimiterStoreOptions { const redis = require('redis'); - const redisConfig: any = {}; + const redisConfig = parseEnv(0, 'redis'); const redisClient = redis.createClient({ enable_offline_queue: false, host: env.SREDIS_HOST, @@ -51,13 +51,5 @@ function getRateLimiterRedisConfig(): IRateLimiterStoreOptions { redisConfig.storeClient = redisClient; - for (const [key, value] of Object.entries(env)) { - if (key.startsWith('REDIS')) { - // amended as we want the second and third words - - redisConfig[parseEnv(key, 0)] = value; - } - } - return redisConfig; } diff --git a/api/src/storage.ts b/api/src/storage.ts index 3f204b3f5a..b83c1807e6 100644 --- a/api/src/storage.ts +++ b/api/src/storage.ts @@ -19,22 +19,7 @@ registerDrivers(storage); export default storage; function getStorageConfig(): StorageManagerConfig { - const config: any = { disks: {} }; - - for (const [key, value] of Object.entries(env)) { - if (key.startsWith('STORAGE') === false) continue; - if (key === 'STORAGE_LOCATIONS') continue; - if (key.endsWith('PUBLIC_URL')) continue; - - const disk = key.split('_')[1].toLowerCase(); - if (!config.disks[disk]) config.disks[disk] = { config: {} }; - - if (key.endsWith('DRIVER')) { - config.disks[disk].driver = value; - continue; - } - config.disks[disk].config[parseEnv(key, 1)] = value; - } + const config = parseEnv(1, 'storage'); return config; } diff --git a/api/src/utils/parse-env.ts b/api/src/utils/parse-env.ts index f64d849178..2773269b1f 100644 --- a/api/src/utils/parse-env.ts +++ b/api/src/utils/parse-env.ts @@ -1,12 +1,41 @@ import camelcase from 'camelcase'; import env from '../env'; -export default function parseEnv(key: string, splitWord: number) { - // splitWord 0 = exclude first word on _ +export default function parseEnv(splitWord: number, envType?: string) { + // splitWord = where to spit the string to exlude any prewords + const config: any = {}; + const storageConfig: any = { disks: {} }; - const config = camelcase( - key.split('_').filter((_, index) => [0, splitWord].includes(index) === false) - ); + for (const [key, value] of Object.entries(env)) { + if (envType === 'storage') { + if (key.startsWith('STORAGE') === false) continue; + if (key === 'STORAGE_LOCATIONS') continue; + if (key.endsWith('PUBLIC_URL')) continue; + + const disk = key.split('_')[1].toLowerCase(); + if (!storageConfig.disks[disk]) storageConfig.disks[disk] = { config: {} }; + + if (key.endsWith('DRIVER')) { + storageConfig.disks[disk].driver = value; + continue; + } + storageConfig.disks[disk].config[configCamel(key, splitWord)] = value; + } + if (envType === 'redis') { + if (key.startsWith('REDIS')) { + config[configCamel(key, splitWord)] = value; + } + } else { + config[configCamel(key, splitWord)] = value; + } + } + if (envType === 'storage') { + return storageConfig; + } return config; } + +function configCamel(key: string, sWord: number) { + return camelcase(key.split('_').filter((_, index) => [0, sWord].includes(index) === false)); +}