@svta/common-media-library
Version:
A common library for media playback in JavaScript
53 lines • 1.52 kB
JavaScript
import { CMCD_HEADERS } from './CMCD_HEADERS.js';
import { CMCD_PARAM } from './CMCD_PARAM.js';
import { CMCD_QUERY } from './CMCD_QUERY.js';
import { encodeCmcd } from './encodeCmcd.js';
import { toCmcdHeaders } from './toCmcdHeaders.js';
/**
* Converts CMCD data into a report format.
*
* @param data - The CMCD data to be transformed into a report
* @param target - The target configuration for the CMCD report
*
* @return A CMCD report object
*
* @group CMCD
*
* @beta
*
* @example
* {@includeCode ../../test/cmcd/toCmcdReport.test.ts#example}
*/
export function toCmcdReport(data, target) {
if (!target || !target.url) {
return null;
}
const url = new URL(target.url);
const method = target.method || 'GET';
const headers = {};
const transimissionMode = target.transmissionMode || CMCD_QUERY;
const options = {
version: target.version,
reportingMode: target.reportingMode,
};
if (target.enabledKeys) {
options.filter = (key) => target.enabledKeys.includes(key);
}
switch (transimissionMode) {
case CMCD_QUERY:
const param = encodeCmcd(data, options);
if (param) {
url.searchParams.set(CMCD_PARAM, param);
}
break;
case CMCD_HEADERS:
Object.assign(headers, toCmcdHeaders(data, options));
break;
}
return {
url: url.toString(),
method,
headers,
};
}
//# sourceMappingURL=toCmcdReport.js.map