@bitblit/ratchet-epsilon-common
Version:
Tiny adapter to simplify building API gateway Lambda APIS
60 lines • 2.62 kB
JavaScript
import { LambdaEventDetector } from '@bitblit/ratchet-aws/lambda/lambda-event-detector';
import { EpsilonConstants } from '../epsilon-constants.js';
import { RequireRatchet } from '@bitblit/ratchet-common/lang/require-ratchet';
import { Logger } from '@bitblit/ratchet-common/logger/logger';
import { StringRatchet } from '@bitblit/ratchet-common/lang/string-ratchet';
import { ContextUtil } from '../util/context-util.js';
export class InterApiUtil {
static isInterApiSnsEvent(event) {
return !!InterApiUtil.extractEntryFromEvent(event);
}
static extractEntryFromEvent(evt) {
let rval = null;
if (evt) {
if (LambdaEventDetector.isSingleSnsEvent(evt)) {
const cast = evt;
const msg = cast.Records[0].Sns.Message;
if (StringRatchet.trimToNull(msg)) {
const parsed = JSON.parse(msg);
if (!!parsed && parsed['type'] === EpsilonConstants.INTER_API_SNS_EVENT) {
rval = parsed['interApiEvent'];
}
}
}
}
return rval;
}
static async processInterApiEvent(evt, cfg, mgr) {
let rval = [];
RequireRatchet.notNullOrUndefined(evt, 'InterApiEntry');
RequireRatchet.notNullOrUndefined(mgr, 'BackgroundManager');
const interApiEntry = InterApiUtil.extractEntryFromEvent(evt);
ContextUtil.setOverrideTraceFromInterApiEntry(interApiEntry);
Logger.info('Processing inter-api event : %j', evt);
const backgroundEntries = [];
cfg.processMappings.forEach((map) => {
if (!map.disabled && interApiEntry.source.match(map.sourceRegex) && interApiEntry.type.match(map.typeRegex)) {
map.backgroundProcessTypes.forEach((taskName) => {
const entry = mgr.createEntry(taskName, interApiEntry.data);
backgroundEntries.push(entry);
});
}
});
if (backgroundEntries.length > 0) {
Logger.info('Adding %d entries to queue', backgroundEntries.length);
rval = await mgr.addEntriesToQueue(backgroundEntries, true);
}
else {
Logger.info('No entries mapped for this event');
}
return rval;
}
static addTraceToInterApiEntry(ent) {
if (ent) {
ent.traceId = ent.traceId || ContextUtil.currentTraceId();
ent.traceDepth = ent.traceDepth || ContextUtil.currentTraceDepth() + 1;
}
return ent;
}
}
//# sourceMappingURL=inter-api-util.js.map