Files
bodyshop/server/rr/rr-config.js

48 lines
1.6 KiB
JavaScript

/**
* Ensure a value is a non-empty string, else throw
* @param v
* @param name
* @returns {string}
*/
const requireString = (v, name) => {
const s = (v ?? "").toString().trim();
if (!s || s.toLowerCase() === "undefined" || s.toLowerCase() === "null") {
throw new Error(`RR config missing: ${name}`);
}
return s;
};
/**
* Get RR config from bodyshop record, with env fallbacks
* @param bodyshop
* @returns {{baseUrl: string, username: string, password: string, routing: {dealerNumber: string, storeNumber: string, areaNumber: string}, timeoutMs: number, retries: {max: number}}}
*/
const getRRConfigFromBodyshop = (bodyshop) => {
const baseUrl = process.env.RR_BASE_URL;
const username = process.env.RR_USERNAME;
const password = process.env.RR_PASSWORD;
const dealerNumber = bodyshop?.rr_dealerid ?? process.env.RR_DEALER_NUMBER;
const bsCfg = bodyshop?.rr_configuration || {};
const storeNumber = bsCfg?.storeNumber;
const areaNumber = bsCfg?.branchNumber ?? bsCfg?.areaNumber;
return {
baseUrl: requireString(baseUrl, "baseUrl"),
username: requireString(username, "username"),
password: requireString(password, "password"),
routing: {
dealerNumber: requireString(String(dealerNumber), "routing.dealerNumber"),
storeNumber: requireString(String(storeNumber), "routing.storeNumber"),
areaNumber: requireString(String(areaNumber), "routing.areaNumber")
},
// timeouts / retries can be adjusted here
timeoutMs: Number(process.env.RR_TIMEOUT_MS || 30000),
retries: { max: Number(process.env.RR_RETRIES_MAX || 2) }
};
};
module.exports = { getRRConfigFromBodyshop };