UNPKG

@bitblit/ratchet-epsilon-common

Version:

Tiny adapter to simplify building API gateway Lambda APIS

60 lines 2.62 kB
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