47 lines
1.0 KiB
JavaScript
47 lines
1.0 KiB
JavaScript
const crypto = require("crypto");
|
|
|
|
const scenario = require("./scenario");
|
|
const config = require("./config");
|
|
|
|
function builder(scenarioName, scenarioConfig, scenarioPhone) {
|
|
const scenes = [];
|
|
|
|
const builtScenario = scenario[scenarioName](scenarioConfig);
|
|
const sessionId = crypto.randomBytes(16).toString("hex");
|
|
|
|
for (const scene of builtScenario) {
|
|
scene.sessionId = sessionId;
|
|
scene.ussdPhone = scenarioPhone;
|
|
|
|
Object.assign(scene, config);
|
|
|
|
scenes.push(scene);
|
|
}
|
|
|
|
return scenes;
|
|
}
|
|
|
|
function parseScenario(scenarioPhone, scenarioString) {
|
|
const [scenarioName, scenarioConfig] = scenarioString.split(" ");
|
|
|
|
return builder(
|
|
scenarioName,
|
|
parseScenarioConfig(scenarioConfig),
|
|
scenarioPhone
|
|
);
|
|
}
|
|
|
|
function parseScenarioConfig(scenarioConfigString) {
|
|
const configs = scenarioConfigString.split(",");
|
|
const configObject = {};
|
|
|
|
for (const conf of configs) {
|
|
[key, value] = conf.split("=");
|
|
configObject[key] = value;
|
|
}
|
|
|
|
return configObject;
|
|
}
|
|
|
|
module.exports = { parseScenario };
|