Home Identifier Source Repository

lib/Driver/RUM/EventFactory.js

/**
 * Created by CCristi <ccovali@mitocgroup.com> on 4/19/16.
 */

'use strict';

import {FrameworkEvent} from './FrameworkEvent';
import {FrontendEvent} from './FrontendEvent';
import {AbstractEvent} from './AbstractEvent';
import {UnknownRumEventException} from '../Exception/UnknownRumEventException';

/**
 * Event Factory
 */
export class EventFactory {
  /**
   * @param {Object} kernel
   * @param {Object} rawData
   */
  static create(kernel, rawData) {
    let EventClass = null;

    // @note - For the time being event type is guessed by event.service
    // (it'll be changed once we'll have other types of events)
    if (rawData.service && AbstractEvent.SERVICES.indexOf(rawData.service) !== -1) {
      EventClass = FrameworkEvent;
    } else if (rawData.engine) {
      EventClass = FrontendEvent;
    } else {
      throw new UnknownRumEventException(rawData);
    }

    return new EventClass(kernel, rawData);
  }
}