UNPKG

@playkit-js/playkit-js

Version:

[![Build Status](https://github.com/kaltura/playkit-js/actions/workflows/run_canary.yaml/badge.svg)](https://github.com/kaltura/playkit-js/actions/workflows/run_canary.yaml) [![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.

52 lines (46 loc) 2.15 kB
import {FairPlayDrmConfigType} from '../engines/html5/media-source/adapters/fairplay-drm-handler'; import {DrmScheme} from './drm-scheme'; import {PKDrmConfigObject, PKDrmDataObject} from '../types'; import {ILogger} from 'js-logger'; import getLogger from '../utils/logger'; const _logger: ILogger = getLogger('FairPlay'); class FairPlay { /** * FairPlay is the configure key system. * @param {Array<PKDrmDataObject>} drmData - The drm data. * @param {PKDrmConfigObject} drmConfig - The drm config. * @return {boolean} - Whether FairPlay is the configure key system. */ public static isConfigured(drmData: Array<PKDrmDataObject>, drmConfig: PKDrmConfigObject): boolean { return DrmScheme.FAIRPLAY === drmConfig.keySystem && !!drmData.find(drmEntry => drmEntry.scheme === drmConfig.keySystem); } /** * FairPlay playback supports in case 2 conditions are met: * 1. The environment supports FairPlay playback. * 2. The drm data of the source object contains entry with FairPlay scheme. * @param {Array<PKDrmDataObject>} drmData - The drm data to check. * @return {boolean} - Whether FairPlay can be play on the current environment. */ public static canPlayDrm(drmData: Array<PKDrmDataObject>): boolean { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore const result = drmData.some(drmEntry => drmEntry.scheme === DrmScheme.FAIRPLAY) && !!window.WebKitMediaKeys; _logger.debug(`Can play DRM scheme of: ${DrmScheme.FAIRPLAY} is ${result.toString()}`); return result; } /** * Sets the FairPlay playback. * @param {FairPlayDrmConfigType} config - The config to manipulate. * @param {Array<PKDrmDataObject>} drmData - The drm data. * @returns {void} */ public static setDrmPlayback(config: FairPlayDrmConfigType, drmData: Array<PKDrmDataObject>): void { _logger.debug('Sets drm playback'); const drmEntry = drmData.find(drmEntry => drmEntry.scheme === DrmScheme.FAIRPLAY); if (drmEntry) { config.licenseUrl = drmEntry.licenseUrl; config.certificate = drmEntry.certificate; } } } export default FairPlay;