verdandi
Version:
Verðandi; API backend for Sjekk UT mobile application
53 lines (44 loc) • 1.39 kB
JavaScript
;
const fs = require('fs');
const variables = [
{ name: 'NTB_API_KEY' },
{ name: 'NEW_RELIC_LICENSE_KEY', env: ['production'] },
{ name: 'SENTRY_DSN', env: ['production'] },
{ name: 'OAUTH_CLIENT_ID', env: ['development', 'test'] },
{ name: 'OAUTH_CLIENT_SECRET', env: ['development', 'test'] },
{ name: 'OAUTH_ACCESS_TOKEN', env: ['development', 'test'] },
{ name: 'OAUTH_REFRESH_TOKEN', env: ['development', 'test'] },
{ name: 'OAUTH_USER_ID', env: ['development', 'test'] },
];
function getFromJson() {
try {
return JSON.parse(fs.readFileSync('/secrets/prod.json', { encoding: 'utf-8' }));
} catch (err) {
throw new Error('Could not read secrets file "prod.json"');
}
}
function getFromProcess() {
return variables
.filter( // eslint-disable-next-line
variable => variable.env ? variable.env.find(env => /^development|test$/.test(env)) : true
)
.reduce((object, variable) => {
const value = process.env[variable.name];
object[variable.name] = value;
return object;
}, {});
}
const env = process.env.NODE_ENV;
let secrets;
switch (env) {
case 'development':
case 'test':
secrets = getFromProcess();
break;
case 'production':
secrets = getFromJson();
break;
default:
throw new Error('Environment variable "NODE_ENV" is undefined or invalid');
}
module.exports = secrets;