in source/packages/services/events-alerts/src/alerts/assembler.ts [27:187]
public assembleAlert(raw: RawAlert): AssembledAlert {
logger.debug(`assembleAlert: raw: ${JSON.stringify(raw)}`);
const templatePropertiesData: { [key: string]: string | number | boolean } = {};
if (raw.templatePropertiesData?.M) {
Object.keys(raw.templatePropertiesData.M).forEach((k) => {
templatePropertiesData[k] =
raw.templatePropertiesData.M[k].N ?? raw.templatePropertiesData.M[k].S;
});
}
const targetsM = raw.targets?.M;
const email: EmailTargetItem[] = [];
if (targetsM.email?.L?.length > 0) {
email.push(
...targetsM.email.L.map((j) => {
return {
address: j.M?.address?.S,
};
})
);
}
if (targetsM.email?.M) {
email.push({
address: targetsM.email.M.address?.S,
});
}
const mqtt: MQTTTargetItem[] = [];
if (targetsM.mqtt?.L?.length > 0) {
mqtt.push(
...targetsM.mqtt.L.map((j) => {
return {
topic: j.M?.topic?.S,
};
})
);
}
if (targetsM.mqtt?.M) {
mqtt.push({
topic: targetsM.mqtt.M.topic?.S,
});
}
const sms: SMSTargetItem[] = [];
if (targetsM.sms?.L?.length > 0) {
sms.push(
...targetsM.sms.L.map((j) => {
return {
phoneNumber: j.M?.phoneNumber?.S,
};
})
);
}
if (targetsM.sms?.M) {
sms.push({
phoneNumber: targetsM.sms.M.phoneNumber?.S,
});
}
const dynamodb: DynamodDBTargetItem[] = [];
if (targetsM.dynamodb?.L?.length > 0) {
dynamodb.push(
...targetsM.dynamodb.L.map((ddb) => {
const attributeMapping: { [key: string]: string } = {};
if (ddb.M?.attributeMapping?.M) {
Object.keys(ddb.M.attributeMapping.M).forEach((k) => {
attributeMapping[k] = ddb.M.attributeMapping.M[k].S;
});
}
return {
tableName: ddb.M?.tableName?.S,
attributeMapping,
};
})
);
}
if (targetsM.dynamodb?.M) {
const attributeMapping: { [key: string]: string } = {};
if (targetsM.dynamodb.M.attributeMapping?.M) {
Object.keys(targetsM.dynamodb.M.attributeMapping.M).forEach((k) => {
attributeMapping[k] = targetsM.dynamodb.M.attributeMapping.M[k].S;
});
}
dynamodb.push({
tableName: targetsM.dynamodb.M.tableName?.S,
attributeMapping,
});
}
const push_gcm: PushTargetItem[] = [];
if (targetsM.push_gcm?.L?.length > 0) {
push_gcm.push(
...targetsM.push_gcm.L.map((j) => {
return {
platformEndpointArn: j.M?.platformEndpointArn?.S,
};
})
);
}
if (targetsM.push_gcm?.M) {
push_gcm.push({
platformEndpointArn: targetsM.push_gcm.M.platformEndpointArn?.S,
});
}
const push_adm: PushTargetItem[] = [];
if (targetsM.push_adm?.L?.length > 0) {
push_adm.push(
...targetsM.push_adm.L.map((j) => {
return {
platformEndpointArn: j.M?.platformEndpointArn?.S,
};
})
);
}
if (targetsM.push_adm?.M) {
push_adm.push({
platformEndpointArn: targetsM.push_adm.M.platformEndpointArn?.S,
});
}
const push_apns: PushTargetItem[] = [];
if (targetsM.push_apns?.L?.length > 0) {
push_apns.push(
...targetsM.push_apns.L.map((j) => {
return {
platformEndpointArn: j.M?.platformEndpointArn?.S,
};
})
);
}
if (targetsM.push_apns?.M) {
push_apns.push({
platformEndpointArn: targetsM.push_apns.M.platformEndpointArn?.S,
});
}
const assembled: AssembledAlert = {
version: Number(raw.version?.N),
eventId: raw.eventId?.S,
eventName: raw.eventName?.S,
templatePropertiesData,
time: raw.time?.S,
userId: raw.userId?.S,
snsTopicArn: raw.snsTopicArn?.S,
targets: {
email,
dynamodb,
mqtt,
push_gcm,
push_adm,
push_apns,
sms,
},
};
logger.debug(`assembleAlert: exit: ${JSON.stringify(assembled)}`);
return assembled;
}