/*
* Author: Vlad Seryakov vseryakov@gmail.com
* backendjs 2018
*/
const logger = require(__dirname + '/../logger');
const lib = require(__dirname + '/../lib');
const aws = require(__dirname + '/../aws');
const QueueClient = require(__dirname + "/client");
/**
* Queue client using AWS EventBridge.
*
* The URL must look like: `eventbridge://?[params]`.
*
* @example
*
* -queue-events=eventbridge://
* -queue-events=eventbridge://?bk-endpoint=12345
* -queue-events=eventbridge://?bk-bus=mybus
* -queue-events=eventbridge://?bk-source=mysource
* @memberOf module:queue
*/
class EventBridgeClient extends QueueClient {
constructor(options) {
super(options);
this.name = "eventbridge";
this.applyOptions();
this.emit("ready");
}
submit(events, options, callback) {
logger.dev("submit:", this.url, events, options);
var entries = [];
if (!Array.isArray(events)) events = [events];
for (const event of events) {
if (!event) continue;
entries.push({
Source: options.source || this.options.source || this.queueName,
DetailType: event.subject || options.subject || this.options.subject,
Details: lib.stringify(event),
EventBusName: options.eventBusName || this.options.bus,
TraceHeader: options.traceHeader,
});
}
aws.queryEvents("PutEvents", { EndpointId: this.options.endpoint, Entries: entries }, options, callback);
}
}
module.exports = EventBridgeClient;