mozu-node-sdk
Version:
Mozu JavaScript SDK for Node.js and Arc.js environments
74 lines (67 loc) • 2.43 kB
JavaScript
;
// BEGIN INIT
var fs = require('fs');
var findup = require('./tiny-findup');
var legalConfigNames = ['mozu.config','mozu.config.json'];
module.exports = function getConfig() {
let confJson = null;
let conf = {
appKey: process.env.KIBO_CLIENT_ID || process.env.KIBO_APP_KEY ,
sharedSecret: process.env.KIBO_SHARED_SECRET ,
tenantPod: process.env.KIBO_API_HOST,
baseUrl : process.env.KIBO_API_BASE_URL ||'https://home.mozu.com/',
basePciUrl: process.env.KIBO_API_PCI_URL || 'https://pmts.mozu.com/',
developerAccountId: process.env.KIBO_DEV_ACCOUNT_ID,
tenant: process.env.KIBO_TENANT || process.env.KIBO_TENANT_ID,
site: process.env.KIBO_SITE || process.env.KIBO_SITE_ID,
catalog: process.env.KIBO_CATALOG || process.env.KIBO_CATALOG_ID,
masterCatalog: process.env.KIBO_MASTER_CATALOG || process.env.KIBO_MASTER_CATALOG_ID,
locale: process.env.KIBO_LOCALE,
currency: process.env.KIBO_CURRENCY,
developerAccount:{
emailAddress : process.env.KIBO_USER_NAME,
password : process.env.KIBO_USER_NAME
}
}
if (process.env.mozuHosted) {
try {
conf = JSON.parse(process.env.mozuHosted).sdkConfig;
} catch(e) {
throw new Error("Mozu hosted configuration was unreadable: " + e.message);
}
} else {
for (var i = legalConfigNames.length - 1; i >= 0; i--) {
try {
var filename = findup(legalConfigNames[i]);
if (filename) confJson = fs.readFileSync(filename, 'utf-8');
} catch(e) {
continue;
}
if (confJson) break;
}
if (confJson){
try {
conf = Object.assign({}, conf, JSON.parse(confJson));
} catch(e) {
throw new Error("Configuration file was unreadable: " + e.message);
}
}
if(conf.tenantPod){
conf.tenantPod = /https*:\/\/[^\/]+\//i.exec(conf.tenantPod+'/')[0];
let m = /t(\d+)-s(\d+)/gmi.exec(conf.tenantPod);
if(m){
conf.tenant = parseInt(m[1])
conf.site = parseInt(m[2])
}else{
let m = /t(\d+)/gmi.exec(conf.tenantPod);
if(m){
conf.tenant = parseInt(m[1])
}
}
}
if (!conf.appKey && !conf.workingApplicationKey) {
throw new Error("No configuration found. Either set the kibo env vars , create a 'mozu.config' or 'mozu.config.json' file, or supply full config to the .client() method.");
}
}
return conf;
};