@100mslive/hms-video-store
Version:
@100mslive Core SDK which abstracts the complexities of webRTC while providing a reactive store for data management with a unidirectional data flow
85 lines (77 loc) • 2.44 kB
text/typescript
import AnalyticsEvent from './AnalyticsEvent';
import { AnalyticsEventLevel } from './AnalyticsEventLevel';
import { HMSException } from '../error/HMSException';
export default class MediaPluginsAnalyticsFactory {
static failure(pluginName: string, error: HMSException) {
const name = 'mediaPlugin.failed';
const level = AnalyticsEventLevel.ERROR;
const properties = { plugin_name: pluginName, ...error.toAnalyticsProperties() };
return new AnalyticsEvent({ name, level, properties });
}
static audioPluginFailure(pluginName: string, sampleRate: number, error: HMSException) {
const name = 'mediaPlugin.failed';
const level = AnalyticsEventLevel.ERROR;
const properties = { plugin_name: pluginName, sampleRate: sampleRate, ...error.toAnalyticsProperties() };
return new AnalyticsEvent({ name, level, properties });
}
static audioPluginStats({
pluginName,
duration,
loadTime,
sampleRate,
}: {
pluginName: string;
duration: number;
loadTime: number;
sampleRate: number;
}) {
const name = 'mediaPlugin.stats';
const level = AnalyticsEventLevel.INFO;
const properties = {
plugin_name: pluginName,
duration: duration,
load_time: loadTime,
sampleRate: sampleRate,
};
return new AnalyticsEvent({ name, level, properties });
}
static added(pluginName: string, added_at: number) {
const name = 'mediaPlugin.added';
const level = AnalyticsEventLevel.INFO;
const properties = {
plugin_name: pluginName,
added_at: added_at,
};
return new AnalyticsEvent({ name, level, properties });
}
static stats({
pluginName,
duration,
loadTime,
avgPreProcessingTime,
avgProcessingTime,
inputFrameRate,
pluginFrameRate,
}: {
pluginName: string;
duration: number;
loadTime: number;
avgPreProcessingTime?: number;
avgProcessingTime?: number;
inputFrameRate?: number;
pluginFrameRate?: number;
}) {
const name = 'mediaPlugin.stats';
const level = AnalyticsEventLevel.INFO;
const properties = {
plugin_name: pluginName,
duration: duration,
load_time: loadTime,
avg_preprocessing_time: avgPreProcessingTime,
avg_processing_time: avgProcessingTime,
input_frame_rate: inputFrameRate,
plugin_frame_rate: pluginFrameRate,
};
return new AnalyticsEvent({ name, level, properties });
}
}