senecajs/seneca-telemetry-newrelic

View on GitHub
src/events-collector.ts

Summary

Maintainability
B
4 hrs
Test Coverage
import { Event, EventBatch, EventClient } from "@newrelic/telemetry-sdk/dist/src/telemetry/events";
import { BaseMetricsResponse } from "./types";

export function EventsCollector(eventsApiKey: string) {
  const eventsClient = new EventClient({
    apiKey: eventsApiKey,
  });

  function event_handler(this: any, msg: any): Promise<BaseMetricsResponse> {
    const { eventType, attributes, timestamp } = msg;
    const event = new Event(eventType, attributes || {}, timestamp || Date.now());
    const eventBatch = new EventBatch({}, [event]);
    return new Promise((resolve, reject) => {
      eventsClient.send(eventBatch, (err: any, res: any, body: any) => {
        const response = {
          err: null,
          statusCode: null,
          body: null,
        }
        if (err) {
          response.err = err;
          return reject(response);
        }
        response.statusCode = res.statusCode;
        response.body = body;
        return resolve(response);
      })
    })
  }

  return { event_handler };
}