diff --git a/dist/ovpProvider.js b/dist/ovpProvider.js index 708c136c..d851f050 100644 --- a/dist/ovpProvider.js +++ b/dist/ovpProvider.js @@ -473,16 +473,12 @@ Object.defineProperty(exports, "__esModule", { function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -var Scheme = exports.Scheme = function Scheme() { - _classCallCheck(this, Scheme); +var DrmScheme = exports.DrmScheme = { + 'drm.PLAYREADY_CENC': 'com.microsoft.playready', + 'drm.WIDEVINE_CENC': 'com.widevine.alpha', + 'fairplay.FAIRPLAY': 'com.apple.fairplay' }; -Scheme.PLAYREADY_CENC = "drm.PLAYREADY_CENC"; -Scheme.WIDEVINE_CENC = "drm.WIDEVINE_CENC"; -Scheme.FAIRPLAY = "fairplay.FAIRPLAY"; -Scheme.PLAYREADY = "playReady.PLAYREADY"; -Scheme.WIDEVINE = "widevine.WIDEVINE"; - var KalturaRuleActionTypes = exports.KalturaRuleActionTypes = function KalturaRuleActionTypes() { _classCallCheck(this, KalturaRuleActionTypes); }; @@ -1231,8 +1227,6 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var _enums = __webpack_require__(5); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } /** @@ -1245,22 +1239,30 @@ var Drm = * @constructor * @param {string} licenseUrl - the license URL * @param {Scheme} scheme - the drm scheme + * @param {?string} certificate - the drm certificate */ - /** - * @member - license URL - * @type {string} + * @member - drm scheme + * @type {Scheme} */ -function Drm(licenseUrl, scheme) { +function Drm(licenseUrl, scheme, certificate) { _classCallCheck(this, Drm); this.licenseUrl = licenseUrl; this.scheme = scheme; + this.certificate = certificate; } + /** - * @member - drm scheme - * @type {Scheme} + * @member - The drm certificate + * @type {?string} + */ + + +/** + * @member - license URL + * @type {string} */ ; @@ -2413,7 +2415,7 @@ var ProviderParser = function () { playUrl = kalturaSource.url; } - if (playUrl == "") { + if (playUrl === "") { logger.error('failed to create play url from source, discarding source: (' + entryId + '_' + kalturaSource.deliveryProfileId + '), ' + kalturaSource.format + '.'); return mediaSource; } @@ -2423,7 +2425,7 @@ var ProviderParser = function () { if (kalturaSource.hasDrmData()) { var drmParams = []; kalturaSource.drm.forEach(function (drm) { - drmParams.push(new _drm2.default(drm.licenseURL, drm.scheme)); + drmParams.push(new _drm2.default(drm.licenseURL, _enums.DrmScheme[drm.scheme], drm.certificate)); }); mediaSource.drmData = drmParams; } @@ -3034,8 +3036,6 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var _enums = __webpack_require__(5); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } /** @@ -3049,20 +3049,27 @@ var KalturaDrmPlaybackPluginData = * @param {Object} drm The json response */ + /** - * @member - The drm scheme - * @type {Scheme} + * @member - The license URL + * @type {string} */ function KalturaDrmPlaybackPluginData(drm) { _classCallCheck(this, KalturaDrmPlaybackPluginData); this.scheme = drm.scheme; this.licenseURL = drm.licenseURL; + this.certificate = drm.certificate; } /** - * @member - The license URL - * @type {string} + * @member - The drm certificate + * @type {?string} + */ + +/** + * @member - The drm scheme + * @type {Scheme} */ ; diff --git a/dist/ovpProvider.js.map b/dist/ovpProvider.js.map index 6fd9578a..14497faf 100644 --- a/dist/ovpProvider.js.map +++ b/dist/ovpProvider.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///providers/webpack/universalModuleDefinition","webpack:///providers/webpack/bootstrap 9c09f528703a4d882ed8","webpack:///providers/./k-provider/request-builder.js","webpack:///providers/./k-provider/ovp/config.js","webpack:///providers/./k-provider/ovp/services/ovp-service.js","webpack:///providers/./k-provider/base-service-result.js","webpack:///providers/./util/logger.js","webpack:///providers/./k-provider/enums.js","webpack:///providers/./k-provider/multi-request-builder.js","webpack:///providers/./entities/media-sources.js","webpack:///providers/../~/js-logger/src/logger.js","webpack:///providers/./entities/media-entry.js","webpack:///providers/./entities/drm.js","webpack:///providers/./entities/media-source.js","webpack:///providers/./k-provider/ovp/response-types/kaltura-flavor-asset.js","webpack:///providers/./k-provider/ovp/response-types/kaltura-metadata-list-response.js","webpack:///providers/./k-provider/ovp/response-types/kaltura-playback-source.js","webpack:///providers/./k-provider/ovp/loaders/data-loader-manager.js","webpack:///providers/./k-provider/ovp/loaders/media-entry-loader.js","webpack:///providers/./k-provider/ovp/loaders/session-loader.js","webpack:///providers/./k-provider/ovp/loaders/ui-config-loader.js","webpack:///providers/./k-provider/ovp/provider-parser.js","webpack:///providers/./entities/media-format.js","webpack:///providers/./k-provider/ovp/ovp-provider.js","webpack:///providers/./k-provider/ovp/play-source-url-builder.js","webpack:///providers/./k-provider/ovp/response-types/kaltura-access-control-message.js","webpack:///providers/./k-provider/ovp/response-types/kaltura-base-entry-list-response.js","webpack:///providers/./k-provider/ovp/response-types/kaltura-drm-playback-plugin-data.js","webpack:///providers/./k-provider/ovp/response-types/kaltura-media-entry.js","webpack:///providers/./k-provider/ovp/response-types/kaltura-metadata.js","webpack:///providers/./k-provider/ovp/response-types/kaltura-playback-context.js","webpack:///providers/./k-provider/ovp/response-types/kaltura-rule-action.js","webpack:///providers/./k-provider/ovp/response-types/kaltura-ui-conf-response.js","webpack:///providers/./k-provider/ovp/services/base-entry-service.js","webpack:///providers/./k-provider/ovp/services/meta-data-service.js","webpack:///providers/./k-provider/ovp/services/session-service.js","webpack:///providers/./k-provider/ovp/services/ui-conf-service.js","webpack:///providers/./k-provider/xml-parser.js"],"names":["RequestBuilder","headers","Map","set","baseUrl","Error","url","service","action","request","XMLHttpRequest","Promise","resolve","reject","onreadystatechange","readyState","status","jsonResponse","JSON","parse","responseText","code","message","open","method","getUrl","forEach","value","key","setRequestHeader","send","params","defaultConfig","beUrl","serviceParams","clientTag","apiVersion","format","Configuration","clientConfig","Object","assign","config","get","SERVICE_NAME","OvpService","ks","partnerId","ovpParams","multiReq","ServiceResult","response","hasError","objectType","error","ServiceError","data","JsLogger","LoggerFactory","options","useDefaults","name","Logger","defaultLevel","DEBUG","LOG_LEVEL","INFO","TIME","WARN","ERROR","OFF","Scheme","PLAYREADY_CENC","WIDEVINE_CENC","FAIRPLAY","PLAYREADY","WIDEVINE","KalturaRuleActionTypes","DRM_POLICY","BLOCK","PREVIEW","LIMIT_FLAVORS","ADD_TO_STORAGE","LIMIT_DELIVERY_PROFILES","SERVE_FROM_REMOTE_SERVER","REQUEST_HOST_REGEX","LIMIT_THUMBNAIL_CAPTURE","Status","QUEUED","CONVERTING","READY","DELETED","NOT_APPLICABLE","TEMP","WAIT_FOR_CONVERT","IMPORTING","VALIDATING","EXPORTING","MetadataObjectTypes","AD_CUE_POINT","ANNOTATION","CODE_CUE_POINT","THUMB_CUE_POINT","ENTRY","CATEGORY","USER","PARTNER","DYNAMIC_OBJECT","MetadataStatuses","VALID","INVALID","EntryStatuses","ERROR_IMPORTING","ERROR_CONVERTING","SCAN_FAILURE","IMPORT","INFECTED","PRECONVERT","PENDING","MODERATE","BLOCKED","NO_CONTENT","EntryModerationStatuses","PENDING_MODERATION","APPROVED","REJECTED","FLAGGED_FOR_REVIEW","AUTO_APPROVED","EntryTypes","AUTOMATIC","EXTERNAL_MEDIA","MEDIA_CLIP","MIX","PLAYLIST","DATA","LIVE_STREAM","LIVE_CHANNEL","DOCUMENT","MediaTypes","VIDEO","IMAGE","AUDIO","LIVE_STREAM_FLASH","LIVE_STREAM_WINDOWS_MEDIA","LIVE_STREAM_REAL_MEDIA","LIVE_STREAM_QUICKTIME","MediaEntryTypes","Vod","Live","Image","Audio","Unknown","UIConfTypes","PLAYER","CONTRIBUTION_WIZARD","SIMPLE_EDITOR","ADVANCED_EDITOR","APP_STUDIO","KRECORD","PLAYER_V3","KMC_ACCOUNT","KMC_ANALYTICS","KMC_CONTENT","KMC_DASHBOARD","KMC_LOGIN","PLAYER_SL","CLIENTSIDE_ENCODER","KMC_GENERAL","KMC_ROLES_AND_PERMISSIONS","CLIPPER","KSR","KUPLOAD","WEBCASTING","UIConfCreationModes","WIZARD","ADVANCED","logger","MultiRequestBuilder","requests","push","requestParams","serviceDef","length","stringify","err","doHttpRequest","then","MultiRequestResult","errorText","results","success","result","serviceResult","MediaSources","progressive","dash","hls","source","mediaFormat","MediaEntry","metaData","type","Drm","licenseUrl","scheme","MediaSource","KalturaFlavorAsset","id","flavorParamsId","fileExt","bitrate","width","height","frameRate","isOriginal","isWeb","containerFormat","videoCodecId","language","label","KalturaMetadataListResponse","responseObj","totalCount","metas","objects","map","meta","KalturaPlaybackSource","drm","deliveryProfileId","protocols","flavorIds","protocol","returnValue","protocolsArr","split","p","DataLoaderManager","partnerID","_loaders","_multiRequest","getMultirequest","loader","execution_loader","isValid","startIndex","add","executionLoaderResponseMap","Array","from","val","index","_loadersResponseMap","execute","_multiResponse","preparedData","prepareData","loaderDataIndexes","slice","MediaEntryLoader","_response","buildRequests","_entryId","entryId","list","getPlaybackContext","_requests","mediaEntryResponse","entry","entries","playBackContextResult","metadataListResult","SessionLoader","_partnerId","anonymousSession","UiConfigLoader","_uiConfId","uiConfId","uiConf","plugins","SUPPORTED_FORMATS","mp4","ProviderParser","mediaEntry","playbackContext","metadataList","kalturaSources","sources","_getParsedSources","metadata","_parseMetaData","duration","description","poster","entryType","addAdaptiveSource","parsedSource","_parseAdaptiveSource","flavorAssets","sourceFormat","parseAdaptiveSources","filter","_isProgressiveSource","parseProgressiveSources","progressiveSource","find","_parseProgressiveSources","kalturaSource","mediaSource","playUrl","hasFlavorIds","extension","pathExt","mimetype","mimeType","build","getProtocol","_getBaseProtocol","hasDrmData","drmParams","licenseURL","drmData","sourceId","flavor","bandwidth","metaXml","domParser","DOMParser","xml","replace","parseFromString","metasObj","xmlToJson","metaKeys","keys","splittedUrl","baseProtocol","substring","MediaFormats","wvm","mp3","OvpProvider","_isAnonymous","_dataLoader","validateParams","fetchData","parseDataFromResponse","debug","session","uiConfID","has","sessionLoader","uiConfLoader","pluginsJson","mediaLoader","getMediaEntry","PlaySourceUrlBuilder","urlParams","endsWith","KalturaAccessControlMessage","KalturaBaseEntryListResponse","KalturaDrmPlaybackPluginData","KalturaMediaEntry","dataUrl","mediaType","flavorParamsIds","thumbnailUrl","KalturaMetadata","metadataProfileId","metadataProfileVersion","metadataObjectType","objectId","version","created","Date","setUTCSeconds","createdAt","updated","updatedAt","KalturaPlaybackContext","actions","messages","KalturaRuleAction","KalturaUiConfResponse","objTypeAsString","htmlParams","swfUrl","confFilePath","confFile","confFileFeatures","confVars","useCdn","tags","swfUrlVersion","html5Url","partnerTags","objType","creationMode","BaseEntryService","tag","contextDataParams","flavorTags","getEntryListReqParams","filterParams","redirectFromEntryId","responseProfileParams","fields","responseProfile","MetaDataService","objectIdEqual","metadataObjectTypeEqual","SessionService","widgetId","UiConfService","XmlParser","obj","nodeType","attributes","j","attribute","item","nodeName","nodeValue","hasChildNodes","i","childNodes","old"],"mappings":"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,IAAV,CAAekB,MAAf;AACA;AACF,eAAK,KAAL;AACE,iBAAKD,GAAL,CAASjB,IAAT,CAAckB,MAAd;AACA;AACF;AACE;AAXJ;AAaD;AACF;;;;;;kBAnDkBJ,Y;;;;;;ACPrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe;;AAEf;AACA;;AAEA;AACA;;AAEA,8CAA8C;AAC9C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C;AAC5C;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oDAAoD;AACpD;AACA;AACA;AACA;AACA,uBAAuB;AACvB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,+BAA+B,eAAe;AAC9C;AACA;AACA;;AAEA;AACA,0CAA0C,0BAA0B;;AAEpE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mEAAmE,aAAa;AAChF;;AAEA;AACA,sDAAsD;AACtD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA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","file":"ovpProvider.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"PlaykitJsProviders\"] = factory();\n\telse\n\t\troot[\"PlaykitJsProviders\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 22);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 9c09f528703a4d882ed8","//@flow\n\n/**\n * Request builder\n * @classdesc\n */\nexport default class RequestBuilder {\n\n /**\n * @member - Service name\n * @type {string}\n */\n service: string;\n /**\n * @member - Service action\n * @type {string}\n */\n action: string;\n /**\n * @member - Service params\n * @type {any}\n */\n params: any;\n /**\n * @member - Service headers\n * @type {Map}\n */\n headers: Map;\n /**\n * @member - Service base url\n * @type {Map}\n */\n baseUrl: string;\n /**\n * @member - Service method (POST,GET,DELETE etc..)\n * @type {string}\n */\n method: string;\n /**\n * @member - Service tag\n * @type {string}\n */\n tag: string;\n\n /**\n * @constructor\n * @param {Map} headers The request headers\n */\n constructor(headers: Map = new Map()) {\n this.headers = headers;\n this.headers.set(\"Content-Type\", \"application/json\");\n }\n\n /**\n * Builds restful service URL\n * @function getUrl\n * @returns {string} The service URL\n */\n getUrl(): string {\n if (!this.baseUrl) {\n throw new Error(\"baseUrl is mandatory for request builder\");\n }\n let url = this.baseUrl + '/service/' + this.service + (this.action ? '/action/' + this.action : '');\n return url;\n }\n\n /**\n * Executes service\n * @function doHttpRequest\n * @returns {Promise.} Service response as promise\n */\n doHttpRequest(): Promise {\n let request = new XMLHttpRequest();\n return new Promise((resolve, reject) => {\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n if (request.status === 200) {\n let jsonResponse = JSON.parse(request.responseText);\n if (jsonResponse && typeof(jsonResponse) === 'object' && jsonResponse.code && jsonResponse.message)\n reject(jsonResponse);\n else\n resolve(jsonResponse);\n } else {\n reject(request.responseText);\n }\n }\n };\n request.open(this.method, this.getUrl());\n this.headers.forEach((value, key) => {\n request.setRequestHeader(key, value);\n });\n request.send(this.params);\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/request-builder.js","//@flow\n\nconst defaultConfig: Object = {\n beUrl: \"http://www.kaltura.com/api_v3\",\n baseUrl: \"https://cdnapisec.kaltura.com\",\n serviceParams: {\n clientTag: \"playkit-js\",\n apiVersion: '3.3.0',\n format: 1\n }\n};\n\nexport default class Configuration {\n\n static set(clientConfig?: Object) {\n if (clientConfig) {\n Object.assign(defaultConfig, clientConfig);\n }\n }\n\n static get(): Object {\n return defaultConfig;\n }\n}\n\nexport {Configuration};\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/config.js","//@flow\nimport MultiRequestBuilder from '../../multi-request-builder'\nimport Configuration from '../config'\n\nconst config = Configuration.get();\nconst SERVICE_NAME: string = \"multirequest\";\n\n/**\n * Base for all ovp services\n * @classdesc\n */\nexport default class OvpService {\n /**\n * Gets a new instance of MultiRequestBuilder with ovp params\n * @function getMultirequest\n * @param {string} ks The ks\n * @param {string} partnerId The partner ID\n * @returns {MultiRequestBuilder} The multi request builder\n * @static\n */\n static getMultirequest(ks: string, partnerId?: number): MultiRequestBuilder {\n let ovpParams = config.serviceParams;\n Object.assign(ovpParams, {ks: ks});\n if (partnerId) {\n Object.assign(ovpParams, {partnerId: partnerId});\n }\n let multiReq = new MultiRequestBuilder();\n multiReq.method = \"POST\";\n multiReq.service = SERVICE_NAME;\n multiReq.baseUrl = config.beUrl;\n multiReq.params = ovpParams;\n return multiReq;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/ovp-service.js","//@flow\n\n/**\n * Base service result\n * @classdesc\n */\nexport default class ServiceResult {\n\n /**\n * @member - Is service returned an error\n * @type {boolean}\n */\n hasError: boolean = false;\n /**\n * @member - The service error\n * @type {ServiceError}\n */\n error: ServiceError;\n /**\n * @member - The service result data\n * @type {Object}\n */\n data: Object;\n\n /**\n * @constructor\n * @param {Object} response - Service response\n */\n constructor(response: Object) {\n if (response.objectType === \"KalturaAPIException\") {\n this.hasError = true;\n this.error = new ServiceError(response.code, response.message);\n }\n else {\n this.data = response;\n }\n }\n}\n\n/**\n * Service error\n * @classdesc\n */\nclass ServiceError {\n /**\n * @member - The error code\n * @type {string}\n */\n code: string;\n /**\n * @member - The error message\n * @type {string}\n */\n message: string;\n\n /**\n * @constructor\n * @param {string} code - The result code\n * @param {string} message - The result message\n */\n constructor(code: string, message: string) {\n this.code = code;\n this.message = message;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/base-service-result.js","//@flow\nimport * as JsLogger from 'js-logger';\n\nclass LoggerFactory {\n constructor(options?: Object) {\n JsLogger.useDefaults(options || {});\n }\n\n get(name?: string) {\n if (!name) {\n return JsLogger;\n }\n return JsLogger.get(name);\n }\n}\n\nlet Logger = new LoggerFactory({defaultLevel: JsLogger.DEBUG});\nconst LOG_LEVEL: { [level: string]: Object } = {\n \"DEBUG\": JsLogger.DEBUG,\n \"INFO\": JsLogger.INFO,\n \"TIME\": JsLogger.TIME,\n \"WARN\": JsLogger.WARN,\n \"ERROR\": JsLogger.ERROR,\n \"OFF\": JsLogger.OFF\n};\n\nexport default Logger;\nexport {LOG_LEVEL};\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./util/logger.js","//@flow\nexport class Scheme {\n static PLAYREADY_CENC: string = \"drm.PLAYREADY_CENC\";\n static WIDEVINE_CENC: string = \"drm.WIDEVINE_CENC\";\n static FAIRPLAY: string = \"fairplay.FAIRPLAY\";\n static PLAYREADY: string = \"playReady.PLAYREADY\";\n static WIDEVINE: string = \"widevine.WIDEVINE\";\n}\n\nexport class KalturaRuleActionTypes {\n static DRM_POLICY: KalturaRuleActionType = \"drm.DRM_POLICY\";\n static BLOCK: KalturaRuleActionType = 1;\n static PREVIEW: KalturaRuleActionType = 2;\n static LIMIT_FLAVORS: KalturaRuleActionType = 3;\n static ADD_TO_STORAGE: KalturaRuleActionType = 4;\n static LIMIT_DELIVERY_PROFILES: KalturaRuleActionType = 5;\n static SERVE_FROM_REMOTE_SERVER: KalturaRuleActionType = 6;\n static REQUEST_HOST_REGEX: KalturaRuleActionType = 7;\n static LIMIT_THUMBNAIL_CAPTURE: KalturaRuleActionType = 8;\n}\n\nexport class Status {\n static ERROR: number = -1;\n static QUEUED: number = 0;\n static CONVERTING: number = 1;\n static READY: number = 2;\n static DELETED: number = 3;\n static NOT_APPLICABLE: number = 4;\n static TEMP: number = 5;\n static WAIT_FOR_CONVERT: number = 6;\n static IMPORTING: number = 7;\n static VALIDATING: number = 8;\n static EXPORTING: number = 9;\n}\n\nexport class MetadataObjectTypes {\n static AD_CUE_POINT: MetadataObjectType = \"adCuePointMetadata.AdCuePoint\";\n static ANNOTATION: MetadataObjectType = \"annotationMetadata.Annotation\";\n static CODE_CUE_POINT: MetadataObjectType = \"codeCuePointMetadata.CodeCuePoint\";\n static THUMB_CUE_POINT: MetadataObjectType = \"thumbCuePointMetadata.thumbCuePoint\";\n static ENTRY: MetadataObjectType = 1;\n static CATEGORY: MetadataObjectType = 2;\n static USER: MetadataObjectType = 3;\n static PARTNER: MetadataObjectType = 4;\n static DYNAMIC_OBJECT: MetadataObjectType = 5;\n}\n\nexport class MetadataStatuses {\n static VALID: MetadataStatus = 1;\n static INVALID: MetadataStatus = 2;\n static DELETED: MetadataStatus = 3;\n}\n\nexport class EntryStatuses {\n static ERROR_IMPORTING: EntryStatus = -2;\n static ERROR_CONVERTING: EntryStatus = -1;\n static SCAN_FAILURE: EntryStatus = \"virusScan.ScanFailure\";\n static IMPORT: EntryStatus = 0;\n static INFECTED: EntryStatus = \"virusScan.Infected\";\n static PRECONVERT: EntryStatus = 1;\n static READY: EntryStatus = 2;\n static DELETED: EntryStatus = 3;\n static PENDING: EntryStatus = 4;\n static MODERATE: EntryStatus = 5;\n static BLOCKED: EntryStatus = 6;\n static NO_CONTENT: EntryStatus = 7\n}\n\nexport class EntryModerationStatuses {\n static PENDING_MODERATION: EntryModerationStatus = 1;\n static APPROVED: EntryModerationStatus = 2;\n static REJECTED: EntryModerationStatus = 3;\n static FLAGGED_FOR_REVIEW: EntryModerationStatus = 4;\n static MODERATE: EntryModerationStatus = 5;\n static AUTO_APPROVED: EntryModerationStatus = 6\n}\n\nexport class EntryTypes {\n static AUTOMATIC: EntryType = {value: -1};\n static EXTERNAL_MEDIA: EntryType = {value: \"externalMedia.externalMedia\"};\n static MEDIA_CLIP: EntryType = {value: 1};\n static MIX: EntryType = {value: 2};\n static PLAYLIST: EntryType = {value: 5};\n static DATA: EntryType = {value: 6};\n static LIVE_STREAM: EntryType = {value: 7};\n static LIVE_CHANNEL: EntryType = {value: 8};\n static DOCUMENT: EntryType = {value: 10};\n}\n\nexport class MediaTypes {\n static VIDEO: MediaType = {value: 1};\n static IMAGE: MediaType = {value: 2};\n static AUDIO: MediaType = {value: 5};\n static LIVE_STREAM_FLASH: MediaType = {value: 201};\n static LIVE_STREAM_WINDOWS_MEDIA: MediaType = {value: 202};\n static LIVE_STREAM_REAL_MEDIA: MediaType = {value: 203};\n static LIVE_STREAM_QUICKTIME: MediaType = {value: 204};\n}\n\nexport class MediaEntryTypes {\n static Vod: MediaEntryType = 'Vod';\n static Live: MediaEntryType = 'Live';\n static Image: MediaEntryType = 'Image';\n static Audio: MediaEntryType = 'Audio';\n static Unknown: MediaEntryType = 'Unknown';\n}\n\nexport class UIConfTypes {\n static PLAYER: UIConfType = 1;\n static CONTRIBUTION_WIZARD: UIConfType = 2;\n static SIMPLE_EDITOR: UIConfType = 3;\n static ADVANCED_EDITOR: UIConfType = 4;\n static PLAYLIST: UIConfType = 5;\n static APP_STUDIO: UIConfType = 6;\n static KRECORD: UIConfType = 7;\n static PLAYER_V3: UIConfType = 8;\n static KMC_ACCOUNT: UIConfType = 9;\n static KMC_ANALYTICS: UIConfType = 10;\n static KMC_CONTENT: UIConfType = 11;\n static KMC_DASHBOARD: UIConfType = 12;\n static KMC_LOGIN: UIConfType = 13;\n static PLAYER_SL: UIConfType = 14;\n static CLIENTSIDE_ENCODER: UIConfType = 15;\n static KMC_GENERAL: UIConfType = 16;\n static KMC_ROLES_AND_PERMISSIONS: UIConfType = 17;\n static CLIPPER: UIConfType = 18;\n static KSR: UIConfType = 19;\n static KUPLOAD: UIConfType = 20;\n static WEBCASTING: UIConfType = 21\n}\n\nexport class UIConfCreationModes {\n static WIZARD: UIConfCreationMode = 2;\n static ADVANCED: UIConfCreationMode = 3\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/enums.js","//@flow\nimport RequestBuilder from './request-builder'\nimport ServiceResult from './base-service-result'\nimport Logger from \"../util/logger\";\n/**\n * @constant\n */\nconst logger = Logger.get(\"OvpProvider\");\n\n/**\n * Multi Request builder\n * @classdesc\n */\nexport default class MultiRequestBuilder extends RequestBuilder {\n\n /**\n * @member - Array of requests\n * @type {Array}\n */\n requests: Array = [];\n\n /**\n * @constructor\n */\n constructor() {\n super();\n }\n\n /**\n * Adds request to requests array\n * @function add\n * @param {RequestBuilder} request The request\n * @returns {MultiRequestBuilder} The multiRequest\n */\n add(request: RequestBuilder): MultiRequestBuilder {\n this.requests.push(request);\n let requestParams = {};\n let serviceDef: Object = {service: request.service, action: request.action};\n Object.assign(requestParams, {[this.requests.length]: Object.assign(serviceDef, request.params)});\n Object.assign(requestParams, this.params);\n this.params = requestParams;\n return this;\n }\n\n /**\n * Executes a multi request\n * @function execute\n * @returns {Promise} The multirequest execution promisie\n */\n execute(): Promise {\n try {\n this.params = JSON.stringify(this.params);\n }\n catch (err) {\n logger.error(`${err.message}`);\n }\n return new Promise((resolve, reject) => {\n this.doHttpRequest().then(data => {\n resolve(new MultiRequestResult(data));\n },\n err => {\n let errorText: string = `Error on multiRequest execution, error <${err}>.`;\n reject(errorText);\n\n });\n });\n }\n\n}\n\n/**\n * Multi Request result object\n * @classdesc\n */\nexport class MultiRequestResult {\n\n /**\n * @member - Is success\n * @type {boolean}\n */\n success: boolean;\n /**\n * @member - Multi request response data\n * @type {Object}\n */\n results: Array = [];\n\n /**\n * @constructor\n * @param {Object} response data\n */\n constructor(response: Object) {\n this.success = true;\n response.forEach((result) => {\n let serviceResult: ServiceResult = new ServiceResult(result);\n this.results.push(serviceResult);\n if (serviceResult.hasError) {\n logger.error(`Service returned an error with error code: ${serviceResult.error.code} and message: ${serviceResult.error.message}.`);\n this.success = false;\n return;\n }\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/multi-request-builder.js","// @flow\nimport MediaSource from './media-source'\n\n/**\n * Container for the media sources aggregated by stream format.\n * @classdesc\n */\nexport default class MediaSources {\n /**\n * Progressive download media sources container.\n * @type {Array}\n * @public\n */\n progressive: Array;\n /**\n * Dash media sources container.\n * @type {Array}\n * @public\n */\n dash: Array;\n /**\n * Hls media sources container.\n * @type {Array}\n * @public\n */\n hls: Array;\n\n /**\n * @constructor\n */\n constructor() {\n this.progressive = [];\n this.dash = [];\n this.hls = [];\n }\n\n /**\n * Maps the source to one of the containers according to his media format.\n * @param {MediaSource} source - The source to add to one of the containers.\n * @param {MediaFormat} mediaFormat - The media format of the source.\n * @returns {void}\n */\n map(source: MediaSource, mediaFormat: ?MediaFormat) {\n if (mediaFormat) {\n switch (mediaFormat.name) {\n case 'mp4':\n this.progressive.push(source);\n break;\n case 'dash':\n this.dash.push(source);\n break;\n case 'hls':\n this.hls.push(source);\n break;\n default:\n break;\n }\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./entities/media-sources.js","/*!\r\n * js-logger - http://github.com/jonnyreeves/js-logger\r\n * Jonny Reeves, http://jonnyreeves.co.uk/\r\n * js-logger may be freely distributed under the MIT license.\r\n */\r\n(function (global) {\r\n\t\"use strict\";\r\n\r\n\t// Top level module for the global, static logger instance.\r\n\tvar Logger = { };\r\n\r\n\t// For those that are at home that are keeping score.\r\n\tLogger.VERSION = \"1.3.0\";\r\n\r\n\t// Function which handles all incoming log messages.\r\n\tvar logHandler;\r\n\r\n\t// Map of ContextualLogger instances by name; used by Logger.get() to return the same named instance.\r\n\tvar contextualLoggersByNameMap = {};\r\n\r\n\t// Polyfill for ES5's Function.bind.\r\n\tvar bind = function(scope, func) {\r\n\t\treturn function() {\r\n\t\t\treturn func.apply(scope, arguments);\r\n\t\t};\r\n\t};\r\n\r\n\t// Super exciting object merger-matron 9000 adding another 100 bytes to your download.\r\n\tvar merge = function () {\r\n\t\tvar args = arguments, target = args[0], key, i;\r\n\t\tfor (i = 1; i < args.length; i++) {\r\n\t\t\tfor (key in args[i]) {\r\n\t\t\t\tif (!(key in target) && args[i].hasOwnProperty(key)) {\r\n\t\t\t\t\ttarget[key] = args[i][key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn target;\r\n\t};\r\n\r\n\t// Helper to define a logging level object; helps with optimisation.\r\n\tvar defineLogLevel = function(value, name) {\r\n\t\treturn { value: value, name: name };\r\n\t};\r\n\r\n\t// Predefined logging levels.\r\n\tLogger.DEBUG = defineLogLevel(1, 'DEBUG');\r\n\tLogger.INFO = defineLogLevel(2, 'INFO');\r\n\tLogger.TIME = defineLogLevel(3, 'TIME');\r\n\tLogger.WARN = defineLogLevel(4, 'WARN');\r\n\tLogger.ERROR = defineLogLevel(8, 'ERROR');\r\n\tLogger.OFF = defineLogLevel(99, 'OFF');\r\n\r\n\t// Inner class which performs the bulk of the work; ContextualLogger instances can be configured independently\r\n\t// of each other.\r\n\tvar ContextualLogger = function(defaultContext) {\r\n\t\tthis.context = defaultContext;\r\n\t\tthis.setLevel(defaultContext.filterLevel);\r\n\t\tthis.log = this.info; // Convenience alias.\r\n\t};\r\n\r\n\tContextualLogger.prototype = {\r\n\t\t// Changes the current logging level for the logging instance.\r\n\t\tsetLevel: function (newLevel) {\r\n\t\t\t// Ensure the supplied Level object looks valid.\r\n\t\t\tif (newLevel && \"value\" in newLevel) {\r\n\t\t\t\tthis.context.filterLevel = newLevel;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Is the logger configured to output messages at the supplied level?\r\n\t\tenabledFor: function (lvl) {\r\n\t\t\tvar filterLevel = this.context.filterLevel;\r\n\t\t\treturn lvl.value >= filterLevel.value;\r\n\t\t},\r\n\r\n\t\tdebug: function () {\r\n\t\t\tthis.invoke(Logger.DEBUG, arguments);\r\n\t\t},\r\n\r\n\t\tinfo: function () {\r\n\t\t\tthis.invoke(Logger.INFO, arguments);\r\n\t\t},\r\n\r\n\t\twarn: function () {\r\n\t\t\tthis.invoke(Logger.WARN, arguments);\r\n\t\t},\r\n\r\n\t\terror: function () {\r\n\t\t\tthis.invoke(Logger.ERROR, arguments);\r\n\t\t},\r\n\r\n\t\ttime: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'start' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttimeEnd: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'end' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Invokes the logger callback if it's not being filtered.\r\n\t\tinvoke: function (level, msgArgs) {\r\n\t\t\tif (logHandler && this.enabledFor(level)) {\r\n\t\t\t\tlogHandler(msgArgs, merge({ level: level }, this.context));\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Protected instance which all calls to the to level `Logger` module will be routed through.\r\n\tvar globalLogger = new ContextualLogger({ filterLevel: Logger.OFF });\r\n\r\n\t// Configure the global Logger instance.\r\n\t(function() {\r\n\t\t// Shortcut for optimisers.\r\n\t\tvar L = Logger;\r\n\r\n\t\tL.enabledFor = bind(globalLogger, globalLogger.enabledFor);\r\n\t\tL.debug = bind(globalLogger, globalLogger.debug);\r\n\t\tL.time = bind(globalLogger, globalLogger.time);\r\n\t\tL.timeEnd = bind(globalLogger, globalLogger.timeEnd);\r\n\t\tL.info = bind(globalLogger, globalLogger.info);\r\n\t\tL.warn = bind(globalLogger, globalLogger.warn);\r\n\t\tL.error = bind(globalLogger, globalLogger.error);\r\n\r\n\t\t// Don't forget the convenience alias!\r\n\t\tL.log = L.info;\r\n\t}());\r\n\r\n\t// Set the global logging handler. The supplied function should expect two arguments, the first being an arguments\r\n\t// object with the supplied log messages and the second being a context object which contains a hash of stateful\r\n\t// parameters which the logging function can consume.\r\n\tLogger.setHandler = function (func) {\r\n\t\tlogHandler = func;\r\n\t};\r\n\r\n\t// Sets the global logging filter level which applies to *all* previously registered, and future Logger instances.\r\n\t// (note that named loggers (retrieved via `Logger.get`) can be configured independently if required).\r\n\tLogger.setLevel = function(level) {\r\n\t\t// Set the globalLogger's level.\r\n\t\tglobalLogger.setLevel(level);\r\n\r\n\t\t// Apply this level to all registered contextual loggers.\r\n\t\tfor (var key in contextualLoggersByNameMap) {\r\n\t\t\tif (contextualLoggersByNameMap.hasOwnProperty(key)) {\r\n\t\t\t\tcontextualLoggersByNameMap[key].setLevel(level);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Retrieve a ContextualLogger instance. Note that named loggers automatically inherit the global logger's level,\r\n\t// default context and log handler.\r\n\tLogger.get = function (name) {\r\n\t\t// All logger instances are cached so they can be configured ahead of use.\r\n\t\treturn contextualLoggersByNameMap[name] ||\r\n\t\t\t(contextualLoggersByNameMap[name] = new ContextualLogger(merge({ name: name }, globalLogger.context)));\r\n\t};\r\n\r\n\t// CreateDefaultHandler returns a handler function which can be passed to `Logger.setHandler()` which will\r\n\t// write to the window's console object (if present); the optional options object can be used to customise the\r\n\t// formatter used to format each log message.\r\n\tLogger.createDefaultHandler = function (options) {\r\n\t\toptions = options || {};\r\n\r\n\t\toptions.formatter = options.formatter || function defaultMessageFormatter(messages, context) {\r\n\t\t\t// Prepend the logger's name to the log message for easy identification.\r\n\t\t\tif (context.name) {\r\n\t\t\t\tmessages.unshift(\"[\" + context.name + \"]\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Map of timestamps by timer labels used to track `#time` and `#timeEnd()` invocations in environments\r\n\t\t// that don't offer a native console method.\r\n\t\tvar timerStartTimeByLabelMap = {};\r\n\r\n\t\t// Support for IE8+ (and other, slightly more sane environments)\r\n\t\tvar invokeConsoleMethod = function (hdlr, messages) {\r\n\t\t\tFunction.prototype.apply.call(hdlr, console, messages);\r\n\t\t};\r\n\r\n\t\t// Check for the presence of a logger.\r\n\t\tif (typeof console === \"undefined\") {\r\n\t\t\treturn function () { /* no console */ };\r\n\t\t}\r\n\r\n\t\treturn function(messages, context) {\r\n\t\t\t// Convert arguments object to Array.\r\n\t\t\tmessages = Array.prototype.slice.call(messages);\r\n\r\n\t\t\tvar hdlr = console.log;\r\n\t\t\tvar timerLabel;\r\n\r\n\t\t\tif (context.level === Logger.TIME) {\r\n\t\t\t\ttimerLabel = (context.name ? '[' + context.name + '] ' : '') + messages[0];\r\n\r\n\t\t\t\tif (messages[1] === 'start') {\r\n\t\t\t\t\tif (console.time) {\r\n\t\t\t\t\t\tconsole.time(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttimerStartTimeByLabelMap[timerLabel] = new Date().getTime();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (console.timeEnd) {\r\n\t\t\t\t\t\tconsole.timeEnd(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tinvokeConsoleMethod(hdlr, [ timerLabel + ': ' +\r\n\t\t\t\t\t\t\t(new Date().getTime() - timerStartTimeByLabelMap[timerLabel]) + 'ms' ]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// Delegate through to custom warn/error loggers if present on the console.\r\n\t\t\t\tif (context.level === Logger.WARN && console.warn) {\r\n\t\t\t\t\thdlr = console.warn;\r\n\t\t\t\t} else if (context.level === Logger.ERROR && console.error) {\r\n\t\t\t\t\thdlr = console.error;\r\n\t\t\t\t} else if (context.level === Logger.INFO && console.info) {\r\n\t\t\t\t\thdlr = console.info;\r\n\t\t\t\t}\r\n\r\n\t\t\t\toptions.formatter(messages, context);\r\n\t\t\t\tinvokeConsoleMethod(hdlr, messages);\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\r\n\t// Configure and example a Default implementation which writes to the `window.console` (if present). The\r\n\t// `options` hash can be used to configure the default logLevel and provide a custom message formatter.\r\n\tLogger.useDefaults = function(options) {\r\n\t\tLogger.setLevel(options && options.defaultLevel || Logger.DEBUG);\r\n\t\tLogger.setHandler(Logger.createDefaultHandler(options));\r\n\t};\r\n\r\n\t// Export to popular environments boilerplate.\r\n\tif (typeof define === 'function' && define.amd) {\r\n\t\tdefine(Logger);\r\n\t}\r\n\telse if (typeof module !== 'undefined' && module.exports) {\r\n\t\tmodule.exports = Logger;\r\n\t}\r\n\telse {\r\n\t\tLogger._prevLogger = global.Logger;\r\n\r\n\t\tLogger.noConflict = function () {\r\n\t\t\tglobal.Logger = Logger._prevLogger;\r\n\t\t\treturn Logger;\r\n\t\t};\r\n\r\n\t\tglobal.Logger = Logger;\r\n\t}\r\n}(this));\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/js-logger/src/logger.js\n// module id = 8\n// module chunks = 0 1","//@flow\nimport {MediaEntryTypes} from '../k-provider/enums'\nimport MediaSources from './media-sources'\n\n/**\n * Media entry\n * @classdesc\n */\nexport default class MediaEntry {\n\n /**\n * @member - entry ID\n * @type {string}\n */\n id: string;\n /**\n * @member - entry name\n * @type {string}\n */\n name: string;\n /**\n * @member - entry sources\n * @type {MediaSources}\n */\n sources: MediaSources;\n /**\n * @member - entry duration\n * @type {number}\n */\n duration: number;\n /**\n * @member - entry type\n * @type {MediaEntryType}\n */\n type: MediaEntryType;\n /**\n * @member - entry metadata\n * @type {Object}\n */\n metaData: Object;\n\n /**\n * @constructor\n */\n constructor() {\n this.metaData = new Map();\n this.type = MediaEntryTypes.Unknown;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./entities/media-entry.js","//@flow\n\nimport {Scheme} from '../k-provider/enums';\n\n/**\n * Drm data\n * @classdesc\n */\nexport default class Drm {\n\n /**\n * @member - license URL\n * @type {string}\n */\n licenseUrl: string;\n /**\n * @member - drm scheme\n * @type {Scheme}\n */\n scheme: Scheme;\n\n /**\n * @constructor\n * @param {string} licenseUrl - the license URL\n * @param {Scheme} scheme - the drm scheme\n */\n constructor(licenseUrl: string, scheme: Scheme) {\n this.licenseUrl = licenseUrl;\n this.scheme = scheme;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./entities/drm.js","//@flow\nimport Drm from '../entities/drm'\n\n/**\n * Media source\n * @classdesc\n */\nexport default class MediaSource {\n /**\n * @member - media source ID\n * @type {string}\n */\n id: string;\n /**\n * @member - media source URL\n * @type {string}\n */\n url: string;\n /**\n * @member - media source mimetype\n * @type {string}\n */\n mimetype: string;\n /**\n * @member - media source drm data\n * @type {Array}\n */\n drmData: Array;\n /**\n * @member - media source bandwidth\n * @type {number}\n */\n bandwidth: number;\n /**\n * @member - media source width\n * @type {number}\n */\n width: number;\n /**\n * @member - media source height\n * @type {number}\n */\n height: number;\n /**\n * @member - media source label\n * @type {string}\n */\n label: string;\n\n /**\n * @constructor\n */\n constructor() {\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./entities/media-source.js","//@flow\nimport {Status} from '../../enums'\n\n/**\n * Ovp BE FlavorAsset\n * @classdesc\n */\nexport default class KalturaFlavorAsset {\n /**\n * @member - The ID of the Flavor Asset\n * @type {string}\n */\n id: string;\n /**\n * @member -The Flavor Params used to create this Flavor Asset\n * @type {string}\n */\n flavorParamsId: string;\n /**\n * @member -The file extension\n * @type {string}\n */\n fileExt: string;\n /**\n * @member - The overall bitrate (in KBits) of the Flavor Asset\n * @type {string}\n */\n bitrate: number;\n /**\n * @member - The width of the Flavor Asset\n * @type {number}\n */\n width: number;\n /**\n * @member - The height of the Flavor Asset\n * @type {number}\n */\n height: number;\n /**\n * @member - The frame rate (in FPS) of the Flavor Asset\n * @type {number}\n */\n frameRate: number;\n /**\n * @member - True if this Flavor Asset is the original source\n * @type {number}\n */\n isOriginal: boolean;\n /**\n * @member - True if this Flavor Asset is playable in KDP\n * @type {boolean}\n */\n isWeb: boolean;\n /**\n * @member - The container format\n * @type {boolean}\n */\n containerFormat: string;\n /**\n *@member - The video codec\n * @type {boolean}\n */\n videoCodecId: string;\n /**\n * @member - The status of the Flavor Asset\n * @type {string}\n */\n status: Status;\n /**\n * @member - The language of the flavor asset\n * @type {Status}\n */\n language: string;\n /**\n * @member - The label of the flavor asset\n * @type {string}\n */\n label: string;\n\n /**\n * @constructor\n * @param {Object} data The json response\n */\n constructor(data: any) {\n this.id = data.id;\n this.flavorParamsId = data.flavorParamsId;\n this.fileExt = data.fileExt;\n this.bitrate = data.bitrate;\n this.width = data.width;\n this.height = data.height;\n this.id = data.id;\n this.frameRate = data.frameRate;\n this.isOriginal = data.isOriginal;\n this.isWeb = data.isWeb;\n this.containerFormat = data.containerFormat;\n this.videoCodecId = data.videoCodecId;\n this.status = data.status;\n this.language = data.language;\n this.label = data.label;\n }\n}\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-flavor-asset.js","//@flow\nimport ServiceResult from '../../base-service-result'\nimport KalturaMetadata from './kaltura-metadata'\n\n/**\n * Ovp BE Metadata list response\n * @classdesc\n */\nexport default class KalturaMetadataListResponse extends ServiceResult {\n totalCount: number;\n /**\n * @member -The mata data array\n * @type {Array}\n */\n metas: Array;\n\n /**\n * @constructor\n * @param {Object} responseObj The response\n */\n constructor(responseObj: Object) {\n super(responseObj);\n if (!this.hasError) {\n this.totalCount = responseObj.totalCount;\n if (this.totalCount > 0) {\n this.metas = [];\n responseObj.objects.map(meta => this.metas.push(new KalturaMetadata(meta)));\n }\n\n }\n }\n}\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-metadata-list-response.js","//@flow\nimport KalturaDrmPlaybackPluginData from './kaltura-drm-playback-plugin-data'\n\n/**\n * Ovp BE playback source\n * @classdesc\n */\nexport default class KalturaPlaybackSource {\n /**\n * @member - source format according to delivery profile streamer type (applehttp, mpegdash etc.)\n * @type {string}\n */\n format: string;\n /**\n * @member - delivery profile Id\n * @type {string}\n */\n deliveryProfileId: string;\n /**\n * @member - The source URL\n * @type {string}\n */\n url: string;\n /**\n * @member - comma separated string according to deliveryProfile media protocols ('http,https' etc.)\n * @type {string}\n */\n protocols: string;\n /**\n * @member - comma separated string of flavor ids\n * @type {string}\n */\n flavorIds: string;\n /**\n * @member - drm data object containing relevant license url ,scheme name and certificate\n * @type {Array}\n */\n drm: Array = [];\n\n /**\n * @constructor\n * @param {Object} source The response\n */\n constructor(source: Object) {\n this.format = source.format;\n this.deliveryProfileId = source.deliveryProfileId;\n this.url = source.url;\n this.protocols = source.protocols;\n this.flavorIds = source.flavorIds;\n\n if (source.drm) {\n source.drm.map(drm => this.drm.push(new KalturaDrmPlaybackPluginData(drm)));\n }\n\n\n }\n\n /**\n * Checks if source has DRM data\n * @function hasDrmData\n * @returns {boolean} Is source has DRM\n */\n hasDrmData(): boolean {\n return this.drm && this.drm.length > 0;\n }\n\n /**\n * Checks if source has flavor IDs\n * @function hasFlavorIds\n * @returns {boolean} Is source ha flavor IDs\n */\n hasFlavorIds(): boolean {\n return !!this.flavorIds && this.flavorIds.length > 0;\n }\n\n /**\n * Returns source desired protocol if supported\n * @param {string} protocol - the desired protocol for the source (base play url protocol)\n * @returns {string} - protocol if protocol is in the protocols list - if not empty string returned\n */\n getProtocol(protocol: string): string {\n let returnValue: string = \"\";\n if (this.protocols && this.protocols.length > 0) {\n let protocolsArr: Array = this.protocols.split(\",\");\n protocolsArr.forEach((p) => {\n if (p == protocol) {\n returnValue = p;\n }\n });\n }\n else if (protocol == \"http\") {\n return protocol;\n }\n return returnValue;\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-playback-source.js","//@flow\nimport OvpService from '../services/ovp-service'\nimport MultiRequestBuilder from '../../multi-request-builder'\nimport {MultiRequestResult} from '../../multi-request-builder'\n\n/**\n * Data loaders manager\n * @classdesc\n */\nexport default class DataLoaderManager {\n /**\n * @member - Lodaers response map index\n * @type {Map>}\n * @private\n * @static\n */\n static _loadersResponseMap: Map> = new Map();\n /**\n * @member - Loaders multi request\n * @type {MultiRequestBuilder}\n * @private\n */\n _multiRequest: MultiRequestBuilder;\n /**\n * @member - Loaders multi response\n * @type {MultiRequestResult}\n * @private\n */\n _multiResponse: MultiRequestResult;\n /**\n * @member - Loaders to execute\n * @type {Map}\n * @private\n */\n _loaders: Map = new Map();\n\n /**\n * @constructor\n * @param {string} partnerID Then partner ID\n * @param {string} ks The ks\n */\n constructor(partnerID: number, ks: string = \"\") {\n this._multiRequest = OvpService.getMultirequest(ks, partnerID);\n }\n\n /**\n * Add loader too execution loaders map\n * @function\n * @param {Function} loader Loader to add\n * @param {Object} params Loader params\n * @returns {void}\n */\n add(loader: Function, params: Object): void {\n let execution_loader = new loader(params);\n if (execution_loader.isValid()) {\n this._loaders.set(loader.id, execution_loader);\n //Get the start index from the multiReqeust before adding current execution_loader requests\n let startIndex = this._multiRequest.requests.length;\n //Get the requests\n let requests = execution_loader.requests;\n //Add requests to muktiRequest queue\n requests.forEach((request) => {\n this._multiRequest.add(request);\n });\n //Create range array of current execution_loader requests\n let executionLoaderResponseMap = Array.from(new Array(requests.length), (val, index) => index + startIndex);\n //Add to map\n DataLoaderManager._loadersResponseMap.set(loader.id, executionLoaderResponseMap);\n }\n }\n\n /**\n * Get data from all loaders using multi request\n * @function\n * @returns {Promise} Promise\n */\n fetchData(): Promise {\n return new Promise((resolve, reject) => {\n this._multiRequest.execute()\n .then(response => {\n this._multiResponse = response;\n if (!response.success) {\n reject(response);\n }\n else {\n let preparedData: Object = this.prepareData(response);\n if (preparedData.success) {\n resolve(this._loaders);\n }\n else {\n reject({success: false, data: preparedData.error});\n }\n }\n },\n err => {\n reject(err);\n });\n });\n }\n\n prepareData(response: MultiRequestResult): Object {\n this._loaders.forEach(function (loader, name) {\n let loaderDataIndexes = DataLoaderManager._loadersResponseMap.get(name);\n try {\n if (loaderDataIndexes != null) {\n loader.response = (response.results.slice(loaderDataIndexes[0], loaderDataIndexes[loaderDataIndexes.length - 1] + 1));\n }\n }\n catch (err) {\n return {success: false, error: err};\n }\n });\n return {success: true, data: this._loaders};\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/loaders/data-loader-manager.js","//@flow\n\nimport RequestBuilder from '../../request-builder'\nimport BaseEntryService from '../services/base-entry-service'\nimport MetaDataService from '../services/meta-data-service'\nimport Configuration from '../config'\nimport KalturaPlaybackContext from '../response-types/kaltura-playback-context'\nimport KalturaMetadataListResponse from '../response-types/kaltura-metadata-list-response'\nimport KalturaBaseEntryListResponse from '../response-types/kaltura-base-entry-list-response'\n\nconst config = Configuration.get();\n\n/**\n * Media entry loader\n * @classdesc\n */\nexport default class MediaEntryLoader implements ILoader {\n static get id(): string {\n return \"media\";\n }\n\n _entryId: string;\n _requests: Array;\n _response: any = {};\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n constructor(params: Object) {\n this.requests = this.buildRequests(params);\n this._entryId = params.entryId;\n }\n\n set requests(requests: Array) {\n this._requests = requests;\n }\n\n get requests(): Array {\n return this._requests;\n }\n\n set response(response: any) {\n let mediaEntryResponse: KalturaBaseEntryListResponse = new KalturaBaseEntryListResponse(response[0].data);\n this._response.entry = mediaEntryResponse.entries[0];\n this._response.playBackContextResult = new KalturaPlaybackContext(response[1].data);\n this._response.metadataListResult = new KalturaMetadataListResponse(response[2].data);\n }\n\n get response(): any {\n return this._response;\n }\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n buildRequests(params: Object): Array {\n let requests: Array = [];\n requests.push(BaseEntryService.list(config.beUrl, params.ks, params.entryId));\n requests.push(BaseEntryService.getPlaybackContext(config.beUrl, params.ks, params.entryId));\n requests.push(MetaDataService.list(config.beUrl, params.ks, params.entryId));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n isValid(): boolean {\n return !!this._entryId;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/loaders/media-entry-loader.js","//@flow\nimport SessionService from '../services/session-service'\nimport Configuration from '../config'\nimport RequestBuilder from '../../request-builder'\n\nconst config = Configuration.get();\n/**\n * Media entry loader\n * @classdesc\n */\nexport default class SessionLoader implements ILoader {\n static get id(): string {\n return \"session\";\n }\n\n /**\n * @member - partner ID\n * @type {number}\n * @private\n */\n _partnerId: number;\n _requests: Array;\n _response: any = {};\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n constructor(params: Object) {\n this.requests = this.buildRequests(params);\n this._partnerId = params.partnerId;\n }\n\n set requests(requests: Array) {\n this._requests = requests;\n }\n\n get requests(): Array {\n return this._requests;\n }\n\n set response(response: any) {\n this._response.ks = response[0].data.ks;\n }\n\n get response(): any {\n return this._response.ks;\n }\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n buildRequests(params: Object): Array {\n let requests: Array = [];\n requests.push(SessionService.anonymousSession(config.beUrl, params.partnerId));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n isValid(): boolean {\n return !!this._partnerId;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/loaders/session-loader.js","//@flow\nimport UiConfService from '../services/ui-conf-service'\nimport KalturaUiConfResponse from '../response-types/kaltura-ui-conf-response'\nimport Configuration from '../config'\nimport RequestBuilder from '../../request-builder'\n\nconst config = Configuration.get();\n\nexport default class UiConfigLoader implements ILoader {\n static get id(): string {\n return \"uiConf\";\n }\n\n /**\n * @member - uiConf ID\n * @type {number}\n * @private\n */\n _uiConfId: number;\n _requests: Array;\n _response: any = {};\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n constructor(params: Object) {\n this.requests = this.buildRequests(params);\n this._uiConfId = params.uiConfId;\n }\n\n set requests(requests: Array) {\n this._requests = requests;\n }\n\n get requests(): Array {\n return this._requests;\n }\n\n set response(response: any) {\n this._response.uiConf = new KalturaUiConfResponse(response[0].data);\n }\n\n get response(): any {\n if (this._response != null && this._response.uiConf != null && this._response.uiConf.config != null)\n try {\n return JSON.parse(this._response.uiConf.config).plugins;\n }\n catch (err) {\n return null;\n }\n else\n return null;\n }\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n buildRequests(params: Object): Array {\n let requests: Array = [];\n requests.push(UiConfService.get(config.beUrl, params.ks, params.uiConfId));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n isValid(): boolean {\n return !!this._uiConfId;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/loaders/ui-config-loader.js","//@flow\nimport KalturaPlaybackSource from './response-types/kaltura-playback-source'\nimport KalturaFlavorAsset from './response-types/kaltura-flavor-asset'\nimport KalturaMetadataListResponse from './response-types/kaltura-metadata-list-response'\nimport PlaySourceUrlBuilder from \"./play-source-url-builder\"\nimport XmlParser from '../xml-parser'\nimport {MediaEntryTypes, EntryTypes, MediaTypes} from '../enums'\nimport Logger from '../../util/logger'\nimport Configuration from './config'\nimport {MediaFormats} from '../../entities/media-format'\nimport MediaEntry from '../../entities/media-entry'\nimport Drm from '../../entities/drm'\nimport MediaSource from '../../entities/media-source'\nimport MediaSources from '../../entities/media-sources'\n\nconst config = Configuration.get();\n/**\n * @constant\n */\nconst logger = Logger.get(\"OvpProvider\");\n\n/**\n * @constant\n * @type {Map}\n */\nconst SUPPORTED_FORMATS: Map = new Map([\n [\"mpegdash\", MediaFormats.dash],\n [\"applehttp\", MediaFormats.hls],\n [\"url\", MediaFormats.mp4]\n]);\n\n/**\n * Ovp provider parser\n * @classdesc\n */\nexport default class ProviderParser {\n\n /**\n * Returns parsed media entry by given OVP response objects\n * @function getMediaEntry\n * @param {string} ks - The ks\n * @param {number} partnerID - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {any} mediaEntryResponse - The media entry response\n * @returns {MediaEntry} - The media entry\n * @static\n * @public\n */\n static getMediaEntry(ks: string, partnerID: number, uiConfId: number, mediaEntryResponse: any): MediaEntry {\n let mediaEntry: MediaEntry = new MediaEntry();\n let entry = mediaEntryResponse.entry;\n let playbackContext = mediaEntryResponse.playBackContextResult;\n let metadataList = mediaEntryResponse.metadataListResult;\n let kalturaSources: Array = playbackContext.sources;\n let sources: MediaSources = ProviderParser._getParsedSources(kalturaSources, ks, partnerID, uiConfId, entry, playbackContext);\n\n mediaEntry.sources = sources;\n\n let metadata: Object = this._parseMetaData(metadataList);\n mediaEntry.metaData = metadata;\n mediaEntry.id = entry.id;\n mediaEntry.name = entry.name;\n mediaEntry.duration = entry.duration;\n mediaEntry.metaData[\"description\"] = entry.description;\n mediaEntry.metaData[\"poster\"] = entry.poster;\n\n let type: MediaEntryType = MediaEntryTypes.Unknown;\n\n switch (entry.entryType) {\n case MediaTypes.IMAGE.value:\n type = MediaEntryTypes.Image;\n break;\n case MediaTypes.AUDIO.value:\n type = MediaEntryTypes.Audio;\n break;\n default:\n switch (entry.type) {\n case EntryTypes.MEDIA_CLIP.value:\n type = MediaEntryTypes.Vod;\n break;\n case EntryTypes.LIVE_STREAM.value:\n case EntryTypes.LIVE_CHANNEL.value:\n type = MediaEntryTypes.Live;\n break;\n default:\n type = MediaEntryTypes.Unknown;\n }\n }\n mediaEntry.type = type;\n\n return mediaEntry;\n }\n\n /**\n * Returns the parsed sources\n * @function _getParsedSources\n * @param {Array} kalturaSources - The kaltura sources\n * @param {string} ks - The ks\n * @param {number} partnerID - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {Object} entry - The entry\n * @param {Object} playbackContext - The playback context\n * @return {MediaSources} - A media sources\n * @static\n * @private\n */\n static _getParsedSources(kalturaSources: Array, ks: string, partnerID: number, uiConfId: number, entry: Object, playbackContext: Object): MediaSources {\n let sources: MediaSources = new MediaSources();\n\n let addAdaptiveSource = function(source: KalturaPlaybackSource): void{\n let parsedSource = ProviderParser._parseAdaptiveSource(source, playbackContext.flavorAssets, ks, partnerID, uiConfId, entry.id);\n let sourceFormat = SUPPORTED_FORMATS.get(source.format);\n sources.map(parsedSource, sourceFormat);\n };\n\n let parseAdaptiveSources = function (): void {\n kalturaSources.filter((source) => !ProviderParser._isProgressiveSource(source)).forEach(addAdaptiveSource);\n };\n\n let parseProgressiveSources = function (): void{\n let progressiveSource = kalturaSources.find(ProviderParser._isProgressiveSource);\n sources.progressive = ProviderParser._parseProgressiveSources(progressiveSource, playbackContext.flavorAssets, ks, partnerID, uiConfId, entry.id);\n };\n\n if (kalturaSources && kalturaSources.length > 0) {\n parseAdaptiveSources();\n parseProgressiveSources();\n }\n\n return sources;\n }\n\n /**\n * Returns a parsed adaptive source\n * @function _parseAdaptiveSource\n * @param {KalturaPlaybackSource} kalturaSource - A kaltura source\n * @param {Array} flavorAssets - The flavor Assets of the kaltura source\n * @param {string} ks - The ks\n * @param {number} partnerID - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {string} entryId - The entry id\n * @returns {MediaSource} - The parsed adaptive kalturaSource\n * @static\n * @private\n */\n static _parseAdaptiveSource(kalturaSource: ?KalturaPlaybackSource, flavorAssets: Array, ks: string, partnerID: number, uiConfId: number, entryId: string): MediaSource {\n let mediaSource: MediaSource = new MediaSource();\n if (kalturaSource) {\n let playUrl: string = \"\";\n let mediaFormat = SUPPORTED_FORMATS.get(kalturaSource.format);\n // in case playbackSource doesn't have flavors we don't need to build the url and we'll use the provided one.\n if (kalturaSource.hasFlavorIds()) {\n let extension: string = \"\";\n if (!mediaFormat) {\n if (flavorAssets && flavorAssets.length > 0) {\n extension = flavorAssets[0].fileExt;\n }\n }\n else {\n extension = mediaFormat.pathExt;\n mediaSource.mimetype = mediaFormat.mimeType;\n }\n\n playUrl = PlaySourceUrlBuilder.build({\n entryId: entryId,\n flavorIds: kalturaSource.flavorIds,\n format: kalturaSource.format,\n ks: ks,\n partnerId: partnerID,\n uiConfId: uiConfId,\n extension: extension,\n protocol: kalturaSource.getProtocol(this._getBaseProtocol())\n });\n\n }\n else {\n playUrl = kalturaSource.url;\n }\n\n if (playUrl == \"\") {\n logger.error(`failed to create play url from source, discarding source: (${entryId}_${kalturaSource.deliveryProfileId}), ${kalturaSource.format}.`);\n return mediaSource;\n }\n\n mediaSource.url = playUrl;\n mediaSource.id = entryId + \"_\" + kalturaSource.deliveryProfileId + \",\" + kalturaSource.format;\n if (kalturaSource.hasDrmData()) {\n let drmParams: Array = [];\n kalturaSource.drm.forEach((drm) => {\n drmParams.push(new Drm(drm.licenseURL, drm.scheme));\n });\n mediaSource.drmData = drmParams;\n }\n }\n return mediaSource;\n }\n\n /**\n * Returns parsed progressive sources\n * @function _parseProgressiveSources\n * @param {KalturaPlaybackSource} kalturaSource - A kaltura source\n * @param {Array} flavorAssets - The flavor Assets of the kaltura source\n * @param {string} ks - The ks\n * @param {number} partnerID - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {string} entryId - The entry id\n * @returns {Array} - The parsed progressive kalturaSources\n * @static\n * @private\n */\n static _parseProgressiveSources(kalturaSource: ?KalturaPlaybackSource, flavorAssets: Array, ks: string, partnerID: number, uiConfId: number, entryId: string): Array {\n let sources = [];\n if (kalturaSource) {\n let protocol = kalturaSource.getProtocol(this._getBaseProtocol());\n let format = kalturaSource.format;\n let sourceId = kalturaSource.deliveryProfileId + \",\" + kalturaSource.format;\n flavorAssets.map((flavor) => {\n if (flavor.height && flavor.width) {\n let mediaSource: MediaSource = new MediaSource();\n mediaSource.id = flavor.id + sourceId;\n mediaSource.mimetype = 'video/mp4';\n mediaSource.height = flavor.height;\n mediaSource.width = flavor.width;\n mediaSource.bandwidth = flavor.bitrate * 1024;\n mediaSource.label = flavor.label || flavor.language;\n mediaSource.url = PlaySourceUrlBuilder.build({\n entryId: entryId,\n flavorIds: flavor.id,\n format: format,\n ks: ks,\n partnerId: partnerID,\n uiConfId: uiConfId,\n extension: 'mp4',\n protocol: protocol\n });\n sources.push(mediaSource);\n }\n });\n }\n return sources;\n }\n\n /**\n * @function _isProgressiveSource\n * @param {KalturaPlaybackSource} source - The kaltura source\n * @return {boolean} - Is progressive source\n * @static\n * @private\n */\n static _isProgressiveSource(source: KalturaPlaybackSource): boolean {\n let sourceFormat = SUPPORTED_FORMATS.get(source.format);\n return !!sourceFormat && sourceFormat.name === 'mp4';\n }\n\n /**\n * Ovp metadata parser\n * @function _parseMetaData\n * @param {KalturaMetadataListResponse} metadataList The metadata list\n * @returns {Map} Parsed metadata\n * @static\n * @private\n */\n static _parseMetaData(metadataList: KalturaMetadataListResponse): Map {\n let metadata: Object = {};\n if (metadataList && metadataList.metas && metadataList.metas.length > 0) {\n metadataList.metas.forEach((meta) => {\n let metaXml: Object;\n let domParser: DOMParser = new DOMParser();\n meta.xml = meta.xml.replace(/\\r?\\n|\\r/g, \"\");\n meta.xml = meta.xml.replace(/>\\s*/g, '>');\n meta.xml = meta.xml.replace(/>\\s*/g, '>');\n metaXml = domParser.parseFromString(meta.xml, 'text/xml');\n let metasObj: Object = XmlParser.xmlToJson(metaXml);\n let metaKeys = Object.keys(metasObj.metadata);\n metaKeys.forEach((key) => {\n metadata[key] = metasObj.metadata[key][\"#text\"];\n })\n })\n }\n return metadata;\n }\n\n /**\n * Returns the base protocol\n * @function _getBaseProtocol\n * @returns {string} - The base protocol\n * @static\n * @private\n */\n static _getBaseProtocol(): string {\n let splittedUrl: Array = config.baseUrl.split(\"/\");\n let baseProtocol: string;\n if (splittedUrl && splittedUrl.length > 0) {\n baseProtocol = splittedUrl[0].substring(0, splittedUrl[0].length - 1);\n }\n else {\n baseProtocol = \"http\";\n }\n return baseProtocol;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/provider-parser.js","//@flow\nexport class MediaFormats {\n static dash: MediaFormat = {\n name: 'dash',\n mimeType: \"application/dash+xml\",\n pathExt: \"mpd\"\n };\n\n static hls: MediaFormat = {\n name: 'hls',\n mimeType: \"application/x-mpegURL\",\n pathExt: \"m3u8\"\n };\n\n static wvm: MediaFormat = {\n name: 'wvm',\n mimeType: \"video/wvm\",\n pathExt: \"wvm\"\n };\n\n static mp4: MediaFormat = {\n name: 'mp4',\n mimeType: \"video/mp4\",\n pathExt: \"mp4\"\n };\n\n static mp3: MediaFormat = {\n name: 'mp3',\n mimeType: \"audio/mpeg\",\n pathExt: \"mp3\"\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./entities/media-format.js","//@flow\nimport Logger from '../../util/logger'\nimport ProviderParser from './provider-parser'\nimport DataLoaderManager from './loaders/data-loader-manager'\nimport MediaEntryLoader from './loaders/media-entry-loader'\nimport SessionLoader from './loaders/session-loader'\nimport UiConfigLoader from './loaders/ui-config-loader'\nimport Configuration from './config'\nimport MediaEntry from '../../entities/media-entry'\nimport MediaSources from '../../entities/media-sources'\n/**\n * @constant\n */\nconst logger = Logger.get(\"OvpProvider\");\n\ntype playerConfig = {\n id: string,\n name: string,\n session: Object,\n sources: MediaSources,\n duration: number,\n type: string,\n metadata: Object,\n plugins: Object\n};\n\n/**\n * Ovp provider\n * @classdesc\n */\nexport class OvpProvider {\n /**\n * @member - ks\n * @type {string}\n */\n ks: string;\n /**\n * @member - partner ID\n * @type {number}\n */\n partnerID: number;\n /**\n * @member - is anonymous\n * @type {boolean}\n * @private\n */\n _isAnonymous: boolean;\n /**\n * @member - uiConf ID\n * @type {number}\n * @private\n */\n _uiConfId: number;\n /**\n * @member - Data loader\n * @type {DataLoaderManager}\n * @private\n */\n _dataLoader: DataLoaderManager;\n\n /**\n * @constructor\n * @param {number} partnerID The partner ID\n * @param {string} [ks=\"\"] The provider ks (has empty string as default value)\n * @param {Object} [config] The provider config(optional)\n */\n constructor(partnerID: number, ks: string = \"\", config?: Object) {\n this.partnerID = partnerID;\n this.ks = ks;\n this._isAnonymous = !this.ks;\n Configuration.set(config);\n }\n\n /**\n * Returns player json configuration\n * @function getConfig\n * @param {string} entryId The entry ID\n * @param {number} uiConfId The uiConf ID\n * @returns {Promise} The provider config object as promise\n */\n getConfig(entryId?: string, uiConfId?: number): Promise {\n if (uiConfId != null) {\n this._uiConfId = uiConfId;\n }\n this._dataLoader = new DataLoaderManager(this.partnerID, this.ks);\n return new Promise((resolve, reject) => {\n if (this.validateParams(entryId, uiConfId)) {\n let ks: string = this.ks;\n if (!ks) {\n ks = \"{1:result:ks}\";\n this._dataLoader.add(SessionLoader, {partnerId: this.partnerID});\n }\n this._dataLoader.add(MediaEntryLoader, {entryId: entryId, ks: ks});\n this._dataLoader.add(UiConfigLoader, {uiConfId: uiConfId, ks: ks});\n this._dataLoader.fetchData()\n .then(response => {\n resolve(this.parseDataFromResponse(response));\n },\n err => {\n reject(err);\n });\n }\n else {\n reject({success: false, data: \"Missing mandatory parameter\"});\n }\n });\n }\n\n /**\n * Parses BE data to json configuration object\n * @function parseDataFromResponse\n * @param {Map} data The data to parse\n * @returns {Object} The parsed config object\n */\n parseDataFromResponse(data: Map): Object {\n logger.debug(\"Data parsing started\");\n let config: playerConfig = {\n id: \"\",\n name: \"\",\n session: {\n partnerID: this.partnerID,\n uiConfID: this._uiConfId,\n },\n sources: new MediaSources(),\n duration: 0,\n type: \"Unknown\",\n metadata: {},\n plugins: {}\n };\n if (data != null) {\n if (data.has(SessionLoader.id)) {\n let sessionLoader = data.get(SessionLoader.id);\n if (sessionLoader != null && sessionLoader.response != null) {\n this.ks = sessionLoader.response;\n config.session.ks = this.ks;\n }\n }\n if (data.has(UiConfigLoader.id)) {\n let uiConfLoader = data.get(UiConfigLoader.id);\n let pluginsJson: Object = {};\n if (uiConfLoader != null) {\n pluginsJson = uiConfLoader.response;\n }\n config.plugins = pluginsJson;\n }\n if (data.has(MediaEntryLoader.id)) {\n let mediaLoader = data.get(MediaEntryLoader.id);\n if (mediaLoader != null && mediaLoader.response != null) {\n let mediaEntry: MediaEntry = ProviderParser.getMediaEntry(this._isAnonymous ? \"\" : this.ks, this.partnerID, this._uiConfId, mediaLoader.response);\n config.id = mediaEntry.id;\n config.name = mediaEntry.name;\n config.sources = mediaEntry.sources;\n config.duration = mediaEntry.duration;\n config.type = mediaEntry.type;\n config.metadata = mediaEntry.metaData;\n }\n }\n }\n logger.debug(\"Data parsing finished\", config);\n return (config);\n }\n\n /**\n * Parameters validation function\n * @param {string} entryId The entry ID\n * @param {number} uiConfId The uiConfID\n * @returns {boolean} Is valid params\n */\n validateParams(entryId?: string, uiConfId?: number): boolean {\n return !!entryId || !!uiConfId;\n }\n\n}\n\nexport default OvpProvider;\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/ovp-provider.js","//@flow\nimport Configuration from './config'\n\nconst config = Configuration.get();\n\n/**\n * Media source url builder\n * @classdesc\n */\nexport default class PlaySourceUrlBuilder {\n\n /**\n * Returns source url by given url params\n * @function build\n * @param {Object} urlParams The params\n * @returns {string} The URL\n * @static\n */\n static build(urlParams: Object): string {\n let baseUrl: string = config.baseUrl;\n let partnerId: string = urlParams.partnerId;\n let entryId: string = urlParams.entryId;\n let ks: string = urlParams.ks;\n let uiConfId: string = urlParams.uiConfId;\n let format: string = urlParams.format;\n let protocol: string = urlParams.protocol;\n let extension: string = urlParams.extension;\n let flavorIds: string = urlParams.flavorIds;\n\n if (baseUrl == \"\" && partnerId == \"\" && entryId == \"\" && extension == \"\" && format == \"\") {\n return \"\";\n }\n\n let playUrl = baseUrl;\n if (!baseUrl.endsWith(\"/\")) {\n playUrl += \"/\";\n }\n playUrl += \"p/\" + partnerId + \"/sp/\" + partnerId + \"00\" + \"/playManifest/entryId/\" + entryId + \"/protocol/\" + protocol + \"/format/\" + format;\n\n if (flavorIds != \"\") {\n playUrl += \"/flavorIds/\" + flavorIds;\n }\n else if (uiConfId != \"\") {\n playUrl += \"/uiConfId/\" + uiConfId;\n }\n\n if (ks != \"\") {\n playUrl += \"/ks/\" + ks;\n }\n\n playUrl += \"/a.\" + extension;\n\n if (uiConfId && flavorIds != \"\") {\n playUrl += \"?uiConfId=\" + uiConfId;\n }\n\n return playUrl;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/play-source-url-builder.js","//@flow\n\n/**\n * Ovp BE access control message\n * @classdesc\n */\nexport default class KalturaAccessControlMessage {\n /**\n * @member - The access control message\n * @type {string}\n */\n message: string;\n /**\n * @member - The access control message code\n * @@type {string}\n */\n code: string;\n\n /**\n * @constructor\n * @param {Object} data The json response\n */\n constructor(data: Object) {\n this.message = data.message;\n this.code = data.code\n }\n}\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-access-control-message.js","//@flow\nimport ServiceResult from '../../base-service-result'\nimport KalturaMediaEntry from './kaltura-media-entry'\n\n/**\n * Ovp BE BaseEntryList service response\n * @classdesc\n */\nexport default class KalturaBaseEntryListResponse extends ServiceResult {\n /**\n * @member - The total count\n * @type {number}\n */\n totalCount: number;\n /**\n * @member - The entries\n * @type {Array}\n */\n entries: Array;\n\n /**\n * @constructor\n * @param {Object} responseObj The json response\n */\n constructor(responseObj: Object) {\n super(responseObj);\n if (!this.hasError) {\n this.totalCount = responseObj.totalCount;\n if (this.totalCount > 0) {\n this.entries = [];\n responseObj.objects.map(entry => this.entries.push(new KalturaMediaEntry(entry)));\n }\n }\n }\n}\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-base-entry-list-response.js","//@flow\nimport {Scheme} from '../../enums'\n\n/**\n * Ovp BE DrmPlaybackPluginData\n * @classdesc\n */\nexport default class KalturaDrmPlaybackPluginData {\n /**\n * @member - The drm scheme\n * @type {Scheme}\n */\n scheme: Scheme;\n\n /**\n * @member - The license URL\n * @type {string}\n */\n licenseURL: string;\n\n /**\n * @constructor\n * @param {Object} drm The json response\n */\n constructor(drm: any) {\n this.scheme = drm.scheme;\n this.licenseURL = drm.licenseURL;\n }\n}\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-drm-playback-plugin-data.js","//@flow\n\n/**\n * Ovp BE MediaEntry\n * @classdesc\n */\nexport default class KalturaMediaEntry {\n /**\n * @member - The entry id\n * @type {string}\n */\n id: string;\n /**\n * @member - Entry name (Min 1 chars)\n * @type {string}\n */\n name: string;\n /**\n * @member - Entry description\n * @type {string}\n */\n description: string;\n /**\n * @member - The URL used for playback. This is not the download URL.\n * @type {string}\n */\n dataUrl: string;\n /**\n * @member - Comma separated flavor params ids that exists for this media entry\n * @type {string}\n */\n flavorParamsIds: string;\n /**\n * @member - The entry duration\n * @type {number}\n */\n duration: number;\n /**\n * @member - The type of the entry, this is auto filled by the derived entry object\n * @type {EntryType}\n */\n type: EntryType;\n /**\n * @member - The type of the entry, this is auto filled by the derived entry object (Image, Audio etc.)\n * @type {MediaType}\n */\n entryType: MediaType;\n /**\n * @member - Entry poster image\n * @type {string}\n */\n poster: string;\n\n /**\n * @constructor\n * @param {Object} entry The json response\n */\n constructor(entry: Object) {\n this.id = entry.id;\n this.name = entry.name;\n this.description = entry.description;\n this.dataUrl = entry.dataUrl;\n this.type = entry.type;\n this.entryType = entry.mediaType;\n this.flavorParamsIds = entry.flavorParamsIds;\n this.duration = entry.duration;\n this.poster = entry.thumbnailUrl;\n }\n}\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-media-entry.js","//@flow\n\n/**\n * Ovp BE Metadata\n * @classdesc\n */\nexport default class KalturaMetadata {\n id: number;\n metadataProfileId: number;\n metadataProfileVersion: number;\n metadataObjectType: MetadataObjectType;\n objectId: string;\n version: number;\n created: Date;\n updated: Date;\n status: MetadataStatus;\n /**\n * @member - The Metadata xml - represented as XML string\n * @type {string}\n */\n xml: string;\n\n /**\n * @constructor\n * @param {Object} data The response\n */\n constructor(data: Object) {\n this.id = data.id;\n this.metadataProfileId = data.metadataProfileId;\n this.metadataProfileVersion = data.metadataProfileVersion;\n this.metadataProfileId = data.metadataProfileId;\n this.metadataObjectType = data.metadataObjectType;\n this.objectId = data.objectId;\n this.version = data.version;\n this.created = new Date(0);\n this.created.setUTCSeconds(data.createdAt);\n this.updated = new Date(0);\n this.updated.setUTCSeconds(data.updatedAt);\n this.status = data.status;\n this.xml = data.xml;\n\n }\n}\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-metadata.js","//@flow\nimport ServiceResult from '../../base-service-result'\nimport KalturaAccessControlMessage from './kaltura-access-control-message'\nimport KalturaPlaybackSource from './kaltura-playback-source'\nimport KalturaRuleAction from './kaltura-rule-action'\nimport KalturaFlavorAsset from './kaltura-flavor-asset'\n\n/**\n * Ovp BE playback context response\n * @classdesc\n */\nexport default class KalturaPlaybackContext extends ServiceResult {\n /**\n * @member - The playback sources\n * @type {Array}\n */\n sources: Array = [];\n /**\n * @member - Array of actions as received from the rules that invalidated\n * @type {Array}\n */\n actions: Array = [];\n /**\n * @member - Array of actions as received from the rules that invalidated\n * @type {Array}\n */\n messages: Array = [];\n /**\n * @member - The flavor assets\n * @type {Array}\n */\n flavorAssets: Array = [];\n\n /**\n * @constructor\n * @param {Object} response The response\n */\n constructor(response: Object) {\n super(response);\n if (!this.hasError) {\n\n let messages = response.messages;\n if (messages) {\n messages.map(message => this.messages.push(new KalturaAccessControlMessage(message)));\n }\n\n let actions = response.actions;\n if (actions) {\n actions.map(action => this.actions.push(new KalturaRuleAction(action)));\n }\n\n let sources = response.sources;\n if (sources) {\n sources.map(source => this.sources.push(new KalturaPlaybackSource(source)));\n }\n\n let flavorAssets = response.flavorAssets;\n if (flavorAssets) {\n flavorAssets.map(flavor => this.flavorAssets.push(new KalturaFlavorAsset(flavor)));\n }\n }\n\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-playback-context.js","//@flow\n\n/**\n * Ovp BE rule action\n * @classdesc\n */\nexport default class KalturaRuleAction {\n /**\n * @member - The type of the action\n * @type {KalturaRuleActionType}\n */\n type: KalturaRuleActionType;\n\n /**\n * @constructor\n * @param {Object} data The response\n */\n constructor(data: Object) {\n this.type = data.type;\n }\n}\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-rule-action.js","//@flow\nimport ServiceResult from '../../base-service-result'\n\n/**\n * Ovp BE Ui config response\n * @classdesc\n */\nexport default class KalturaUiConfResponse extends ServiceResult {\n /**\n * @member -Name of the uiConf, this is not a primary key\n * @type {string}\n */\n name: string;\n /**\n * @member -Name of the uiConf, this is not a primary key\n * @type {string}\n */\n description: string;\n objTypeAsString: string;\n width: number;\n height: number;\n htmlParams: string;\n swfUrl: string;\n confFilePath: string;\n confFile: string;\n confFileFeatures: string;\n name: string;\n /**\n * @member -plugins configuration represented as Json string\n * @type {string}\n */\n config: string;\n confVars: string;\n useCdn: boolean;\n tags: string;\n swfUrlVersion: string;\n created: Date;\n updated: Date;\n html5Url: string;\n version: string;\n partnerTags: string;\n objType: UIConfType;\n creationMode: UIConfCreationMode;\n\n /**\n * @constructor\n * @param {Object} data The json response\n */\n constructor(data: Object) {\n super(data);\n if (!this.hasError) {\n this.name = data.name;\n\n this.description = data.description;\n this.objTypeAsString = data.objTypeAsString;\n this.width = data.width;\n this.height = data.height;\n this.htmlParams = data.htmlParams;\n this.swfUrl = data.swfUrl;\n this.confFilePath = data.confFilePath;\n this.confFile = data.confFile;\n this.confFileFeatures = data.confFileFeatures;\n this.config = data.config;\n this.confVars = data.confVars;\n this.useCdn = data.useCdn;\n this.tags = data.tags;\n this.swfUrlVersion = data.swfUrlVersion;\n this.created = new Date(0);\n this.created.setUTCSeconds(data.createdAt);\n this.updated = new Date(0);\n this.updated.setUTCSeconds(data.updatedAt);\n this.html5Url = data.description;\n this.version = data.description;\n this.partnerTags = data.description;\n this.objType = data.description;\n this.creationMode = data.description;\n }\n }\n}\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-ui-conf-response.js","//@flow\nimport OvpService from './ovp-service'\nimport RequestBuilder from '../../request-builder'\n\nconst SERVICE_NAME: string = \"baseEntry\";\n\n/**\n * Ovp BaseEntry service methods\n * @classdesc\n */\nexport default class BaseEntryService extends OvpService {\n\n /**\n * Creates an instance of RequestBuilder for baseentry.getPlaybackContext\n * @function getPlaybackContext\n * @param {string} baseUrl The service base URL\n * @param {string} ks The ks\n * @param {string} entryId The entry ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n static getPlaybackContext(baseUrl: string, ks: string, entryId: string): RequestBuilder {\n let request = new RequestBuilder();\n request.service = SERVICE_NAME;\n request.action = \"getPlaybackContext\";\n request.method = \"POST\";\n request.baseUrl = baseUrl;\n request.tag = \"baseEntry-getPlaybackContext\";\n let contextDataParams = {objectType: \"KalturaContextDataParams\", flavorTags: \"all\"};\n let params = {entryId: entryId, ks: ks, contextDataParams: contextDataParams};\n request.params = params;\n return request;\n }\n\n /**\n * Creates an instance of RequestBuilder for baseentry.list\n * @function list\n * @param {string} baseUrl The base URL\n * @param {string} ks The ks\n * @param {string} entryId The entry ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n static list(baseUrl: string, ks: string, entryId: string): RequestBuilder {\n let request = new RequestBuilder();\n request.service = SERVICE_NAME;\n request.action = \"list\";\n request.method = \"POST\";\n request.baseUrl = baseUrl;\n request.tag = \"list\";\n request.params = BaseEntryService.getEntryListReqParams(entryId, ks);\n return request;\n }\n\n /**\n * Gets baseentry.list service params\n * @function getEntryListReqParams\n * @param {string} entryId The entry ID\n * @param {string} ks The ks\n * @returns {{ks: string, filter: {redirectFromEntryId: string}, responseProfile: {fields: string, type: number}}} The service params object\n * @static\n */\n static getEntryListReqParams(entryId: string, ks: string): any {\n let filterParams = {redirectFromEntryId: entryId};\n let responseProfileParams = {\n fields: \"id,name,description,thumbnailUrl,dataUrl,duration,msDuration,flavorParamsIds,mediaType,type,tags\",\n type: 1\n };\n return {ks: ks, filter: filterParams, responseProfile: responseProfileParams};\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/base-entry-service.js","//@flow\n\nimport OvpService from './ovp-service'\nimport RequestBuilder from '../../request-builder'\n\nconst SERVICE_NAME: string = \"metadata_metadata\";\n\n/**\n * Ovp metadata_metadata service methods\n * @classdesc\n */\nexport default class MetaDataService extends OvpService {\n /**\n * Creates an instance of RequestBuilder for metadata_metadata.list\n * @function getPlaybackContext\n * @param {string} baseUrl The service base URL\n * @param {string} ks The ks\n * @param {string} entryId The entry ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n static list(baseUrl: string, ks: string, entryId: string) {\n let request = new RequestBuilder();\n request.service = SERVICE_NAME;\n request.action = \"list\";\n request.method = \"POST\";\n request.baseUrl = baseUrl;\n request.tag = \"metadata_metadata-list\";\n let filter = {objectType: \"KalturaMetadataFilter\", objectIdEqual: entryId, metadataObjectTypeEqual: \"1\"};\n let params = {filter: filter, ks: ks};\n request.params = params;\n return request;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/meta-data-service.js","//@flow\n\nimport OvpService from './ovp-service'\nimport RequestBuilder from '../../request-builder'\n\nconst SERVICE_NAME: string = \"session\";\n\n/**\n * Ovp session service methods\n * @classdesc\n */\nexport default class SessionService extends OvpService {\n /**\n * Creates an instance of RequestBuilder for session.startWidgetSession\n * @function anonymousSession\n * @param {string} baseUrl The service base URL\n * @param {string} partnerId The partner ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n static anonymousSession(baseUrl: string, partnerId: number) {\n let request = new RequestBuilder();\n request.service = SERVICE_NAME;\n request.action = \"startWidgetSession\";\n request.method = \"POST\";\n request.baseUrl = baseUrl;\n request.tag = \"session-startWidget\";\n request.params = {widgetId: \"_\" + partnerId};\n return request;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/session-service.js","//@flow\n\nimport OvpService from './ovp-service'\nimport RequestBuilder from '../../request-builder'\n\nconst SERVICE_NAME: string = \"uiconf\";\n\n/**\n * Ovp uiconf service methods\n * @classdesc\n */\nexport default class UiConfService extends OvpService {\n /**\n * Creates an instance of RequestBuilder for uiconf.get\n * @function get\n * @param {string} baseUrl The service base URL\n * @param {string} ks The ks\n * @param {string} uiConfID The uiConf ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n static get(baseUrl: string, ks: string, uiConfID: number) {\n let request = new RequestBuilder();\n request.service = SERVICE_NAME;\n request.action = \"get\";\n request.method = \"POST\";\n request.baseUrl = baseUrl;\n request.tag = \"uiconf-get\";\n let responseProfileParams = {\n fields: \"config\",\n type: 1\n };\n request.params = {id: uiConfID, responseProfile: responseProfileParams, ks: ks};\n return request;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/ui-conf-service.js","//@flow\n\n/**\n * Xml parser\n * @classdesc\n */\nexport default class XmlParser {\n /**\n * Parses xml string to json object\n * @param {string} xml The xml to parse\n * @returns {{}} The parsed xml as Json object\n * @static\n */\n static xmlToJson(xml: Object) {\n let obj = {};\n if (xml.nodeType == 1) {\n if (xml.attributes.length > 0) {\n obj[\"@attributes\"] = {};\n for (let j = 0; j < xml.attributes.length; j++) {\n let attribute = xml.attributes.item(j);\n obj[\"@attributes\"][attribute.nodeName] = attribute.nodeValue;\n }\n }\n }\n else if (xml.nodeType == 3) {\n obj = xml.nodeValue;\n }\n if (xml.hasChildNodes()) {\n for (let i = 0; i < xml.childNodes.length; i++) {\n let item = xml.childNodes.item(i);\n let nodeName = item.nodeName;\n if (typeof (obj[nodeName]) == \"undefined\") {\n obj[nodeName] = this.xmlToJson(item);\n }\n else {\n if (typeof (obj[nodeName].push) == \"undefined\") {\n let old = obj[nodeName];\n obj[nodeName] = [];\n obj[nodeName].push(old);\n }\n obj[nodeName].push(this.xmlToJson(item));\n }\n }\n }\n return obj;\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/xml-parser.js"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///providers/webpack/universalModuleDefinition","webpack:///providers/webpack/bootstrap a5ccf712a583df4196ec","webpack:///providers/./k-provider/request-builder.js","webpack:///providers/./k-provider/ovp/config.js","webpack:///providers/./k-provider/ovp/services/ovp-service.js","webpack:///providers/./k-provider/base-service-result.js","webpack:///providers/./util/logger.js","webpack:///providers/./k-provider/enums.js","webpack:///providers/./k-provider/multi-request-builder.js","webpack:///providers/./entities/media-sources.js","webpack:///providers/../~/js-logger/src/logger.js","webpack:///providers/./entities/media-entry.js","webpack:///providers/./entities/drm.js","webpack:///providers/./entities/media-source.js","webpack:///providers/./k-provider/ovp/response-types/kaltura-flavor-asset.js","webpack:///providers/./k-provider/ovp/response-types/kaltura-metadata-list-response.js","webpack:///providers/./k-provider/ovp/response-types/kaltura-playback-source.js","webpack:///providers/./k-provider/ovp/loaders/data-loader-manager.js","webpack:///providers/./k-provider/ovp/loaders/media-entry-loader.js","webpack:///providers/./k-provider/ovp/loaders/session-loader.js","webpack:///providers/./k-provider/ovp/loaders/ui-config-loader.js","webpack:///providers/./k-provider/ovp/provider-parser.js","webpack:///providers/./entities/media-format.js","webpack:///providers/./k-provider/ovp/ovp-provider.js","webpack:///providers/./k-provider/ovp/play-source-url-builder.js","webpack:///providers/./k-provider/ovp/response-types/kaltura-access-control-message.js","webpack:///providers/./k-provider/ovp/response-types/kaltura-base-entry-list-response.js","webpack:///providers/./k-provider/ovp/response-types/kaltura-drm-playback-plugin-data.js","webpack:///providers/./k-provider/ovp/response-types/kaltura-media-entry.js","webpack:///providers/./k-provider/ovp/response-types/kaltura-metadata.js","webpack:///providers/./k-provider/ovp/response-types/kaltura-playback-context.js","webpack:///providers/./k-provider/ovp/response-types/kaltura-rule-action.js","webpack:///providers/./k-provider/ovp/response-types/kaltura-ui-conf-response.js","webpack:///providers/./k-provider/ovp/services/base-entry-service.js","webpack:///providers/./k-provider/ovp/services/meta-data-service.js","webpack:///providers/./k-provider/ovp/services/session-service.js","webpack:///providers/./k-provider/ovp/services/ui-conf-service.js","webpack:///providers/./k-provider/xml-parser.js"],"names":["RequestBuilder","headers","Map","set","baseUrl","Error","url","service","action","request","XMLHttpRequest","Promise","resolve","reject","onreadystatechange","readyState","status","jsonResponse","JSON","parse","responseText","code","message","open","method","getUrl","forEach","value","key","setRequestHeader","send","params","defaultConfig","beUrl","serviceParams","clientTag","apiVersion","format","Configuration","clientConfig","Object","assign","config","get","SERVICE_NAME","OvpService","ks","partnerId","ovpParams","multiReq","ServiceResult","response","hasError","objectType","error","ServiceError","data","JsLogger","LoggerFactory","options","useDefaults","name","Logger","defaultLevel","DEBUG","LOG_LEVEL","INFO","TIME","WARN","ERROR","OFF","DrmScheme","KalturaRuleActionTypes","DRM_POLICY","BLOCK","PREVIEW","LIMIT_FLAVORS","ADD_TO_STORAGE","LIMIT_DELIVERY_PROFILES","SERVE_FROM_REMOTE_SERVER","REQUEST_HOST_REGEX","LIMIT_THUMBNAIL_CAPTURE","Status","QUEUED","CONVERTING","READY","DELETED","NOT_APPLICABLE","TEMP","WAIT_FOR_CONVERT","IMPORTING","VALIDATING","EXPORTING","MetadataObjectTypes","AD_CUE_POINT","ANNOTATION","CODE_CUE_POINT","THUMB_CUE_POINT","ENTRY","CATEGORY","USER","PARTNER","DYNAMIC_OBJECT","MetadataStatuses","VALID","INVALID","EntryStatuses","ERROR_IMPORTING","ERROR_CONVERTING","SCAN_FAILURE","IMPORT","INFECTED","PRECONVERT","PENDING","MODERATE","BLOCKED","NO_CONTENT","EntryModerationStatuses","PENDING_MODERATION","APPROVED","REJECTED","FLAGGED_FOR_REVIEW","AUTO_APPROVED","EntryTypes","AUTOMATIC","EXTERNAL_MEDIA","MEDIA_CLIP","MIX","PLAYLIST","DATA","LIVE_STREAM","LIVE_CHANNEL","DOCUMENT","MediaTypes","VIDEO","IMAGE","AUDIO","LIVE_STREAM_FLASH","LIVE_STREAM_WINDOWS_MEDIA","LIVE_STREAM_REAL_MEDIA","LIVE_STREAM_QUICKTIME","MediaEntryTypes","Vod","Live","Image","Audio","Unknown","UIConfTypes","PLAYER","CONTRIBUTION_WIZARD","SIMPLE_EDITOR","ADVANCED_EDITOR","APP_STUDIO","KRECORD","PLAYER_V3","KMC_ACCOUNT","KMC_ANALYTICS","KMC_CONTENT","KMC_DASHBOARD","KMC_LOGIN","PLAYER_SL","CLIENTSIDE_ENCODER","KMC_GENERAL","KMC_ROLES_AND_PERMISSIONS","CLIPPER","KSR","KUPLOAD","WEBCASTING","UIConfCreationModes","WIZARD","ADVANCED","logger","MultiRequestBuilder","requests","push","requestParams","serviceDef","length","stringify","err","doHttpRequest","then","MultiRequestResult","errorText","results","success","result","serviceResult","MediaSources","progressive","dash","hls","source","mediaFormat","MediaEntry","metaData","type","Drm","licenseUrl","scheme","certificate","MediaSource","KalturaFlavorAsset","id","flavorParamsId","fileExt","bitrate","width","height","frameRate","isOriginal","isWeb","containerFormat","videoCodecId","language","label","KalturaMetadataListResponse","responseObj","totalCount","metas","objects","map","meta","KalturaPlaybackSource","drm","deliveryProfileId","protocols","flavorIds","protocol","returnValue","protocolsArr","split","p","DataLoaderManager","partnerID","_loaders","_multiRequest","getMultirequest","loader","execution_loader","isValid","startIndex","add","executionLoaderResponseMap","Array","from","val","index","_loadersResponseMap","execute","_multiResponse","preparedData","prepareData","loaderDataIndexes","slice","MediaEntryLoader","_response","buildRequests","_entryId","entryId","list","getPlaybackContext","_requests","mediaEntryResponse","entry","entries","playBackContextResult","metadataListResult","SessionLoader","_partnerId","anonymousSession","UiConfigLoader","_uiConfId","uiConfId","uiConf","plugins","SUPPORTED_FORMATS","mp4","ProviderParser","mediaEntry","playbackContext","metadataList","kalturaSources","sources","_getParsedSources","metadata","_parseMetaData","duration","description","poster","entryType","addAdaptiveSource","parsedSource","_parseAdaptiveSource","flavorAssets","sourceFormat","parseAdaptiveSources","filter","_isProgressiveSource","parseProgressiveSources","progressiveSource","find","_parseProgressiveSources","kalturaSource","mediaSource","playUrl","hasFlavorIds","extension","pathExt","mimetype","mimeType","build","getProtocol","_getBaseProtocol","hasDrmData","drmParams","licenseURL","drmData","sourceId","flavor","bandwidth","metaXml","domParser","DOMParser","xml","replace","parseFromString","metasObj","xmlToJson","metaKeys","keys","splittedUrl","baseProtocol","substring","MediaFormats","wvm","mp3","OvpProvider","_isAnonymous","_dataLoader","validateParams","fetchData","parseDataFromResponse","debug","session","uiConfID","has","sessionLoader","uiConfLoader","pluginsJson","mediaLoader","getMediaEntry","PlaySourceUrlBuilder","urlParams","endsWith","KalturaAccessControlMessage","KalturaBaseEntryListResponse","KalturaDrmPlaybackPluginData","KalturaMediaEntry","dataUrl","mediaType","flavorParamsIds","thumbnailUrl","KalturaMetadata","metadataProfileId","metadataProfileVersion","metadataObjectType","objectId","version","created","Date","setUTCSeconds","createdAt","updated","updatedAt","KalturaPlaybackContext","actions","messages","KalturaRuleAction","KalturaUiConfResponse","objTypeAsString","htmlParams","swfUrl","confFilePath","confFile","confFileFeatures","confVars","useCdn","tags","swfUrlVersion","html5Url","partnerTags","objType","creationMode","BaseEntryService","tag","contextDataParams","flavorTags","getEntryListReqParams","filterParams","redirectFromEntryId","responseProfileParams","fields","responseProfile","MetaDataService","objectIdEqual","metadataObjectTypeEqual","SessionService","widgetId","UiConfService","XmlParser","obj","nodeType","attributes","j","attribute","item","nodeName","nodeValue","hasChildNodes","i","childNodes","old"],"mappings":"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ckB,MAAd;AACA;AACF;AACE;AAXJ;AAaD;AACF;;;;;;kBAnDkBJ,Y;;;;;;ACPrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe;;AAEf;AACA;;AAEA;AACA;;AAEA,8CAA8C;AAC9C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C;AAC5C;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oDAAoD;AACpD;AACA;AACA;AACA;AACA,uBAAuB;AACvB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,+BAA+B,eAAe;AAC9C;AACA;AACA;;AAEA;AACA,0CAA0C,0BAA0B;;AAEpE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mEAAmE,aAAa;AAChF;;AAEA;AACA,sDAAsD;AACtD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KA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","file":"ovpProvider.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"PlaykitJsProviders\"] = factory();\n\telse\n\t\troot[\"PlaykitJsProviders\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 22);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap a5ccf712a583df4196ec","//@flow\n\n/**\n * Request builder\n * @classdesc\n */\nexport default class RequestBuilder {\n\n /**\n * @member - Service name\n * @type {string}\n */\n service: string;\n /**\n * @member - Service action\n * @type {string}\n */\n action: string;\n /**\n * @member - Service params\n * @type {any}\n */\n params: any;\n /**\n * @member - Service headers\n * @type {Map}\n */\n headers: Map;\n /**\n * @member - Service base url\n * @type {Map}\n */\n baseUrl: string;\n /**\n * @member - Service method (POST,GET,DELETE etc..)\n * @type {string}\n */\n method: string;\n /**\n * @member - Service tag\n * @type {string}\n */\n tag: string;\n\n /**\n * @constructor\n * @param {Map} headers The request headers\n */\n constructor(headers: Map = new Map()) {\n this.headers = headers;\n this.headers.set(\"Content-Type\", \"application/json\");\n }\n\n /**\n * Builds restful service URL\n * @function getUrl\n * @returns {string} The service URL\n */\n getUrl(): string {\n if (!this.baseUrl) {\n throw new Error(\"baseUrl is mandatory for request builder\");\n }\n let url = this.baseUrl + '/service/' + this.service + (this.action ? '/action/' + this.action : '');\n return url;\n }\n\n /**\n * Executes service\n * @function doHttpRequest\n * @returns {Promise.} Service response as promise\n */\n doHttpRequest(): Promise {\n let request = new XMLHttpRequest();\n return new Promise((resolve, reject) => {\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n if (request.status === 200) {\n let jsonResponse = JSON.parse(request.responseText);\n if (jsonResponse && typeof(jsonResponse) === 'object' && jsonResponse.code && jsonResponse.message)\n reject(jsonResponse);\n else\n resolve(jsonResponse);\n } else {\n reject(request.responseText);\n }\n }\n };\n request.open(this.method, this.getUrl());\n this.headers.forEach((value, key) => {\n request.setRequestHeader(key, value);\n });\n request.send(this.params);\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/request-builder.js","//@flow\n\nconst defaultConfig: Object = {\n beUrl: \"http://www.kaltura.com/api_v3\",\n baseUrl: \"https://cdnapisec.kaltura.com\",\n serviceParams: {\n clientTag: \"playkit-js\",\n apiVersion: '3.3.0',\n format: 1\n }\n};\n\nexport default class Configuration {\n\n static set(clientConfig?: Object) {\n if (clientConfig) {\n Object.assign(defaultConfig, clientConfig);\n }\n }\n\n static get(): Object {\n return defaultConfig;\n }\n}\n\nexport {Configuration};\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/config.js","//@flow\nimport MultiRequestBuilder from '../../multi-request-builder'\nimport Configuration from '../config'\n\nconst config = Configuration.get();\nconst SERVICE_NAME: string = \"multirequest\";\n\n/**\n * Base for all ovp services\n * @classdesc\n */\nexport default class OvpService {\n /**\n * Gets a new instance of MultiRequestBuilder with ovp params\n * @function getMultirequest\n * @param {string} ks The ks\n * @param {string} partnerId The partner ID\n * @returns {MultiRequestBuilder} The multi request builder\n * @static\n */\n static getMultirequest(ks: string, partnerId?: number): MultiRequestBuilder {\n let ovpParams = config.serviceParams;\n Object.assign(ovpParams, {ks: ks});\n if (partnerId) {\n Object.assign(ovpParams, {partnerId: partnerId});\n }\n let multiReq = new MultiRequestBuilder();\n multiReq.method = \"POST\";\n multiReq.service = SERVICE_NAME;\n multiReq.baseUrl = config.beUrl;\n multiReq.params = ovpParams;\n return multiReq;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/ovp-service.js","//@flow\n\n/**\n * Base service result\n * @classdesc\n */\nexport default class ServiceResult {\n\n /**\n * @member - Is service returned an error\n * @type {boolean}\n */\n hasError: boolean = false;\n /**\n * @member - The service error\n * @type {ServiceError}\n */\n error: ServiceError;\n /**\n * @member - The service result data\n * @type {Object}\n */\n data: Object;\n\n /**\n * @constructor\n * @param {Object} response - Service response\n */\n constructor(response: Object) {\n if (response.objectType === \"KalturaAPIException\") {\n this.hasError = true;\n this.error = new ServiceError(response.code, response.message);\n }\n else {\n this.data = response;\n }\n }\n}\n\n/**\n * Service error\n * @classdesc\n */\nclass ServiceError {\n /**\n * @member - The error code\n * @type {string}\n */\n code: string;\n /**\n * @member - The error message\n * @type {string}\n */\n message: string;\n\n /**\n * @constructor\n * @param {string} code - The result code\n * @param {string} message - The result message\n */\n constructor(code: string, message: string) {\n this.code = code;\n this.message = message;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/base-service-result.js","//@flow\nimport * as JsLogger from 'js-logger';\n\nclass LoggerFactory {\n constructor(options?: Object) {\n JsLogger.useDefaults(options || {});\n }\n\n get(name?: string) {\n if (!name) {\n return JsLogger;\n }\n return JsLogger.get(name);\n }\n}\n\nlet Logger = new LoggerFactory({defaultLevel: JsLogger.DEBUG});\nconst LOG_LEVEL: { [level: string]: Object } = {\n \"DEBUG\": JsLogger.DEBUG,\n \"INFO\": JsLogger.INFO,\n \"TIME\": JsLogger.TIME,\n \"WARN\": JsLogger.WARN,\n \"ERROR\": JsLogger.ERROR,\n \"OFF\": JsLogger.OFF\n};\n\nexport default Logger;\nexport {LOG_LEVEL};\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./util/logger.js","//@flow\nexport const DrmScheme = {\n 'drm.PLAYREADY_CENC': 'com.microsoft.playready',\n 'drm.WIDEVINE_CENC': 'com.widevine.alpha',\n 'fairplay.FAIRPLAY': 'com.apple.fairplay'\n};\n\nexport class KalturaRuleActionTypes {\n static DRM_POLICY: KalturaRuleActionType = \"drm.DRM_POLICY\";\n static BLOCK: KalturaRuleActionType = 1;\n static PREVIEW: KalturaRuleActionType = 2;\n static LIMIT_FLAVORS: KalturaRuleActionType = 3;\n static ADD_TO_STORAGE: KalturaRuleActionType = 4;\n static LIMIT_DELIVERY_PROFILES: KalturaRuleActionType = 5;\n static SERVE_FROM_REMOTE_SERVER: KalturaRuleActionType = 6;\n static REQUEST_HOST_REGEX: KalturaRuleActionType = 7;\n static LIMIT_THUMBNAIL_CAPTURE: KalturaRuleActionType = 8;\n}\n\nexport class Status {\n static ERROR: number = -1;\n static QUEUED: number = 0;\n static CONVERTING: number = 1;\n static READY: number = 2;\n static DELETED: number = 3;\n static NOT_APPLICABLE: number = 4;\n static TEMP: number = 5;\n static WAIT_FOR_CONVERT: number = 6;\n static IMPORTING: number = 7;\n static VALIDATING: number = 8;\n static EXPORTING: number = 9;\n}\n\nexport class MetadataObjectTypes {\n static AD_CUE_POINT: MetadataObjectType = \"adCuePointMetadata.AdCuePoint\";\n static ANNOTATION: MetadataObjectType = \"annotationMetadata.Annotation\";\n static CODE_CUE_POINT: MetadataObjectType = \"codeCuePointMetadata.CodeCuePoint\";\n static THUMB_CUE_POINT: MetadataObjectType = \"thumbCuePointMetadata.thumbCuePoint\";\n static ENTRY: MetadataObjectType = 1;\n static CATEGORY: MetadataObjectType = 2;\n static USER: MetadataObjectType = 3;\n static PARTNER: MetadataObjectType = 4;\n static DYNAMIC_OBJECT: MetadataObjectType = 5;\n}\n\nexport class MetadataStatuses {\n static VALID: MetadataStatus = 1;\n static INVALID: MetadataStatus = 2;\n static DELETED: MetadataStatus = 3;\n}\n\nexport class EntryStatuses {\n static ERROR_IMPORTING: EntryStatus = -2;\n static ERROR_CONVERTING: EntryStatus = -1;\n static SCAN_FAILURE: EntryStatus = \"virusScan.ScanFailure\";\n static IMPORT: EntryStatus = 0;\n static INFECTED: EntryStatus = \"virusScan.Infected\";\n static PRECONVERT: EntryStatus = 1;\n static READY: EntryStatus = 2;\n static DELETED: EntryStatus = 3;\n static PENDING: EntryStatus = 4;\n static MODERATE: EntryStatus = 5;\n static BLOCKED: EntryStatus = 6;\n static NO_CONTENT: EntryStatus = 7\n}\n\nexport class EntryModerationStatuses {\n static PENDING_MODERATION: EntryModerationStatus = 1;\n static APPROVED: EntryModerationStatus = 2;\n static REJECTED: EntryModerationStatus = 3;\n static FLAGGED_FOR_REVIEW: EntryModerationStatus = 4;\n static MODERATE: EntryModerationStatus = 5;\n static AUTO_APPROVED: EntryModerationStatus = 6\n}\n\nexport class EntryTypes {\n static AUTOMATIC: EntryType = {value: -1};\n static EXTERNAL_MEDIA: EntryType = {value: \"externalMedia.externalMedia\"};\n static MEDIA_CLIP: EntryType = {value: 1};\n static MIX: EntryType = {value: 2};\n static PLAYLIST: EntryType = {value: 5};\n static DATA: EntryType = {value: 6};\n static LIVE_STREAM: EntryType = {value: 7};\n static LIVE_CHANNEL: EntryType = {value: 8};\n static DOCUMENT: EntryType = {value: 10};\n}\n\nexport class MediaTypes {\n static VIDEO: MediaType = {value: 1};\n static IMAGE: MediaType = {value: 2};\n static AUDIO: MediaType = {value: 5};\n static LIVE_STREAM_FLASH: MediaType = {value: 201};\n static LIVE_STREAM_WINDOWS_MEDIA: MediaType = {value: 202};\n static LIVE_STREAM_REAL_MEDIA: MediaType = {value: 203};\n static LIVE_STREAM_QUICKTIME: MediaType = {value: 204};\n}\n\nexport class MediaEntryTypes {\n static Vod: MediaEntryType = 'Vod';\n static Live: MediaEntryType = 'Live';\n static Image: MediaEntryType = 'Image';\n static Audio: MediaEntryType = 'Audio';\n static Unknown: MediaEntryType = 'Unknown';\n}\n\nexport class UIConfTypes {\n static PLAYER: UIConfType = 1;\n static CONTRIBUTION_WIZARD: UIConfType = 2;\n static SIMPLE_EDITOR: UIConfType = 3;\n static ADVANCED_EDITOR: UIConfType = 4;\n static PLAYLIST: UIConfType = 5;\n static APP_STUDIO: UIConfType = 6;\n static KRECORD: UIConfType = 7;\n static PLAYER_V3: UIConfType = 8;\n static KMC_ACCOUNT: UIConfType = 9;\n static KMC_ANALYTICS: UIConfType = 10;\n static KMC_CONTENT: UIConfType = 11;\n static KMC_DASHBOARD: UIConfType = 12;\n static KMC_LOGIN: UIConfType = 13;\n static PLAYER_SL: UIConfType = 14;\n static CLIENTSIDE_ENCODER: UIConfType = 15;\n static KMC_GENERAL: UIConfType = 16;\n static KMC_ROLES_AND_PERMISSIONS: UIConfType = 17;\n static CLIPPER: UIConfType = 18;\n static KSR: UIConfType = 19;\n static KUPLOAD: UIConfType = 20;\n static WEBCASTING: UIConfType = 21\n}\n\nexport class UIConfCreationModes {\n static WIZARD: UIConfCreationMode = 2;\n static ADVANCED: UIConfCreationMode = 3\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/enums.js","//@flow\nimport RequestBuilder from './request-builder'\nimport ServiceResult from './base-service-result'\nimport Logger from \"../util/logger\";\n/**\n * @constant\n */\nconst logger = Logger.get(\"OvpProvider\");\n\n/**\n * Multi Request builder\n * @classdesc\n */\nexport default class MultiRequestBuilder extends RequestBuilder {\n\n /**\n * @member - Array of requests\n * @type {Array}\n */\n requests: Array = [];\n\n /**\n * @constructor\n */\n constructor() {\n super();\n }\n\n /**\n * Adds request to requests array\n * @function add\n * @param {RequestBuilder} request The request\n * @returns {MultiRequestBuilder} The multiRequest\n */\n add(request: RequestBuilder): MultiRequestBuilder {\n this.requests.push(request);\n let requestParams = {};\n let serviceDef: Object = {service: request.service, action: request.action};\n Object.assign(requestParams, {[this.requests.length]: Object.assign(serviceDef, request.params)});\n Object.assign(requestParams, this.params);\n this.params = requestParams;\n return this;\n }\n\n /**\n * Executes a multi request\n * @function execute\n * @returns {Promise} The multirequest execution promisie\n */\n execute(): Promise {\n try {\n this.params = JSON.stringify(this.params);\n }\n catch (err) {\n logger.error(`${err.message}`);\n }\n return new Promise((resolve, reject) => {\n this.doHttpRequest().then(data => {\n resolve(new MultiRequestResult(data));\n },\n err => {\n let errorText: string = `Error on multiRequest execution, error <${err}>.`;\n reject(errorText);\n\n });\n });\n }\n\n}\n\n/**\n * Multi Request result object\n * @classdesc\n */\nexport class MultiRequestResult {\n\n /**\n * @member - Is success\n * @type {boolean}\n */\n success: boolean;\n /**\n * @member - Multi request response data\n * @type {Object}\n */\n results: Array = [];\n\n /**\n * @constructor\n * @param {Object} response data\n */\n constructor(response: Object) {\n this.success = true;\n response.forEach((result) => {\n let serviceResult: ServiceResult = new ServiceResult(result);\n this.results.push(serviceResult);\n if (serviceResult.hasError) {\n logger.error(`Service returned an error with error code: ${serviceResult.error.code} and message: ${serviceResult.error.message}.`);\n this.success = false;\n return;\n }\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/multi-request-builder.js","// @flow\nimport MediaSource from './media-source'\n\n/**\n * Container for the media sources aggregated by stream format.\n * @classdesc\n */\nexport default class MediaSources {\n /**\n * Progressive download media sources container.\n * @type {Array}\n * @public\n */\n progressive: Array;\n /**\n * Dash media sources container.\n * @type {Array}\n * @public\n */\n dash: Array;\n /**\n * Hls media sources container.\n * @type {Array}\n * @public\n */\n hls: Array;\n\n /**\n * @constructor\n */\n constructor() {\n this.progressive = [];\n this.dash = [];\n this.hls = [];\n }\n\n /**\n * Maps the source to one of the containers according to his media format.\n * @param {MediaSource} source - The source to add to one of the containers.\n * @param {MediaFormat} mediaFormat - The media format of the source.\n * @returns {void}\n */\n map(source: MediaSource, mediaFormat: ?MediaFormat) {\n if (mediaFormat) {\n switch (mediaFormat.name) {\n case 'mp4':\n this.progressive.push(source);\n break;\n case 'dash':\n this.dash.push(source);\n break;\n case 'hls':\n this.hls.push(source);\n break;\n default:\n break;\n }\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./entities/media-sources.js","/*!\r\n * js-logger - http://github.com/jonnyreeves/js-logger\r\n * Jonny Reeves, http://jonnyreeves.co.uk/\r\n * js-logger may be freely distributed under the MIT license.\r\n */\r\n(function (global) {\r\n\t\"use strict\";\r\n\r\n\t// Top level module for the global, static logger instance.\r\n\tvar Logger = { };\r\n\r\n\t// For those that are at home that are keeping score.\r\n\tLogger.VERSION = \"1.3.0\";\r\n\r\n\t// Function which handles all incoming log messages.\r\n\tvar logHandler;\r\n\r\n\t// Map of ContextualLogger instances by name; used by Logger.get() to return the same named instance.\r\n\tvar contextualLoggersByNameMap = {};\r\n\r\n\t// Polyfill for ES5's Function.bind.\r\n\tvar bind = function(scope, func) {\r\n\t\treturn function() {\r\n\t\t\treturn func.apply(scope, arguments);\r\n\t\t};\r\n\t};\r\n\r\n\t// Super exciting object merger-matron 9000 adding another 100 bytes to your download.\r\n\tvar merge = function () {\r\n\t\tvar args = arguments, target = args[0], key, i;\r\n\t\tfor (i = 1; i < args.length; i++) {\r\n\t\t\tfor (key in args[i]) {\r\n\t\t\t\tif (!(key in target) && args[i].hasOwnProperty(key)) {\r\n\t\t\t\t\ttarget[key] = args[i][key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn target;\r\n\t};\r\n\r\n\t// Helper to define a logging level object; helps with optimisation.\r\n\tvar defineLogLevel = function(value, name) {\r\n\t\treturn { value: value, name: name };\r\n\t};\r\n\r\n\t// Predefined logging levels.\r\n\tLogger.DEBUG = defineLogLevel(1, 'DEBUG');\r\n\tLogger.INFO = defineLogLevel(2, 'INFO');\r\n\tLogger.TIME = defineLogLevel(3, 'TIME');\r\n\tLogger.WARN = defineLogLevel(4, 'WARN');\r\n\tLogger.ERROR = defineLogLevel(8, 'ERROR');\r\n\tLogger.OFF = defineLogLevel(99, 'OFF');\r\n\r\n\t// Inner class which performs the bulk of the work; ContextualLogger instances can be configured independently\r\n\t// of each other.\r\n\tvar ContextualLogger = function(defaultContext) {\r\n\t\tthis.context = defaultContext;\r\n\t\tthis.setLevel(defaultContext.filterLevel);\r\n\t\tthis.log = this.info; // Convenience alias.\r\n\t};\r\n\r\n\tContextualLogger.prototype = {\r\n\t\t// Changes the current logging level for the logging instance.\r\n\t\tsetLevel: function (newLevel) {\r\n\t\t\t// Ensure the supplied Level object looks valid.\r\n\t\t\tif (newLevel && \"value\" in newLevel) {\r\n\t\t\t\tthis.context.filterLevel = newLevel;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Is the logger configured to output messages at the supplied level?\r\n\t\tenabledFor: function (lvl) {\r\n\t\t\tvar filterLevel = this.context.filterLevel;\r\n\t\t\treturn lvl.value >= filterLevel.value;\r\n\t\t},\r\n\r\n\t\tdebug: function () {\r\n\t\t\tthis.invoke(Logger.DEBUG, arguments);\r\n\t\t},\r\n\r\n\t\tinfo: function () {\r\n\t\t\tthis.invoke(Logger.INFO, arguments);\r\n\t\t},\r\n\r\n\t\twarn: function () {\r\n\t\t\tthis.invoke(Logger.WARN, arguments);\r\n\t\t},\r\n\r\n\t\terror: function () {\r\n\t\t\tthis.invoke(Logger.ERROR, arguments);\r\n\t\t},\r\n\r\n\t\ttime: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'start' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttimeEnd: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'end' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Invokes the logger callback if it's not being filtered.\r\n\t\tinvoke: function (level, msgArgs) {\r\n\t\t\tif (logHandler && this.enabledFor(level)) {\r\n\t\t\t\tlogHandler(msgArgs, merge({ level: level }, this.context));\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Protected instance which all calls to the to level `Logger` module will be routed through.\r\n\tvar globalLogger = new ContextualLogger({ filterLevel: Logger.OFF });\r\n\r\n\t// Configure the global Logger instance.\r\n\t(function() {\r\n\t\t// Shortcut for optimisers.\r\n\t\tvar L = Logger;\r\n\r\n\t\tL.enabledFor = bind(globalLogger, globalLogger.enabledFor);\r\n\t\tL.debug = bind(globalLogger, globalLogger.debug);\r\n\t\tL.time = bind(globalLogger, globalLogger.time);\r\n\t\tL.timeEnd = bind(globalLogger, globalLogger.timeEnd);\r\n\t\tL.info = bind(globalLogger, globalLogger.info);\r\n\t\tL.warn = bind(globalLogger, globalLogger.warn);\r\n\t\tL.error = bind(globalLogger, globalLogger.error);\r\n\r\n\t\t// Don't forget the convenience alias!\r\n\t\tL.log = L.info;\r\n\t}());\r\n\r\n\t// Set the global logging handler. The supplied function should expect two arguments, the first being an arguments\r\n\t// object with the supplied log messages and the second being a context object which contains a hash of stateful\r\n\t// parameters which the logging function can consume.\r\n\tLogger.setHandler = function (func) {\r\n\t\tlogHandler = func;\r\n\t};\r\n\r\n\t// Sets the global logging filter level which applies to *all* previously registered, and future Logger instances.\r\n\t// (note that named loggers (retrieved via `Logger.get`) can be configured independently if required).\r\n\tLogger.setLevel = function(level) {\r\n\t\t// Set the globalLogger's level.\r\n\t\tglobalLogger.setLevel(level);\r\n\r\n\t\t// Apply this level to all registered contextual loggers.\r\n\t\tfor (var key in contextualLoggersByNameMap) {\r\n\t\t\tif (contextualLoggersByNameMap.hasOwnProperty(key)) {\r\n\t\t\t\tcontextualLoggersByNameMap[key].setLevel(level);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Retrieve a ContextualLogger instance. Note that named loggers automatically inherit the global logger's level,\r\n\t// default context and log handler.\r\n\tLogger.get = function (name) {\r\n\t\t// All logger instances are cached so they can be configured ahead of use.\r\n\t\treturn contextualLoggersByNameMap[name] ||\r\n\t\t\t(contextualLoggersByNameMap[name] = new ContextualLogger(merge({ name: name }, globalLogger.context)));\r\n\t};\r\n\r\n\t// CreateDefaultHandler returns a handler function which can be passed to `Logger.setHandler()` which will\r\n\t// write to the window's console object (if present); the optional options object can be used to customise the\r\n\t// formatter used to format each log message.\r\n\tLogger.createDefaultHandler = function (options) {\r\n\t\toptions = options || {};\r\n\r\n\t\toptions.formatter = options.formatter || function defaultMessageFormatter(messages, context) {\r\n\t\t\t// Prepend the logger's name to the log message for easy identification.\r\n\t\t\tif (context.name) {\r\n\t\t\t\tmessages.unshift(\"[\" + context.name + \"]\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Map of timestamps by timer labels used to track `#time` and `#timeEnd()` invocations in environments\r\n\t\t// that don't offer a native console method.\r\n\t\tvar timerStartTimeByLabelMap = {};\r\n\r\n\t\t// Support for IE8+ (and other, slightly more sane environments)\r\n\t\tvar invokeConsoleMethod = function (hdlr, messages) {\r\n\t\t\tFunction.prototype.apply.call(hdlr, console, messages);\r\n\t\t};\r\n\r\n\t\t// Check for the presence of a logger.\r\n\t\tif (typeof console === \"undefined\") {\r\n\t\t\treturn function () { /* no console */ };\r\n\t\t}\r\n\r\n\t\treturn function(messages, context) {\r\n\t\t\t// Convert arguments object to Array.\r\n\t\t\tmessages = Array.prototype.slice.call(messages);\r\n\r\n\t\t\tvar hdlr = console.log;\r\n\t\t\tvar timerLabel;\r\n\r\n\t\t\tif (context.level === Logger.TIME) {\r\n\t\t\t\ttimerLabel = (context.name ? '[' + context.name + '] ' : '') + messages[0];\r\n\r\n\t\t\t\tif (messages[1] === 'start') {\r\n\t\t\t\t\tif (console.time) {\r\n\t\t\t\t\t\tconsole.time(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttimerStartTimeByLabelMap[timerLabel] = new Date().getTime();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (console.timeEnd) {\r\n\t\t\t\t\t\tconsole.timeEnd(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tinvokeConsoleMethod(hdlr, [ timerLabel + ': ' +\r\n\t\t\t\t\t\t\t(new Date().getTime() - timerStartTimeByLabelMap[timerLabel]) + 'ms' ]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// Delegate through to custom warn/error loggers if present on the console.\r\n\t\t\t\tif (context.level === Logger.WARN && console.warn) {\r\n\t\t\t\t\thdlr = console.warn;\r\n\t\t\t\t} else if (context.level === Logger.ERROR && console.error) {\r\n\t\t\t\t\thdlr = console.error;\r\n\t\t\t\t} else if (context.level === Logger.INFO && console.info) {\r\n\t\t\t\t\thdlr = console.info;\r\n\t\t\t\t}\r\n\r\n\t\t\t\toptions.formatter(messages, context);\r\n\t\t\t\tinvokeConsoleMethod(hdlr, messages);\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\r\n\t// Configure and example a Default implementation which writes to the `window.console` (if present). The\r\n\t// `options` hash can be used to configure the default logLevel and provide a custom message formatter.\r\n\tLogger.useDefaults = function(options) {\r\n\t\tLogger.setLevel(options && options.defaultLevel || Logger.DEBUG);\r\n\t\tLogger.setHandler(Logger.createDefaultHandler(options));\r\n\t};\r\n\r\n\t// Export to popular environments boilerplate.\r\n\tif (typeof define === 'function' && define.amd) {\r\n\t\tdefine(Logger);\r\n\t}\r\n\telse if (typeof module !== 'undefined' && module.exports) {\r\n\t\tmodule.exports = Logger;\r\n\t}\r\n\telse {\r\n\t\tLogger._prevLogger = global.Logger;\r\n\r\n\t\tLogger.noConflict = function () {\r\n\t\t\tglobal.Logger = Logger._prevLogger;\r\n\t\t\treturn Logger;\r\n\t\t};\r\n\r\n\t\tglobal.Logger = Logger;\r\n\t}\r\n}(this));\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/js-logger/src/logger.js\n// module id = 8\n// module chunks = 0 1","//@flow\nimport {MediaEntryTypes} from '../k-provider/enums'\nimport MediaSources from './media-sources'\n\n/**\n * Media entry\n * @classdesc\n */\nexport default class MediaEntry {\n\n /**\n * @member - entry ID\n * @type {string}\n */\n id: string;\n /**\n * @member - entry name\n * @type {string}\n */\n name: string;\n /**\n * @member - entry sources\n * @type {MediaSources}\n */\n sources: MediaSources;\n /**\n * @member - entry duration\n * @type {number}\n */\n duration: number;\n /**\n * @member - entry type\n * @type {MediaEntryType}\n */\n type: MediaEntryType;\n /**\n * @member - entry metadata\n * @type {Object}\n */\n metaData: Object;\n\n /**\n * @constructor\n */\n constructor() {\n this.metaData = new Map();\n this.type = MediaEntryTypes.Unknown;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./entities/media-entry.js","//@flow\n\n/**\n * Drm data\n * @classdesc\n */\nexport default class Drm {\n\n /**\n * @member - license URL\n * @type {string}\n */\n licenseUrl: string;\n /**\n * @member - drm scheme\n * @type {Scheme}\n */\n scheme: Scheme;\n\n /**\n * @member - The drm certificate\n * @type {?string}\n */\n certificate: ?string;\n\n /**\n * @constructor\n * @param {string} licenseUrl - the license URL\n * @param {Scheme} scheme - the drm scheme\n * @param {?string} certificate - the drm certificate\n */\n constructor(licenseUrl: string, scheme: Scheme, certificate: ?string) {\n this.licenseUrl = licenseUrl;\n this.scheme = scheme;\n this.certificate = certificate;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./entities/drm.js","//@flow\nimport Drm from '../entities/drm'\n\n/**\n * Media source\n * @classdesc\n */\nexport default class MediaSource {\n /**\n * @member - media source ID\n * @type {string}\n */\n id: string;\n /**\n * @member - media source URL\n * @type {string}\n */\n url: string;\n /**\n * @member - media source mimetype\n * @type {string}\n */\n mimetype: string;\n /**\n * @member - media source drm data\n * @type {Array}\n */\n drmData: Array;\n /**\n * @member - media source bandwidth\n * @type {number}\n */\n bandwidth: number;\n /**\n * @member - media source width\n * @type {number}\n */\n width: number;\n /**\n * @member - media source height\n * @type {number}\n */\n height: number;\n /**\n * @member - media source label\n * @type {string}\n */\n label: string;\n\n /**\n * @constructor\n */\n constructor() {\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./entities/media-source.js","//@flow\nimport {Status} from '../../enums'\n\n/**\n * Ovp BE FlavorAsset\n * @classdesc\n */\nexport default class KalturaFlavorAsset {\n /**\n * @member - The ID of the Flavor Asset\n * @type {string}\n */\n id: string;\n /**\n * @member -The Flavor Params used to create this Flavor Asset\n * @type {string}\n */\n flavorParamsId: string;\n /**\n * @member -The file extension\n * @type {string}\n */\n fileExt: string;\n /**\n * @member - The overall bitrate (in KBits) of the Flavor Asset\n * @type {string}\n */\n bitrate: number;\n /**\n * @member - The width of the Flavor Asset\n * @type {number}\n */\n width: number;\n /**\n * @member - The height of the Flavor Asset\n * @type {number}\n */\n height: number;\n /**\n * @member - The frame rate (in FPS) of the Flavor Asset\n * @type {number}\n */\n frameRate: number;\n /**\n * @member - True if this Flavor Asset is the original source\n * @type {number}\n */\n isOriginal: boolean;\n /**\n * @member - True if this Flavor Asset is playable in KDP\n * @type {boolean}\n */\n isWeb: boolean;\n /**\n * @member - The container format\n * @type {boolean}\n */\n containerFormat: string;\n /**\n *@member - The video codec\n * @type {boolean}\n */\n videoCodecId: string;\n /**\n * @member - The status of the Flavor Asset\n * @type {string}\n */\n status: Status;\n /**\n * @member - The language of the flavor asset\n * @type {Status}\n */\n language: string;\n /**\n * @member - The label of the flavor asset\n * @type {string}\n */\n label: string;\n\n /**\n * @constructor\n * @param {Object} data The json response\n */\n constructor(data: any) {\n this.id = data.id;\n this.flavorParamsId = data.flavorParamsId;\n this.fileExt = data.fileExt;\n this.bitrate = data.bitrate;\n this.width = data.width;\n this.height = data.height;\n this.id = data.id;\n this.frameRate = data.frameRate;\n this.isOriginal = data.isOriginal;\n this.isWeb = data.isWeb;\n this.containerFormat = data.containerFormat;\n this.videoCodecId = data.videoCodecId;\n this.status = data.status;\n this.language = data.language;\n this.label = data.label;\n }\n}\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-flavor-asset.js","//@flow\nimport ServiceResult from '../../base-service-result'\nimport KalturaMetadata from './kaltura-metadata'\n\n/**\n * Ovp BE Metadata list response\n * @classdesc\n */\nexport default class KalturaMetadataListResponse extends ServiceResult {\n totalCount: number;\n /**\n * @member -The mata data array\n * @type {Array}\n */\n metas: Array;\n\n /**\n * @constructor\n * @param {Object} responseObj The response\n */\n constructor(responseObj: Object) {\n super(responseObj);\n if (!this.hasError) {\n this.totalCount = responseObj.totalCount;\n if (this.totalCount > 0) {\n this.metas = [];\n responseObj.objects.map(meta => this.metas.push(new KalturaMetadata(meta)));\n }\n\n }\n }\n}\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-metadata-list-response.js","//@flow\nimport KalturaDrmPlaybackPluginData from './kaltura-drm-playback-plugin-data'\n\n/**\n * Ovp BE playback source\n * @classdesc\n */\nexport default class KalturaPlaybackSource {\n /**\n * @member - source format according to delivery profile streamer type (applehttp, mpegdash etc.)\n * @type {string}\n */\n format: string;\n /**\n * @member - delivery profile Id\n * @type {string}\n */\n deliveryProfileId: string;\n /**\n * @member - The source URL\n * @type {string}\n */\n url: string;\n /**\n * @member - comma separated string according to deliveryProfile media protocols ('http,https' etc.)\n * @type {string}\n */\n protocols: string;\n /**\n * @member - comma separated string of flavor ids\n * @type {string}\n */\n flavorIds: string;\n /**\n * @member - drm data object containing relevant license url ,scheme name and certificate\n * @type {Array}\n */\n drm: Array = [];\n\n /**\n * @constructor\n * @param {Object} source The response\n */\n constructor(source: Object) {\n this.format = source.format;\n this.deliveryProfileId = source.deliveryProfileId;\n this.url = source.url;\n this.protocols = source.protocols;\n this.flavorIds = source.flavorIds;\n\n if (source.drm) {\n source.drm.map(drm => this.drm.push(new KalturaDrmPlaybackPluginData(drm)));\n }\n\n\n }\n\n /**\n * Checks if source has DRM data\n * @function hasDrmData\n * @returns {boolean} Is source has DRM\n */\n hasDrmData(): boolean {\n return this.drm && this.drm.length > 0;\n }\n\n /**\n * Checks if source has flavor IDs\n * @function hasFlavorIds\n * @returns {boolean} Is source ha flavor IDs\n */\n hasFlavorIds(): boolean {\n return !!this.flavorIds && this.flavorIds.length > 0;\n }\n\n /**\n * Returns source desired protocol if supported\n * @param {string} protocol - the desired protocol for the source (base play url protocol)\n * @returns {string} - protocol if protocol is in the protocols list - if not empty string returned\n */\n getProtocol(protocol: string): string {\n let returnValue: string = \"\";\n if (this.protocols && this.protocols.length > 0) {\n let protocolsArr: Array = this.protocols.split(\",\");\n protocolsArr.forEach((p) => {\n if (p == protocol) {\n returnValue = p;\n }\n });\n }\n else if (protocol == \"http\") {\n return protocol;\n }\n return returnValue;\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-playback-source.js","//@flow\nimport OvpService from '../services/ovp-service'\nimport MultiRequestBuilder from '../../multi-request-builder'\nimport {MultiRequestResult} from '../../multi-request-builder'\n\n/**\n * Data loaders manager\n * @classdesc\n */\nexport default class DataLoaderManager {\n /**\n * @member - Lodaers response map index\n * @type {Map>}\n * @private\n * @static\n */\n static _loadersResponseMap: Map> = new Map();\n /**\n * @member - Loaders multi request\n * @type {MultiRequestBuilder}\n * @private\n */\n _multiRequest: MultiRequestBuilder;\n /**\n * @member - Loaders multi response\n * @type {MultiRequestResult}\n * @private\n */\n _multiResponse: MultiRequestResult;\n /**\n * @member - Loaders to execute\n * @type {Map}\n * @private\n */\n _loaders: Map = new Map();\n\n /**\n * @constructor\n * @param {string} partnerID Then partner ID\n * @param {string} ks The ks\n */\n constructor(partnerID: number, ks: string = \"\") {\n this._multiRequest = OvpService.getMultirequest(ks, partnerID);\n }\n\n /**\n * Add loader too execution loaders map\n * @function\n * @param {Function} loader Loader to add\n * @param {Object} params Loader params\n * @returns {void}\n */\n add(loader: Function, params: Object): void {\n let execution_loader = new loader(params);\n if (execution_loader.isValid()) {\n this._loaders.set(loader.id, execution_loader);\n //Get the start index from the multiReqeust before adding current execution_loader requests\n let startIndex = this._multiRequest.requests.length;\n //Get the requests\n let requests = execution_loader.requests;\n //Add requests to muktiRequest queue\n requests.forEach((request) => {\n this._multiRequest.add(request);\n });\n //Create range array of current execution_loader requests\n let executionLoaderResponseMap = Array.from(new Array(requests.length), (val, index) => index + startIndex);\n //Add to map\n DataLoaderManager._loadersResponseMap.set(loader.id, executionLoaderResponseMap);\n }\n }\n\n /**\n * Get data from all loaders using multi request\n * @function\n * @returns {Promise} Promise\n */\n fetchData(): Promise {\n return new Promise((resolve, reject) => {\n this._multiRequest.execute()\n .then(response => {\n this._multiResponse = response;\n if (!response.success) {\n reject(response);\n }\n else {\n let preparedData: Object = this.prepareData(response);\n if (preparedData.success) {\n resolve(this._loaders);\n }\n else {\n reject({success: false, data: preparedData.error});\n }\n }\n },\n err => {\n reject(err);\n });\n });\n }\n\n prepareData(response: MultiRequestResult): Object {\n this._loaders.forEach(function (loader, name) {\n let loaderDataIndexes = DataLoaderManager._loadersResponseMap.get(name);\n try {\n if (loaderDataIndexes != null) {\n loader.response = (response.results.slice(loaderDataIndexes[0], loaderDataIndexes[loaderDataIndexes.length - 1] + 1));\n }\n }\n catch (err) {\n return {success: false, error: err};\n }\n });\n return {success: true, data: this._loaders};\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/loaders/data-loader-manager.js","//@flow\n\nimport RequestBuilder from '../../request-builder'\nimport BaseEntryService from '../services/base-entry-service'\nimport MetaDataService from '../services/meta-data-service'\nimport Configuration from '../config'\nimport KalturaPlaybackContext from '../response-types/kaltura-playback-context'\nimport KalturaMetadataListResponse from '../response-types/kaltura-metadata-list-response'\nimport KalturaBaseEntryListResponse from '../response-types/kaltura-base-entry-list-response'\n\nconst config = Configuration.get();\n\n/**\n * Media entry loader\n * @classdesc\n */\nexport default class MediaEntryLoader implements ILoader {\n static get id(): string {\n return \"media\";\n }\n\n _entryId: string;\n _requests: Array;\n _response: any = {};\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n constructor(params: Object) {\n this.requests = this.buildRequests(params);\n this._entryId = params.entryId;\n }\n\n set requests(requests: Array) {\n this._requests = requests;\n }\n\n get requests(): Array {\n return this._requests;\n }\n\n set response(response: any) {\n let mediaEntryResponse: KalturaBaseEntryListResponse = new KalturaBaseEntryListResponse(response[0].data);\n this._response.entry = mediaEntryResponse.entries[0];\n this._response.playBackContextResult = new KalturaPlaybackContext(response[1].data);\n this._response.metadataListResult = new KalturaMetadataListResponse(response[2].data);\n }\n\n get response(): any {\n return this._response;\n }\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n buildRequests(params: Object): Array {\n let requests: Array = [];\n requests.push(BaseEntryService.list(config.beUrl, params.ks, params.entryId));\n requests.push(BaseEntryService.getPlaybackContext(config.beUrl, params.ks, params.entryId));\n requests.push(MetaDataService.list(config.beUrl, params.ks, params.entryId));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n isValid(): boolean {\n return !!this._entryId;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/loaders/media-entry-loader.js","//@flow\nimport SessionService from '../services/session-service'\nimport Configuration from '../config'\nimport RequestBuilder from '../../request-builder'\n\nconst config = Configuration.get();\n/**\n * Media entry loader\n * @classdesc\n */\nexport default class SessionLoader implements ILoader {\n static get id(): string {\n return \"session\";\n }\n\n /**\n * @member - partner ID\n * @type {number}\n * @private\n */\n _partnerId: number;\n _requests: Array;\n _response: any = {};\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n constructor(params: Object) {\n this.requests = this.buildRequests(params);\n this._partnerId = params.partnerId;\n }\n\n set requests(requests: Array) {\n this._requests = requests;\n }\n\n get requests(): Array {\n return this._requests;\n }\n\n set response(response: any) {\n this._response.ks = response[0].data.ks;\n }\n\n get response(): any {\n return this._response.ks;\n }\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n buildRequests(params: Object): Array {\n let requests: Array = [];\n requests.push(SessionService.anonymousSession(config.beUrl, params.partnerId));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n isValid(): boolean {\n return !!this._partnerId;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/loaders/session-loader.js","//@flow\nimport UiConfService from '../services/ui-conf-service'\nimport KalturaUiConfResponse from '../response-types/kaltura-ui-conf-response'\nimport Configuration from '../config'\nimport RequestBuilder from '../../request-builder'\n\nconst config = Configuration.get();\n\nexport default class UiConfigLoader implements ILoader {\n static get id(): string {\n return \"uiConf\";\n }\n\n /**\n * @member - uiConf ID\n * @type {number}\n * @private\n */\n _uiConfId: number;\n _requests: Array;\n _response: any = {};\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n constructor(params: Object) {\n this.requests = this.buildRequests(params);\n this._uiConfId = params.uiConfId;\n }\n\n set requests(requests: Array) {\n this._requests = requests;\n }\n\n get requests(): Array {\n return this._requests;\n }\n\n set response(response: any) {\n this._response.uiConf = new KalturaUiConfResponse(response[0].data);\n }\n\n get response(): any {\n if (this._response != null && this._response.uiConf != null && this._response.uiConf.config != null)\n try {\n return JSON.parse(this._response.uiConf.config).plugins;\n }\n catch (err) {\n return null;\n }\n else\n return null;\n }\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n buildRequests(params: Object): Array {\n let requests: Array = [];\n requests.push(UiConfService.get(config.beUrl, params.ks, params.uiConfId));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n isValid(): boolean {\n return !!this._uiConfId;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/loaders/ui-config-loader.js","//@flow\nimport KalturaPlaybackSource from './response-types/kaltura-playback-source'\nimport KalturaFlavorAsset from './response-types/kaltura-flavor-asset'\nimport KalturaMetadataListResponse from './response-types/kaltura-metadata-list-response'\nimport PlaySourceUrlBuilder from \"./play-source-url-builder\"\nimport XmlParser from '../xml-parser'\nimport {MediaEntryTypes, EntryTypes, MediaTypes, DrmScheme} from '../enums'\nimport Logger from '../../util/logger'\nimport Configuration from './config'\nimport {MediaFormats} from '../../entities/media-format'\nimport MediaEntry from '../../entities/media-entry'\nimport Drm from '../../entities/drm'\nimport MediaSource from '../../entities/media-source'\nimport MediaSources from '../../entities/media-sources'\n\nconst config = Configuration.get();\n/**\n * @constant\n */\nconst logger = Logger.get(\"OvpProvider\");\n\n/**\n * @constant\n * @type {Map}\n */\nconst SUPPORTED_FORMATS: Map = new Map([\n [\"mpegdash\", MediaFormats.dash],\n [\"applehttp\", MediaFormats.hls],\n [\"url\", MediaFormats.mp4]\n]);\n\n/**\n * Ovp provider parser\n * @classdesc\n */\nexport default class ProviderParser {\n\n /**\n * Returns parsed media entry by given OVP response objects\n * @function getMediaEntry\n * @param {string} ks - The ks\n * @param {number} partnerID - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {any} mediaEntryResponse - The media entry response\n * @returns {MediaEntry} - The media entry\n * @static\n * @public\n */\n static getMediaEntry(ks: string, partnerID: number, uiConfId: number, mediaEntryResponse: any): MediaEntry {\n let mediaEntry: MediaEntry = new MediaEntry();\n let entry = mediaEntryResponse.entry;\n let playbackContext = mediaEntryResponse.playBackContextResult;\n let metadataList = mediaEntryResponse.metadataListResult;\n let kalturaSources: Array = playbackContext.sources;\n let sources: MediaSources = ProviderParser._getParsedSources(kalturaSources, ks, partnerID, uiConfId, entry, playbackContext);\n\n mediaEntry.sources = sources;\n\n let metadata: Object = this._parseMetaData(metadataList);\n mediaEntry.metaData = metadata;\n mediaEntry.id = entry.id;\n mediaEntry.name = entry.name;\n mediaEntry.duration = entry.duration;\n mediaEntry.metaData[\"description\"] = entry.description;\n mediaEntry.metaData[\"poster\"] = entry.poster;\n\n let type: MediaEntryType = MediaEntryTypes.Unknown;\n\n switch (entry.entryType) {\n case MediaTypes.IMAGE.value:\n type = MediaEntryTypes.Image;\n break;\n case MediaTypes.AUDIO.value:\n type = MediaEntryTypes.Audio;\n break;\n default:\n switch (entry.type) {\n case EntryTypes.MEDIA_CLIP.value:\n type = MediaEntryTypes.Vod;\n break;\n case EntryTypes.LIVE_STREAM.value:\n case EntryTypes.LIVE_CHANNEL.value:\n type = MediaEntryTypes.Live;\n break;\n default:\n type = MediaEntryTypes.Unknown;\n }\n }\n mediaEntry.type = type;\n\n return mediaEntry;\n }\n\n /**\n * Returns the parsed sources\n * @function _getParsedSources\n * @param {Array} kalturaSources - The kaltura sources\n * @param {string} ks - The ks\n * @param {number} partnerID - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {Object} entry - The entry\n * @param {Object} playbackContext - The playback context\n * @return {MediaSources} - A media sources\n * @static\n * @private\n */\n static _getParsedSources(kalturaSources: Array, ks: string, partnerID: number, uiConfId: number, entry: Object, playbackContext: Object): MediaSources {\n let sources: MediaSources = new MediaSources();\n\n let addAdaptiveSource = function (source: KalturaPlaybackSource): void {\n let parsedSource = ProviderParser._parseAdaptiveSource(source, playbackContext.flavorAssets, ks, partnerID, uiConfId, entry.id);\n let sourceFormat = SUPPORTED_FORMATS.get(source.format);\n sources.map(parsedSource, sourceFormat);\n };\n\n let parseAdaptiveSources = function (): void {\n kalturaSources.filter((source) => !ProviderParser._isProgressiveSource(source)).forEach(addAdaptiveSource);\n };\n\n let parseProgressiveSources = function (): void {\n let progressiveSource = kalturaSources.find(ProviderParser._isProgressiveSource);\n sources.progressive = ProviderParser._parseProgressiveSources(progressiveSource, playbackContext.flavorAssets, ks, partnerID, uiConfId, entry.id);\n };\n\n if (kalturaSources && kalturaSources.length > 0) {\n parseAdaptiveSources();\n parseProgressiveSources();\n }\n\n return sources;\n }\n\n /**\n * Returns a parsed adaptive source\n * @function _parseAdaptiveSource\n * @param {KalturaPlaybackSource} kalturaSource - A kaltura source\n * @param {Array} flavorAssets - The flavor Assets of the kaltura source\n * @param {string} ks - The ks\n * @param {number} partnerID - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {string} entryId - The entry id\n * @returns {MediaSource} - The parsed adaptive kalturaSource\n * @static\n * @private\n */\n static _parseAdaptiveSource(kalturaSource: ?KalturaPlaybackSource, flavorAssets: Array, ks: string, partnerID: number, uiConfId: number, entryId: string): MediaSource {\n let mediaSource: MediaSource = new MediaSource();\n if (kalturaSource) {\n let playUrl: string = \"\";\n let mediaFormat = SUPPORTED_FORMATS.get(kalturaSource.format);\n // in case playbackSource doesn't have flavors we don't need to build the url and we'll use the provided one.\n if (kalturaSource.hasFlavorIds()) {\n let extension: string = \"\";\n if (!mediaFormat) {\n if (flavorAssets && flavorAssets.length > 0) {\n extension = flavorAssets[0].fileExt;\n }\n }\n else {\n extension = mediaFormat.pathExt;\n mediaSource.mimetype = mediaFormat.mimeType;\n }\n\n playUrl = PlaySourceUrlBuilder.build({\n entryId: entryId,\n flavorIds: kalturaSource.flavorIds,\n format: kalturaSource.format,\n ks: ks,\n partnerId: partnerID,\n uiConfId: uiConfId,\n extension: extension,\n protocol: kalturaSource.getProtocol(this._getBaseProtocol())\n });\n\n }\n else {\n playUrl = kalturaSource.url;\n }\n\n if (playUrl === \"\") {\n logger.error(`failed to create play url from source, discarding source: (${entryId}_${kalturaSource.deliveryProfileId}), ${kalturaSource.format}.`);\n return mediaSource;\n }\n\n mediaSource.url = playUrl;\n mediaSource.id = entryId + \"_\" + kalturaSource.deliveryProfileId + \",\" + kalturaSource.format;\n if (kalturaSource.hasDrmData()) {\n let drmParams: Array = [];\n kalturaSource.drm.forEach((drm) => {\n drmParams.push(new Drm(drm.licenseURL, DrmScheme[drm.scheme], drm.certificate));\n });\n mediaSource.drmData = drmParams;\n }\n }\n return mediaSource;\n }\n\n /**\n * Returns parsed progressive sources\n * @function _parseProgressiveSources\n * @param {KalturaPlaybackSource} kalturaSource - A kaltura source\n * @param {Array} flavorAssets - The flavor Assets of the kaltura source\n * @param {string} ks - The ks\n * @param {number} partnerID - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {string} entryId - The entry id\n * @returns {Array} - The parsed progressive kalturaSources\n * @static\n * @private\n */\n static _parseProgressiveSources(kalturaSource: ?KalturaPlaybackSource, flavorAssets: Array, ks: string, partnerID: number, uiConfId: number, entryId: string): Array {\n let sources = [];\n if (kalturaSource) {\n let protocol = kalturaSource.getProtocol(this._getBaseProtocol());\n let format = kalturaSource.format;\n let sourceId = kalturaSource.deliveryProfileId + \",\" + kalturaSource.format;\n flavorAssets.map((flavor) => {\n if (flavor.height && flavor.width) {\n let mediaSource: MediaSource = new MediaSource();\n mediaSource.id = flavor.id + sourceId;\n mediaSource.mimetype = 'video/mp4';\n mediaSource.height = flavor.height;\n mediaSource.width = flavor.width;\n mediaSource.bandwidth = flavor.bitrate * 1024;\n mediaSource.label = flavor.label || flavor.language;\n mediaSource.url = PlaySourceUrlBuilder.build({\n entryId: entryId,\n flavorIds: flavor.id,\n format: format,\n ks: ks,\n partnerId: partnerID,\n uiConfId: uiConfId,\n extension: 'mp4',\n protocol: protocol\n });\n sources.push(mediaSource);\n }\n });\n }\n return sources;\n }\n\n /**\n * @function _isProgressiveSource\n * @param {KalturaPlaybackSource} source - The kaltura source\n * @return {boolean} - Is progressive source\n * @static\n * @private\n */\n static _isProgressiveSource(source: KalturaPlaybackSource): boolean {\n let sourceFormat = SUPPORTED_FORMATS.get(source.format);\n return !!sourceFormat && sourceFormat.name === 'mp4';\n }\n\n /**\n * Ovp metadata parser\n * @function _parseMetaData\n * @param {KalturaMetadataListResponse} metadataList The metadata list\n * @returns {Map} Parsed metadata\n * @static\n * @private\n */\n static _parseMetaData(metadataList: KalturaMetadataListResponse): Map {\n let metadata: Object = {};\n if (metadataList && metadataList.metas && metadataList.metas.length > 0) {\n metadataList.metas.forEach((meta) => {\n let metaXml: Object;\n let domParser: DOMParser = new DOMParser();\n meta.xml = meta.xml.replace(/\\r?\\n|\\r/g, \"\");\n meta.xml = meta.xml.replace(/>\\s*/g, '>');\n meta.xml = meta.xml.replace(/>\\s*/g, '>');\n metaXml = domParser.parseFromString(meta.xml, 'text/xml');\n let metasObj: Object = XmlParser.xmlToJson(metaXml);\n let metaKeys = Object.keys(metasObj.metadata);\n metaKeys.forEach((key) => {\n metadata[key] = metasObj.metadata[key][\"#text\"];\n })\n })\n }\n return metadata;\n }\n\n /**\n * Returns the base protocol\n * @function _getBaseProtocol\n * @returns {string} - The base protocol\n * @static\n * @private\n */\n static _getBaseProtocol(): string {\n let splittedUrl: Array = config.baseUrl.split(\"/\");\n let baseProtocol: string;\n if (splittedUrl && splittedUrl.length > 0) {\n baseProtocol = splittedUrl[0].substring(0, splittedUrl[0].length - 1);\n }\n else {\n baseProtocol = \"http\";\n }\n return baseProtocol;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/provider-parser.js","//@flow\nexport class MediaFormats {\n static dash: MediaFormat = {\n name: 'dash',\n mimeType: \"application/dash+xml\",\n pathExt: \"mpd\"\n };\n\n static hls: MediaFormat = {\n name: 'hls',\n mimeType: \"application/x-mpegURL\",\n pathExt: \"m3u8\"\n };\n\n static wvm: MediaFormat = {\n name: 'wvm',\n mimeType: \"video/wvm\",\n pathExt: \"wvm\"\n };\n\n static mp4: MediaFormat = {\n name: 'mp4',\n mimeType: \"video/mp4\",\n pathExt: \"mp4\"\n };\n\n static mp3: MediaFormat = {\n name: 'mp3',\n mimeType: \"audio/mpeg\",\n pathExt: \"mp3\"\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./entities/media-format.js","//@flow\nimport Logger from '../../util/logger'\nimport ProviderParser from './provider-parser'\nimport DataLoaderManager from './loaders/data-loader-manager'\nimport MediaEntryLoader from './loaders/media-entry-loader'\nimport SessionLoader from './loaders/session-loader'\nimport UiConfigLoader from './loaders/ui-config-loader'\nimport Configuration from './config'\nimport MediaEntry from '../../entities/media-entry'\nimport MediaSources from '../../entities/media-sources'\n/**\n * @constant\n */\nconst logger = Logger.get(\"OvpProvider\");\n\ntype playerConfig = {\n id: string,\n name: string,\n session: Object,\n sources: MediaSources,\n duration: number,\n type: string,\n metadata: Object,\n plugins: Object\n};\n\n/**\n * Ovp provider\n * @classdesc\n */\nexport class OvpProvider {\n /**\n * @member - ks\n * @type {string}\n */\n ks: string;\n /**\n * @member - partner ID\n * @type {number}\n */\n partnerID: number;\n /**\n * @member - is anonymous\n * @type {boolean}\n * @private\n */\n _isAnonymous: boolean;\n /**\n * @member - uiConf ID\n * @type {number}\n * @private\n */\n _uiConfId: number;\n /**\n * @member - Data loader\n * @type {DataLoaderManager}\n * @private\n */\n _dataLoader: DataLoaderManager;\n\n /**\n * @constructor\n * @param {number} partnerID The partner ID\n * @param {string} [ks=\"\"] The provider ks (has empty string as default value)\n * @param {Object} [config] The provider config(optional)\n */\n constructor(partnerID: number, ks: string = \"\", config?: Object) {\n this.partnerID = partnerID;\n this.ks = ks;\n this._isAnonymous = !this.ks;\n Configuration.set(config);\n }\n\n /**\n * Returns player json configuration\n * @function getConfig\n * @param {string} entryId The entry ID\n * @param {number} uiConfId The uiConf ID\n * @returns {Promise} The provider config object as promise\n */\n getConfig(entryId?: string, uiConfId?: number): Promise {\n if (uiConfId != null) {\n this._uiConfId = uiConfId;\n }\n this._dataLoader = new DataLoaderManager(this.partnerID, this.ks);\n return new Promise((resolve, reject) => {\n if (this.validateParams(entryId, uiConfId)) {\n let ks: string = this.ks;\n if (!ks) {\n ks = \"{1:result:ks}\";\n this._dataLoader.add(SessionLoader, {partnerId: this.partnerID});\n }\n this._dataLoader.add(MediaEntryLoader, {entryId: entryId, ks: ks});\n this._dataLoader.add(UiConfigLoader, {uiConfId: uiConfId, ks: ks});\n this._dataLoader.fetchData()\n .then(response => {\n resolve(this.parseDataFromResponse(response));\n },\n err => {\n reject(err);\n });\n }\n else {\n reject({success: false, data: \"Missing mandatory parameter\"});\n }\n });\n }\n\n /**\n * Parses BE data to json configuration object\n * @function parseDataFromResponse\n * @param {Map} data The data to parse\n * @returns {Object} The parsed config object\n */\n parseDataFromResponse(data: Map): Object {\n logger.debug(\"Data parsing started\");\n let config: playerConfig = {\n id: \"\",\n name: \"\",\n session: {\n partnerID: this.partnerID,\n uiConfID: this._uiConfId,\n },\n sources: new MediaSources(),\n duration: 0,\n type: \"Unknown\",\n metadata: {},\n plugins: {}\n };\n if (data != null) {\n if (data.has(SessionLoader.id)) {\n let sessionLoader = data.get(SessionLoader.id);\n if (sessionLoader != null && sessionLoader.response != null) {\n this.ks = sessionLoader.response;\n config.session.ks = this.ks;\n }\n }\n if (data.has(UiConfigLoader.id)) {\n let uiConfLoader = data.get(UiConfigLoader.id);\n let pluginsJson: Object = {};\n if (uiConfLoader != null) {\n pluginsJson = uiConfLoader.response;\n }\n config.plugins = pluginsJson;\n }\n if (data.has(MediaEntryLoader.id)) {\n let mediaLoader = data.get(MediaEntryLoader.id);\n if (mediaLoader != null && mediaLoader.response != null) {\n let mediaEntry: MediaEntry = ProviderParser.getMediaEntry(this._isAnonymous ? \"\" : this.ks, this.partnerID, this._uiConfId, mediaLoader.response);\n config.id = mediaEntry.id;\n config.name = mediaEntry.name;\n config.sources = mediaEntry.sources;\n config.duration = mediaEntry.duration;\n config.type = mediaEntry.type;\n config.metadata = mediaEntry.metaData;\n }\n }\n }\n logger.debug(\"Data parsing finished\", config);\n return (config);\n }\n\n /**\n * Parameters validation function\n * @param {string} entryId The entry ID\n * @param {number} uiConfId The uiConfID\n * @returns {boolean} Is valid params\n */\n validateParams(entryId?: string, uiConfId?: number): boolean {\n return !!entryId || !!uiConfId;\n }\n\n}\n\nexport default OvpProvider;\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/ovp-provider.js","//@flow\nimport Configuration from './config'\n\nconst config = Configuration.get();\n\n/**\n * Media source url builder\n * @classdesc\n */\nexport default class PlaySourceUrlBuilder {\n\n /**\n * Returns source url by given url params\n * @function build\n * @param {Object} urlParams The params\n * @returns {string} The URL\n * @static\n */\n static build(urlParams: Object): string {\n let baseUrl: string = config.baseUrl;\n let partnerId: string = urlParams.partnerId;\n let entryId: string = urlParams.entryId;\n let ks: string = urlParams.ks;\n let uiConfId: string = urlParams.uiConfId;\n let format: string = urlParams.format;\n let protocol: string = urlParams.protocol;\n let extension: string = urlParams.extension;\n let flavorIds: string = urlParams.flavorIds;\n\n if (baseUrl == \"\" && partnerId == \"\" && entryId == \"\" && extension == \"\" && format == \"\") {\n return \"\";\n }\n\n let playUrl = baseUrl;\n if (!baseUrl.endsWith(\"/\")) {\n playUrl += \"/\";\n }\n playUrl += \"p/\" + partnerId + \"/sp/\" + partnerId + \"00\" + \"/playManifest/entryId/\" + entryId + \"/protocol/\" + protocol + \"/format/\" + format;\n\n if (flavorIds != \"\") {\n playUrl += \"/flavorIds/\" + flavorIds;\n }\n else if (uiConfId != \"\") {\n playUrl += \"/uiConfId/\" + uiConfId;\n }\n\n if (ks != \"\") {\n playUrl += \"/ks/\" + ks;\n }\n\n playUrl += \"/a.\" + extension;\n\n if (uiConfId && flavorIds != \"\") {\n playUrl += \"?uiConfId=\" + uiConfId;\n }\n\n return playUrl;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/play-source-url-builder.js","//@flow\n\n/**\n * Ovp BE access control message\n * @classdesc\n */\nexport default class KalturaAccessControlMessage {\n /**\n * @member - The access control message\n * @type {string}\n */\n message: string;\n /**\n * @member - The access control message code\n * @@type {string}\n */\n code: string;\n\n /**\n * @constructor\n * @param {Object} data The json response\n */\n constructor(data: Object) {\n this.message = data.message;\n this.code = data.code\n }\n}\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-access-control-message.js","//@flow\nimport ServiceResult from '../../base-service-result'\nimport KalturaMediaEntry from './kaltura-media-entry'\n\n/**\n * Ovp BE BaseEntryList service response\n * @classdesc\n */\nexport default class KalturaBaseEntryListResponse extends ServiceResult {\n /**\n * @member - The total count\n * @type {number}\n */\n totalCount: number;\n /**\n * @member - The entries\n * @type {Array}\n */\n entries: Array;\n\n /**\n * @constructor\n * @param {Object} responseObj The json response\n */\n constructor(responseObj: Object) {\n super(responseObj);\n if (!this.hasError) {\n this.totalCount = responseObj.totalCount;\n if (this.totalCount > 0) {\n this.entries = [];\n responseObj.objects.map(entry => this.entries.push(new KalturaMediaEntry(entry)));\n }\n }\n }\n}\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-base-entry-list-response.js","//@flow\n\n/**\n * Ovp BE DrmPlaybackPluginData\n * @classdesc\n */\nexport default class KalturaDrmPlaybackPluginData {\n /**\n * @member - The drm scheme\n * @type {Scheme}\n */\n scheme: Scheme;\n\n /**\n * @member - The license URL\n * @type {string}\n */\n licenseURL: string;\n\n /**\n * @member - The drm certificate\n * @type {?string}\n */\n certificate: ?string;\n\n /**\n * @constructor\n * @param {Object} drm The json response\n */\n constructor(drm: any) {\n this.scheme = drm.scheme;\n this.licenseURL = drm.licenseURL;\n this.certificate = drm.certificate;\n }\n}\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-drm-playback-plugin-data.js","//@flow\n\n/**\n * Ovp BE MediaEntry\n * @classdesc\n */\nexport default class KalturaMediaEntry {\n /**\n * @member - The entry id\n * @type {string}\n */\n id: string;\n /**\n * @member - Entry name (Min 1 chars)\n * @type {string}\n */\n name: string;\n /**\n * @member - Entry description\n * @type {string}\n */\n description: string;\n /**\n * @member - The URL used for playback. This is not the download URL.\n * @type {string}\n */\n dataUrl: string;\n /**\n * @member - Comma separated flavor params ids that exists for this media entry\n * @type {string}\n */\n flavorParamsIds: string;\n /**\n * @member - The entry duration\n * @type {number}\n */\n duration: number;\n /**\n * @member - The type of the entry, this is auto filled by the derived entry object\n * @type {EntryType}\n */\n type: EntryType;\n /**\n * @member - The type of the entry, this is auto filled by the derived entry object (Image, Audio etc.)\n * @type {MediaType}\n */\n entryType: MediaType;\n /**\n * @member - Entry poster image\n * @type {string}\n */\n poster: string;\n\n /**\n * @constructor\n * @param {Object} entry The json response\n */\n constructor(entry: Object) {\n this.id = entry.id;\n this.name = entry.name;\n this.description = entry.description;\n this.dataUrl = entry.dataUrl;\n this.type = entry.type;\n this.entryType = entry.mediaType;\n this.flavorParamsIds = entry.flavorParamsIds;\n this.duration = entry.duration;\n this.poster = entry.thumbnailUrl;\n }\n}\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-media-entry.js","//@flow\n\n/**\n * Ovp BE Metadata\n * @classdesc\n */\nexport default class KalturaMetadata {\n id: number;\n metadataProfileId: number;\n metadataProfileVersion: number;\n metadataObjectType: MetadataObjectType;\n objectId: string;\n version: number;\n created: Date;\n updated: Date;\n status: MetadataStatus;\n /**\n * @member - The Metadata xml - represented as XML string\n * @type {string}\n */\n xml: string;\n\n /**\n * @constructor\n * @param {Object} data The response\n */\n constructor(data: Object) {\n this.id = data.id;\n this.metadataProfileId = data.metadataProfileId;\n this.metadataProfileVersion = data.metadataProfileVersion;\n this.metadataProfileId = data.metadataProfileId;\n this.metadataObjectType = data.metadataObjectType;\n this.objectId = data.objectId;\n this.version = data.version;\n this.created = new Date(0);\n this.created.setUTCSeconds(data.createdAt);\n this.updated = new Date(0);\n this.updated.setUTCSeconds(data.updatedAt);\n this.status = data.status;\n this.xml = data.xml;\n\n }\n}\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-metadata.js","//@flow\nimport ServiceResult from '../../base-service-result'\nimport KalturaAccessControlMessage from './kaltura-access-control-message'\nimport KalturaPlaybackSource from './kaltura-playback-source'\nimport KalturaRuleAction from './kaltura-rule-action'\nimport KalturaFlavorAsset from './kaltura-flavor-asset'\n\n/**\n * Ovp BE playback context response\n * @classdesc\n */\nexport default class KalturaPlaybackContext extends ServiceResult {\n /**\n * @member - The playback sources\n * @type {Array}\n */\n sources: Array = [];\n /**\n * @member - Array of actions as received from the rules that invalidated\n * @type {Array}\n */\n actions: Array = [];\n /**\n * @member - Array of actions as received from the rules that invalidated\n * @type {Array}\n */\n messages: Array = [];\n /**\n * @member - The flavor assets\n * @type {Array}\n */\n flavorAssets: Array = [];\n\n /**\n * @constructor\n * @param {Object} response The response\n */\n constructor(response: Object) {\n super(response);\n if (!this.hasError) {\n\n let messages = response.messages;\n if (messages) {\n messages.map(message => this.messages.push(new KalturaAccessControlMessage(message)));\n }\n\n let actions = response.actions;\n if (actions) {\n actions.map(action => this.actions.push(new KalturaRuleAction(action)));\n }\n\n let sources = response.sources;\n if (sources) {\n sources.map(source => this.sources.push(new KalturaPlaybackSource(source)));\n }\n\n let flavorAssets = response.flavorAssets;\n if (flavorAssets) {\n flavorAssets.map(flavor => this.flavorAssets.push(new KalturaFlavorAsset(flavor)));\n }\n }\n\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-playback-context.js","//@flow\n\n/**\n * Ovp BE rule action\n * @classdesc\n */\nexport default class KalturaRuleAction {\n /**\n * @member - The type of the action\n * @type {KalturaRuleActionType}\n */\n type: KalturaRuleActionType;\n\n /**\n * @constructor\n * @param {Object} data The response\n */\n constructor(data: Object) {\n this.type = data.type;\n }\n}\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-rule-action.js","//@flow\nimport ServiceResult from '../../base-service-result'\n\n/**\n * Ovp BE Ui config response\n * @classdesc\n */\nexport default class KalturaUiConfResponse extends ServiceResult {\n /**\n * @member -Name of the uiConf, this is not a primary key\n * @type {string}\n */\n name: string;\n /**\n * @member -Name of the uiConf, this is not a primary key\n * @type {string}\n */\n description: string;\n objTypeAsString: string;\n width: number;\n height: number;\n htmlParams: string;\n swfUrl: string;\n confFilePath: string;\n confFile: string;\n confFileFeatures: string;\n name: string;\n /**\n * @member -plugins configuration represented as Json string\n * @type {string}\n */\n config: string;\n confVars: string;\n useCdn: boolean;\n tags: string;\n swfUrlVersion: string;\n created: Date;\n updated: Date;\n html5Url: string;\n version: string;\n partnerTags: string;\n objType: UIConfType;\n creationMode: UIConfCreationMode;\n\n /**\n * @constructor\n * @param {Object} data The json response\n */\n constructor(data: Object) {\n super(data);\n if (!this.hasError) {\n this.name = data.name;\n\n this.description = data.description;\n this.objTypeAsString = data.objTypeAsString;\n this.width = data.width;\n this.height = data.height;\n this.htmlParams = data.htmlParams;\n this.swfUrl = data.swfUrl;\n this.confFilePath = data.confFilePath;\n this.confFile = data.confFile;\n this.confFileFeatures = data.confFileFeatures;\n this.config = data.config;\n this.confVars = data.confVars;\n this.useCdn = data.useCdn;\n this.tags = data.tags;\n this.swfUrlVersion = data.swfUrlVersion;\n this.created = new Date(0);\n this.created.setUTCSeconds(data.createdAt);\n this.updated = new Date(0);\n this.updated.setUTCSeconds(data.updatedAt);\n this.html5Url = data.description;\n this.version = data.description;\n this.partnerTags = data.description;\n this.objType = data.description;\n this.creationMode = data.description;\n }\n }\n}\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-ui-conf-response.js","//@flow\nimport OvpService from './ovp-service'\nimport RequestBuilder from '../../request-builder'\n\nconst SERVICE_NAME: string = \"baseEntry\";\n\n/**\n * Ovp BaseEntry service methods\n * @classdesc\n */\nexport default class BaseEntryService extends OvpService {\n\n /**\n * Creates an instance of RequestBuilder for baseentry.getPlaybackContext\n * @function getPlaybackContext\n * @param {string} baseUrl The service base URL\n * @param {string} ks The ks\n * @param {string} entryId The entry ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n static getPlaybackContext(baseUrl: string, ks: string, entryId: string): RequestBuilder {\n let request = new RequestBuilder();\n request.service = SERVICE_NAME;\n request.action = \"getPlaybackContext\";\n request.method = \"POST\";\n request.baseUrl = baseUrl;\n request.tag = \"baseEntry-getPlaybackContext\";\n let contextDataParams = {objectType: \"KalturaContextDataParams\", flavorTags: \"all\"};\n let params = {entryId: entryId, ks: ks, contextDataParams: contextDataParams};\n request.params = params;\n return request;\n }\n\n /**\n * Creates an instance of RequestBuilder for baseentry.list\n * @function list\n * @param {string} baseUrl The base URL\n * @param {string} ks The ks\n * @param {string} entryId The entry ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n static list(baseUrl: string, ks: string, entryId: string): RequestBuilder {\n let request = new RequestBuilder();\n request.service = SERVICE_NAME;\n request.action = \"list\";\n request.method = \"POST\";\n request.baseUrl = baseUrl;\n request.tag = \"list\";\n request.params = BaseEntryService.getEntryListReqParams(entryId, ks);\n return request;\n }\n\n /**\n * Gets baseentry.list service params\n * @function getEntryListReqParams\n * @param {string} entryId The entry ID\n * @param {string} ks The ks\n * @returns {{ks: string, filter: {redirectFromEntryId: string}, responseProfile: {fields: string, type: number}}} The service params object\n * @static\n */\n static getEntryListReqParams(entryId: string, ks: string): any {\n let filterParams = {redirectFromEntryId: entryId};\n let responseProfileParams = {\n fields: \"id,name,description,thumbnailUrl,dataUrl,duration,msDuration,flavorParamsIds,mediaType,type,tags\",\n type: 1\n };\n return {ks: ks, filter: filterParams, responseProfile: responseProfileParams};\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/base-entry-service.js","//@flow\n\nimport OvpService from './ovp-service'\nimport RequestBuilder from '../../request-builder'\n\nconst SERVICE_NAME: string = \"metadata_metadata\";\n\n/**\n * Ovp metadata_metadata service methods\n * @classdesc\n */\nexport default class MetaDataService extends OvpService {\n /**\n * Creates an instance of RequestBuilder for metadata_metadata.list\n * @function getPlaybackContext\n * @param {string} baseUrl The service base URL\n * @param {string} ks The ks\n * @param {string} entryId The entry ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n static list(baseUrl: string, ks: string, entryId: string) {\n let request = new RequestBuilder();\n request.service = SERVICE_NAME;\n request.action = \"list\";\n request.method = \"POST\";\n request.baseUrl = baseUrl;\n request.tag = \"metadata_metadata-list\";\n let filter = {objectType: \"KalturaMetadataFilter\", objectIdEqual: entryId, metadataObjectTypeEqual: \"1\"};\n let params = {filter: filter, ks: ks};\n request.params = params;\n return request;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/meta-data-service.js","//@flow\n\nimport OvpService from './ovp-service'\nimport RequestBuilder from '../../request-builder'\n\nconst SERVICE_NAME: string = \"session\";\n\n/**\n * Ovp session service methods\n * @classdesc\n */\nexport default class SessionService extends OvpService {\n /**\n * Creates an instance of RequestBuilder for session.startWidgetSession\n * @function anonymousSession\n * @param {string} baseUrl The service base URL\n * @param {string} partnerId The partner ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n static anonymousSession(baseUrl: string, partnerId: number) {\n let request = new RequestBuilder();\n request.service = SERVICE_NAME;\n request.action = \"startWidgetSession\";\n request.method = \"POST\";\n request.baseUrl = baseUrl;\n request.tag = \"session-startWidget\";\n request.params = {widgetId: \"_\" + partnerId};\n return request;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/session-service.js","//@flow\n\nimport OvpService from './ovp-service'\nimport RequestBuilder from '../../request-builder'\n\nconst SERVICE_NAME: string = \"uiconf\";\n\n/**\n * Ovp uiconf service methods\n * @classdesc\n */\nexport default class UiConfService extends OvpService {\n /**\n * Creates an instance of RequestBuilder for uiconf.get\n * @function get\n * @param {string} baseUrl The service base URL\n * @param {string} ks The ks\n * @param {string} uiConfID The uiConf ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n static get(baseUrl: string, ks: string, uiConfID: number) {\n let request = new RequestBuilder();\n request.service = SERVICE_NAME;\n request.action = \"get\";\n request.method = \"POST\";\n request.baseUrl = baseUrl;\n request.tag = \"uiconf-get\";\n let responseProfileParams = {\n fields: \"config\",\n type: 1\n };\n request.params = {id: uiConfID, responseProfile: responseProfileParams, ks: ks};\n return request;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/ui-conf-service.js","//@flow\n\n/**\n * Xml parser\n * @classdesc\n */\nexport default class XmlParser {\n /**\n * Parses xml string to json object\n * @param {string} xml The xml to parse\n * @returns {{}} The parsed xml as Json object\n * @static\n */\n static xmlToJson(xml: Object) {\n let obj = {};\n if (xml.nodeType == 1) {\n if (xml.attributes.length > 0) {\n obj[\"@attributes\"] = {};\n for (let j = 0; j < xml.attributes.length; j++) {\n let attribute = xml.attributes.item(j);\n obj[\"@attributes\"][attribute.nodeName] = attribute.nodeValue;\n }\n }\n }\n else if (xml.nodeType == 3) {\n obj = xml.nodeValue;\n }\n if (xml.hasChildNodes()) {\n for (let i = 0; i < xml.childNodes.length; i++) {\n let item = xml.childNodes.item(i);\n let nodeName = item.nodeName;\n if (typeof (obj[nodeName]) == \"undefined\") {\n obj[nodeName] = this.xmlToJson(item);\n }\n else {\n if (typeof (obj[nodeName].push) == \"undefined\") {\n let old = obj[nodeName];\n obj[nodeName] = [];\n obj[nodeName].push(old);\n }\n obj[nodeName].push(this.xmlToJson(item));\n }\n }\n }\n return obj;\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/xml-parser.js"],"sourceRoot":""} \ No newline at end of file diff --git a/flow-typed/types/enums.js b/flow-typed/types/enums.js index f1ccbb84..cd457600 100644 --- a/flow-typed/types/enums.js +++ b/flow-typed/types/enums.js @@ -9,3 +9,4 @@ declare type MediaType = { value: number }; declare type MediaEntryType = string; declare type UIConfType = number; declare type UIConfCreationMode = number; +declare type Scheme = string; diff --git a/src/entities/drm.js b/src/entities/drm.js index b0d174d5..7070d36d 100644 --- a/src/entities/drm.js +++ b/src/entities/drm.js @@ -1,7 +1,5 @@ //@flow -import {Scheme} from '../k-provider/enums'; - /** * Drm data * @classdesc @@ -19,13 +17,21 @@ export default class Drm { */ scheme: Scheme; + /** + * @member - The drm certificate + * @type {?string} + */ + certificate: ?string; + /** * @constructor * @param {string} licenseUrl - the license URL * @param {Scheme} scheme - the drm scheme + * @param {?string} certificate - the drm certificate */ - constructor(licenseUrl: string, scheme: Scheme) { + constructor(licenseUrl: string, scheme: Scheme, certificate: ?string) { this.licenseUrl = licenseUrl; this.scheme = scheme; + this.certificate = certificate; } } diff --git a/src/k-provider/enums.js b/src/k-provider/enums.js index ed1e336c..ed3315f4 100644 --- a/src/k-provider/enums.js +++ b/src/k-provider/enums.js @@ -1,11 +1,9 @@ //@flow -export class Scheme { - static PLAYREADY_CENC: string = "drm.PLAYREADY_CENC"; - static WIDEVINE_CENC: string = "drm.WIDEVINE_CENC"; - static FAIRPLAY: string = "fairplay.FAIRPLAY"; - static PLAYREADY: string = "playReady.PLAYREADY"; - static WIDEVINE: string = "widevine.WIDEVINE"; -} +export const DrmScheme = { + 'drm.PLAYREADY_CENC': 'com.microsoft.playready', + 'drm.WIDEVINE_CENC': 'com.widevine.alpha', + 'fairplay.FAIRPLAY': 'com.apple.fairplay' +}; export class KalturaRuleActionTypes { static DRM_POLICY: KalturaRuleActionType = "drm.DRM_POLICY"; diff --git a/src/k-provider/ovp/provider-parser.js b/src/k-provider/ovp/provider-parser.js index c9b513a2..7a39dffc 100644 --- a/src/k-provider/ovp/provider-parser.js +++ b/src/k-provider/ovp/provider-parser.js @@ -4,7 +4,7 @@ import KalturaFlavorAsset from './response-types/kaltura-flavor-asset' import KalturaMetadataListResponse from './response-types/kaltura-metadata-list-response' import PlaySourceUrlBuilder from "./play-source-url-builder" import XmlParser from '../xml-parser' -import {MediaEntryTypes, EntryTypes, MediaTypes} from '../enums' +import {MediaEntryTypes, EntryTypes, MediaTypes, DrmScheme} from '../enums' import Logger from '../../util/logger' import Configuration from './config' import {MediaFormats} from '../../entities/media-format' @@ -107,7 +107,7 @@ export default class ProviderParser { static _getParsedSources(kalturaSources: Array, ks: string, partnerID: number, uiConfId: number, entry: Object, playbackContext: Object): MediaSources { let sources: MediaSources = new MediaSources(); - let addAdaptiveSource = function(source: KalturaPlaybackSource): void{ + let addAdaptiveSource = function (source: KalturaPlaybackSource): void { let parsedSource = ProviderParser._parseAdaptiveSource(source, playbackContext.flavorAssets, ks, partnerID, uiConfId, entry.id); let sourceFormat = SUPPORTED_FORMATS.get(source.format); sources.map(parsedSource, sourceFormat); @@ -117,7 +117,7 @@ export default class ProviderParser { kalturaSources.filter((source) => !ProviderParser._isProgressiveSource(source)).forEach(addAdaptiveSource); }; - let parseProgressiveSources = function (): void{ + let parseProgressiveSources = function (): void { let progressiveSource = kalturaSources.find(ProviderParser._isProgressiveSource); sources.progressive = ProviderParser._parseProgressiveSources(progressiveSource, playbackContext.flavorAssets, ks, partnerID, uiConfId, entry.id); }; @@ -177,7 +177,7 @@ export default class ProviderParser { playUrl = kalturaSource.url; } - if (playUrl == "") { + if (playUrl === "") { logger.error(`failed to create play url from source, discarding source: (${entryId}_${kalturaSource.deliveryProfileId}), ${kalturaSource.format}.`); return mediaSource; } @@ -187,7 +187,7 @@ export default class ProviderParser { if (kalturaSource.hasDrmData()) { let drmParams: Array = []; kalturaSource.drm.forEach((drm) => { - drmParams.push(new Drm(drm.licenseURL, drm.scheme)); + drmParams.push(new Drm(drm.licenseURL, DrmScheme[drm.scheme], drm.certificate)); }); mediaSource.drmData = drmParams; } diff --git a/src/k-provider/ovp/response-types/kaltura-drm-playback-plugin-data.js b/src/k-provider/ovp/response-types/kaltura-drm-playback-plugin-data.js index 78619e3b..ab8e3049 100644 --- a/src/k-provider/ovp/response-types/kaltura-drm-playback-plugin-data.js +++ b/src/k-provider/ovp/response-types/kaltura-drm-playback-plugin-data.js @@ -1,5 +1,4 @@ //@flow -import {Scheme} from '../../enums' /** * Ovp BE DrmPlaybackPluginData @@ -18,6 +17,12 @@ export default class KalturaDrmPlaybackPluginData { */ licenseURL: string; + /** + * @member - The drm certificate + * @type {?string} + */ + certificate: ?string; + /** * @constructor * @param {Object} drm The json response @@ -25,6 +30,7 @@ export default class KalturaDrmPlaybackPluginData { constructor(drm: any) { this.scheme = drm.scheme; this.licenseURL = drm.licenseURL; + this.certificate = drm.certificate; } } diff --git a/test/src/k-provider/ovp/be-stubs.js b/test/src/k-provider/ovp/be-stubs.js index 4d9e63b6..93f7c4e1 100644 --- a/test/src/k-provider/ovp/be-stubs.js +++ b/test/src/k-provider/ovp/be-stubs.js @@ -338,7 +338,7 @@ let AnonymousMocEntryWithoutUIConfWithDrmData = [ "url": "https://cdnapisec.kaltura.com/p/1068292/sp/1068292/playManifest/entryId/1_rwbj3j0a/flavorIds/1_92dfyrz5,1_9dhh6m0i,1_zudouuah,1_r0wu6y77,1_oz343kla/deliveryProfileId/11311/protocol/https/format/applehttp/a.m3u8", "drm": [ { - "certificate": "MIIE8DCCA9igAwIBAgIIWErELxCBDA4wDQYJKoZIhvcNAQEFBQAwfzELMAkGA1UEBhMCVVMxEzARBgNVBAoMCkFwcGxlIEluYy4xJjAkBgNVBAsMHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MTMwMQYDVQQDDCpBcHBsZSBLZXkgU2VydmljZXMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTYxMTIzMDA0NDQyWhcNMTgxMTI0MDA0NDQyWjB0MQswCQYDVQQGEwJVUzEdMBsGA1UECgwUU3RhcndhdmUgQ29ycG9yYXRpb24xEzARBgNVBAsMCldLM1lFUlZKV0ExMTAvBgNVBAMMKEZhaXJQbGF5IFN0cmVhbWluZzogU3RhcndhdmUgQ29ycG9yYXRpb24wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKDqSYs/fp9+BOvrgvnwy0p9WQt7ZUrPV4/RfWjcwU3ndYSR6LtNEWlRjHU18OF8HsU678nMqsxRAFwv12Hdew4WoZ7AEdPTX2tOZkvHqgQczo0TKdtuKF3+SYPWiE2u3epFuTAldCkc5stXOwtPnutHsUm+SxWc+DPhMBO1ryBlAgMBAAGjggH9MIIB+TAdBgNVHQ4EFgQUDCgFiGFqGqz0LuWC9mVG3Zktm5IwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBRj5EdUy4VxWUYsg6zMRDFkZwMsvjCB4gYDVR0gBIHaMIHXMIHUBgkqhkiG92NkBQEwgcYwgcMGCCsGAQUFBwICMIG2DIGzUmVsaWFuY2Ugb24gdGhpcyBjZXJ0aWZpY2F0ZSBieSBhbnkgcGFydHkgYXNzdW1lcyBhY2NlcHRhbmNlIG9mIHRoZSB0aGVuIGFwcGxpY2FibGUgc3RhbmRhcmQgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdXNlLCBjZXJ0aWZpY2F0ZSBwb2xpY3kgYW5kIGNlcnRpZmljYXRpb24gcHJhY3RpY2Ugc3RhdGVtZW50cy4wNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL2NybC5hcHBsZS5jb20va2V5c2VydmljZXMuY3JsMA4GA1UdDwEB/wQEAwIFIDBGBgsqhkiG92NkBg0BAwEB/wQ0AXdxb2EwczF5bWZ4cG5vN2gwcnh0bXp4amJzb2psa3BndTh5eWRsa3d1Y3NxZXltcWZvNTA1BgsqhkiG92NkBg0BBAEB/wQjAW5kam03a3hsamFiandvaXU3NGRmeG1zdXkybHlsMmhhdGIwDQYJKoZIhvcNAQEFBQADggEBAC2i5fDiQClCkp9mIyWBW+ZyMlUiM3Wr5eui0dUvKwSBTc8pyv4m4f60X7JoN5iZykriSnF3zO2aNY43AQsTzIpGvQ9kSJVBdTO7u/UevlbRcHDHrSoQ/8fKSVKvx9Be1pIRgznBRqS+iV6V0572rZOuR0ZQf0nY5vtEHBN6kTZyhPYFuTE32f77E/dtv6XnZ6qB1OKtv483mjVLqQrI0IOl3LyMKgAJ51whloEJEJC6g8frCmwmTLsmmOR17wq24/6YKjGNM2NuSa7/7RqwdEKuqDzzVyh3Zafmtn8rlIptACGPYWnmAP2gnCzBO/V6AIQDf0JcZUpOb+GfhQ7M7ik=", + "certificate": "ABCD1234", "scheme": "fairplay.FAIRPLAY", "licenseURL": "https://udrmv3.kaltura.com//fps/license?custom_data=eyJjYV9zeXN0ZW0iOiJPVlAiLCJ1c2VyX3Rva2VuIjoiTlRBd1pqVmlaV1pqWTJOak5UUmtOR0V5TWpVMU1UZzRPR0UxTm1Vd05EbGpaV0prTXprMU1Yd3hNRFk0TWpreU96RXdOamd5T1RJN01UUTVNREUzTmpFME5qc3dPekUwT1RBd09EazNORFl1TURJeU5qc3dPM1pwWlhjNktpeDNhV1JuWlhRNk1UczciLCJhY2NvdW50X2lkIjoxMDY4MjkyLCJjb250ZW50X2lkIjoiMV9yd2JqM2owYSIsImZpbGVzIjoiMV85MmRmeXJ6NSwxXzlkaGg2bTBpLDFfenVkb3V1YWgsMV9yMHd1Nnk3NywxX296MzQza2xhIn0%3D&signature=jl09zYv64OyEfVUt85rlA0WnK1w%3D", "objectType": "KalturaFairPlayPlaybackPluginData" @@ -910,7 +910,7 @@ let EntryWithUIConfWithDrmData = [ "url": "https://cdnapisec.kaltura.com/p/1068292/sp/1068292/playManifest/entryId/1_rwbj3j0a/flavorIds/1_92dfyrz5,1_9dhh6m0i,1_zudouuah,1_r0wu6y77,1_oz343kla/deliveryProfileId/11311/protocol/https/format/applehttp/a.m3u8", "drm": [ { - "certificate": "MIIE8DCCA9igAwIBAgIIWErELxCBDA4wDQYJKoZIhvcNAQEFBQAwfzELMAkGA1UEBhMCVVMxEzARBgNVBAoMCkFwcGxlIEluYy4xJjAkBgNVBAsMHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MTMwMQYDVQQDDCpBcHBsZSBLZXkgU2VydmljZXMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTYxMTIzMDA0NDQyWhcNMTgxMTI0MDA0NDQyWjB0MQswCQYDVQQGEwJVUzEdMBsGA1UECgwUU3RhcndhdmUgQ29ycG9yYXRpb24xEzARBgNVBAsMCldLM1lFUlZKV0ExMTAvBgNVBAMMKEZhaXJQbGF5IFN0cmVhbWluZzogU3RhcndhdmUgQ29ycG9yYXRpb24wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKDqSYs/fp9+BOvrgvnwy0p9WQt7ZUrPV4/RfWjcwU3ndYSR6LtNEWlRjHU18OF8HsU678nMqsxRAFwv12Hdew4WoZ7AEdPTX2tOZkvHqgQczo0TKdtuKF3+SYPWiE2u3epFuTAldCkc5stXOwtPnutHsUm+SxWc+DPhMBO1ryBlAgMBAAGjggH9MIIB+TAdBgNVHQ4EFgQUDCgFiGFqGqz0LuWC9mVG3Zktm5IwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBRj5EdUy4VxWUYsg6zMRDFkZwMsvjCB4gYDVR0gBIHaMIHXMIHUBgkqhkiG92NkBQEwgcYwgcMGCCsGAQUFBwICMIG2DIGzUmVsaWFuY2Ugb24gdGhpcyBjZXJ0aWZpY2F0ZSBieSBhbnkgcGFydHkgYXNzdW1lcyBhY2NlcHRhbmNlIG9mIHRoZSB0aGVuIGFwcGxpY2FibGUgc3RhbmRhcmQgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdXNlLCBjZXJ0aWZpY2F0ZSBwb2xpY3kgYW5kIGNlcnRpZmljYXRpb24gcHJhY3RpY2Ugc3RhdGVtZW50cy4wNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL2NybC5hcHBsZS5jb20va2V5c2VydmljZXMuY3JsMA4GA1UdDwEB/wQEAwIFIDBGBgsqhkiG92NkBg0BAwEB/wQ0AXdxb2EwczF5bWZ4cG5vN2gwcnh0bXp4amJzb2psa3BndTh5eWRsa3d1Y3NxZXltcWZvNTA1BgsqhkiG92NkBg0BBAEB/wQjAW5kam03a3hsamFiandvaXU3NGRmeG1zdXkybHlsMmhhdGIwDQYJKoZIhvcNAQEFBQADggEBAC2i5fDiQClCkp9mIyWBW+ZyMlUiM3Wr5eui0dUvKwSBTc8pyv4m4f60X7JoN5iZykriSnF3zO2aNY43AQsTzIpGvQ9kSJVBdTO7u/UevlbRcHDHrSoQ/8fKSVKvx9Be1pIRgznBRqS+iV6V0572rZOuR0ZQf0nY5vtEHBN6kTZyhPYFuTE32f77E/dtv6XnZ6qB1OKtv483mjVLqQrI0IOl3LyMKgAJ51whloEJEJC6g8frCmwmTLsmmOR17wq24/6YKjGNM2NuSa7/7RqwdEKuqDzzVyh3Zafmtn8rlIptACGPYWnmAP2gnCzBO/V6AIQDf0JcZUpOb+GfhQ7M7ik=", + "certificate": "ABCD1234", "scheme": "fairplay.FAIRPLAY", "licenseURL": "https://udrmv3.kaltura.com//fps/license?custom_data=eyJjYV9zeXN0ZW0iOiJPVlAiLCJ1c2VyX3Rva2VuIjoiWlRGaU56azRNbU01TWpKaVl6a3dPRGxpTXpRelpUUTNZMkk0TXpJd1lUSXpNbVF6TVRNeFlud3hNRFk0TWpreU96RXdOamd5T1RJN01UUTVNREkxTWprNU1qc3dPekUwT1RBeE5qWTFPVEl1T0RVeU1Uc3dPM1pwWlhjNktpeDNhV1JuWlhRNk1UczciLCJhY2NvdW50X2lkIjoxMDY4MjkyLCJjb250ZW50X2lkIjoiMV9yd2JqM2owYSIsImZpbGVzIjoiMV85MmRmeXJ6NSwxXzlkaGg2bTBpLDFfenVkb3V1YWgsMV9yMHd1Nnk3NywxX296MzQza2xhIn0%3D&signature=AZaaKvEx5j8CAh6VMSZbGzmUK1A%3D", "objectType": "KalturaFairPlayPlaybackPluginData" @@ -1149,7 +1149,7 @@ let WrongUiConfID = [ "url": "https://cdnapisec.kaltura.com/p/1068292/sp/1068292/playManifest/entryId/1_rwbj3j0a/flavorIds/1_92dfyrz5,1_9dhh6m0i,1_zudouuah,1_r0wu6y77,1_oz343kla/deliveryProfileId/11311/protocol/https/format/applehttp/a.m3u8", "drm": [ { - "certificate": "MIIE8DCCA9igAwIBAgIIWErELxCBDA4wDQYJKoZIhvcNAQEFBQAwfzELMAkGA1UEBhMCVVMxEzARBgNVBAoMCkFwcGxlIEluYy4xJjAkBgNVBAsMHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MTMwMQYDVQQDDCpBcHBsZSBLZXkgU2VydmljZXMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTYxMTIzMDA0NDQyWhcNMTgxMTI0MDA0NDQyWjB0MQswCQYDVQQGEwJVUzEdMBsGA1UECgwUU3RhcndhdmUgQ29ycG9yYXRpb24xEzARBgNVBAsMCldLM1lFUlZKV0ExMTAvBgNVBAMMKEZhaXJQbGF5IFN0cmVhbWluZzogU3RhcndhdmUgQ29ycG9yYXRpb24wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKDqSYs/fp9+BOvrgvnwy0p9WQt7ZUrPV4/RfWjcwU3ndYSR6LtNEWlRjHU18OF8HsU678nMqsxRAFwv12Hdew4WoZ7AEdPTX2tOZkvHqgQczo0TKdtuKF3+SYPWiE2u3epFuTAldCkc5stXOwtPnutHsUm+SxWc+DPhMBO1ryBlAgMBAAGjggH9MIIB+TAdBgNVHQ4EFgQUDCgFiGFqGqz0LuWC9mVG3Zktm5IwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBRj5EdUy4VxWUYsg6zMRDFkZwMsvjCB4gYDVR0gBIHaMIHXMIHUBgkqhkiG92NkBQEwgcYwgcMGCCsGAQUFBwICMIG2DIGzUmVsaWFuY2Ugb24gdGhpcyBjZXJ0aWZpY2F0ZSBieSBhbnkgcGFydHkgYXNzdW1lcyBhY2NlcHRhbmNlIG9mIHRoZSB0aGVuIGFwcGxpY2FibGUgc3RhbmRhcmQgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdXNlLCBjZXJ0aWZpY2F0ZSBwb2xpY3kgYW5kIGNlcnRpZmljYXRpb24gcHJhY3RpY2Ugc3RhdGVtZW50cy4wNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL2NybC5hcHBsZS5jb20va2V5c2VydmljZXMuY3JsMA4GA1UdDwEB/wQEAwIFIDBGBgsqhkiG92NkBg0BAwEB/wQ0AXdxb2EwczF5bWZ4cG5vN2gwcnh0bXp4amJzb2psa3BndTh5eWRsa3d1Y3NxZXltcWZvNTA1BgsqhkiG92NkBg0BBAEB/wQjAW5kam03a3hsamFiandvaXU3NGRmeG1zdXkybHlsMmhhdGIwDQYJKoZIhvcNAQEFBQADggEBAC2i5fDiQClCkp9mIyWBW+ZyMlUiM3Wr5eui0dUvKwSBTc8pyv4m4f60X7JoN5iZykriSnF3zO2aNY43AQsTzIpGvQ9kSJVBdTO7u/UevlbRcHDHrSoQ/8fKSVKvx9Be1pIRgznBRqS+iV6V0572rZOuR0ZQf0nY5vtEHBN6kTZyhPYFuTE32f77E/dtv6XnZ6qB1OKtv483mjVLqQrI0IOl3LyMKgAJ51whloEJEJC6g8frCmwmTLsmmOR17wq24/6YKjGNM2NuSa7/7RqwdEKuqDzzVyh3Zafmtn8rlIptACGPYWnmAP2gnCzBO/V6AIQDf0JcZUpOb+GfhQ7M7ik=", + "certificate": "ABCD1234", "scheme": "fairplay.FAIRPLAY", "licenseURL": "https://udrmv3.kaltura.com//fps/license?custom_data=eyJjYV9zeXN0ZW0iOiJPVlAiLCJ1c2VyX3Rva2VuIjoiT0dVNU56YzJaVFkwTURkalpHSmpZVGsxT0RRMVkyWXpaakZpTWpNek9UZGxaV1U1T0RkbU9Yd3hNRFk0TWpreU96RXdOamd5T1RJN01UUTVNREkxTkRnd01Ec3dPekUwT1RBeE5qZzBNREF1TVRBMk16c3dPM1pwWlhjNktpeDNhV1JuWlhRNk1UczciLCJhY2NvdW50X2lkIjoxMDY4MjkyLCJjb250ZW50X2lkIjoiMV9yd2JqM2owYSIsImZpbGVzIjoiMV85MmRmeXJ6NSwxXzlkaGg2bTBpLDFfenVkb3V1YWgsMV9yMHd1Nnk3NywxX296MzQza2xhIn0%3D&signature=RW0rJqR9HuXDUlN8gqmDF08PMLE%3D", "objectType": "KalturaFairPlayPlaybackPluginData" diff --git a/test/src/k-provider/ovp/player-config-parsed.js b/test/src/k-provider/ovp/player-config-parsed.js index babcac3c..39ef58f8 100644 --- a/test/src/k-provider/ovp/player-config-parsed.js +++ b/test/src/k-provider/ovp/player-config-parsed.js @@ -139,12 +139,14 @@ let NoPluginsWithDrm = { "id": "1_rwbj3j0a_11331,mpegdash", "drmData": [ { + "certificate": undefined, "licenseUrl": "https://udrm.kaltura.com//cenc/playready/license?custom_data=eyJjYV9zeXN0ZW0iOiJPVlAiLCJ1c2VyX3Rva2VuIjoiTlRBd1pqVmlaV1pqWTJOak5UUmtOR0V5TWpVMU1UZzRPR0UxTm1Vd05EbGpaV0prTXprMU1Yd3hNRFk0TWpreU96RXdOamd5T1RJN01UUTVNREUzTmpFME5qc3dPekUwT1RBd09EazNORFl1TURJeU5qc3dPM1pwWlhjNktpeDNhV1JuWlhRNk1UczciLCJhY2NvdW50X2lkIjoxMDY4MjkyLCJjb250ZW50X2lkIjoiMV9yd2JqM2owYSIsImZpbGVzIjoiMV85MmRmeXJ6NSwxXzlkaGg2bTBpLDFfenVkb3V1YWgsMV9yMHd1Nnk3NywxX296MzQza2xhIn0%3D&signature=jl09zYv64OyEfVUt85rlA0WnK1w%3D", - "scheme": "drm.PLAYREADY_CENC" + "scheme": "com.microsoft.playready" }, { + "certificate": undefined, "licenseUrl": "https://udrm.kaltura.com//cenc/widevine/license?custom_data=eyJjYV9zeXN0ZW0iOiJPVlAiLCJ1c2VyX3Rva2VuIjoiTlRBd1pqVmlaV1pqWTJOak5UUmtOR0V5TWpVMU1UZzRPR0UxTm1Vd05EbGpaV0prTXprMU1Yd3hNRFk0TWpreU96RXdOamd5T1RJN01UUTVNREUzTmpFME5qc3dPekUwT1RBd09EazNORFl1TURJeU5qc3dPM1pwWlhjNktpeDNhV1JuWlhRNk1UczciLCJhY2NvdW50X2lkIjoxMDY4MjkyLCJjb250ZW50X2lkIjoiMV9yd2JqM2owYSIsImZpbGVzIjoiMV85MmRmeXJ6NSwxXzlkaGg2bTBpLDFfenVkb3V1YWgsMV9yMHd1Nnk3NywxX296MzQza2xhIn0%3D&signature=jl09zYv64OyEfVUt85rlA0WnK1w%3D", - "scheme": "drm.WIDEVINE_CENC" + "scheme": "com.widevine.alpha" } ] } @@ -156,8 +158,9 @@ let NoPluginsWithDrm = { "id": "1_rwbj3j0a_11311,applehttp", "drmData": [ { + "certificate": "ABCD1234", "licenseUrl": "https://udrmv3.kaltura.com//fps/license?custom_data=eyJjYV9zeXN0ZW0iOiJPVlAiLCJ1c2VyX3Rva2VuIjoiTlRBd1pqVmlaV1pqWTJOak5UUmtOR0V5TWpVMU1UZzRPR0UxTm1Vd05EbGpaV0prTXprMU1Yd3hNRFk0TWpreU96RXdOamd5T1RJN01UUTVNREUzTmpFME5qc3dPekUwT1RBd09EazNORFl1TURJeU5qc3dPM1pwWlhjNktpeDNhV1JuWlhRNk1UczciLCJhY2NvdW50X2lkIjoxMDY4MjkyLCJjb250ZW50X2lkIjoiMV9yd2JqM2owYSIsImZpbGVzIjoiMV85MmRmeXJ6NSwxXzlkaGg2bTBpLDFfenVkb3V1YWgsMV9yMHd1Nnk3NywxX296MzQza2xhIn0%3D&signature=jl09zYv64OyEfVUt85rlA0WnK1w%3D", - "scheme": "fairplay.FAIRPLAY" + "scheme": "com.apple.fairplay" } ] } @@ -383,12 +386,14 @@ let WithPluginsWithDrm = { "id": "1_rwbj3j0a_11331,mpegdash", "drmData": [ { + "certificate": undefined, "licenseUrl": "https://udrm.kaltura.com//cenc/playready/license?custom_data=eyJjYV9zeXN0ZW0iOiJPVlAiLCJ1c2VyX3Rva2VuIjoiWlRGaU56azRNbU01TWpKaVl6a3dPRGxpTXpRelpUUTNZMkk0TXpJd1lUSXpNbVF6TVRNeFlud3hNRFk0TWpreU96RXdOamd5T1RJN01UUTVNREkxTWprNU1qc3dPekUwT1RBeE5qWTFPVEl1T0RVeU1Uc3dPM1pwWlhjNktpeDNhV1JuWlhRNk1UczciLCJhY2NvdW50X2lkIjoxMDY4MjkyLCJjb250ZW50X2lkIjoiMV9yd2JqM2owYSIsImZpbGVzIjoiMV85MmRmeXJ6NSwxXzlkaGg2bTBpLDFfenVkb3V1YWgsMV9yMHd1Nnk3NywxX296MzQza2xhIn0%3D&signature=AZaaKvEx5j8CAh6VMSZbGzmUK1A%3D", - "scheme": "drm.PLAYREADY_CENC" + "scheme": "com.microsoft.playready" }, { + "certificate": undefined, "licenseUrl": "https://udrm.kaltura.com//cenc/widevine/license?custom_data=eyJjYV9zeXN0ZW0iOiJPVlAiLCJ1c2VyX3Rva2VuIjoiWlRGaU56azRNbU01TWpKaVl6a3dPRGxpTXpRelpUUTNZMkk0TXpJd1lUSXpNbVF6TVRNeFlud3hNRFk0TWpreU96RXdOamd5T1RJN01UUTVNREkxTWprNU1qc3dPekUwT1RBeE5qWTFPVEl1T0RVeU1Uc3dPM1pwWlhjNktpeDNhV1JuWlhRNk1UczciLCJhY2NvdW50X2lkIjoxMDY4MjkyLCJjb250ZW50X2lkIjoiMV9yd2JqM2owYSIsImZpbGVzIjoiMV85MmRmeXJ6NSwxXzlkaGg2bTBpLDFfenVkb3V1YWgsMV9yMHd1Nnk3NywxX296MzQza2xhIn0%3D&signature=AZaaKvEx5j8CAh6VMSZbGzmUK1A%3D", - "scheme": "drm.WIDEVINE_CENC" + "scheme": "com.widevine.alpha" } ] } @@ -400,8 +405,9 @@ let WithPluginsWithDrm = { "id": "1_rwbj3j0a_11311,applehttp", "drmData": [ { + "certificate": "ABCD1234", "licenseUrl": "https://udrmv3.kaltura.com//fps/license?custom_data=eyJjYV9zeXN0ZW0iOiJPVlAiLCJ1c2VyX3Rva2VuIjoiWlRGaU56azRNbU01TWpKaVl6a3dPRGxpTXpRelpUUTNZMkk0TXpJd1lUSXpNbVF6TVRNeFlud3hNRFk0TWpreU96RXdOamd5T1RJN01UUTVNREkxTWprNU1qc3dPekUwT1RBeE5qWTFPVEl1T0RVeU1Uc3dPM1pwWlhjNktpeDNhV1JuWlhRNk1UczciLCJhY2NvdW50X2lkIjoxMDY4MjkyLCJjb250ZW50X2lkIjoiMV9yd2JqM2owYSIsImZpbGVzIjoiMV85MmRmeXJ6NSwxXzlkaGg2bTBpLDFfenVkb3V1YWgsMV9yMHd1Nnk3NywxX296MzQza2xhIn0%3D&signature=AZaaKvEx5j8CAh6VMSZbGzmUK1A%3D", - "scheme": "fairplay.FAIRPLAY" + "scheme": "com.apple.fairplay" } ] } @@ -631,7 +637,7 @@ let WrongUiConfID = [ "url": "https://cdnapisec.kaltura.com/p/1068292/sp/1068292/playManifest/entryId/1_rwbj3j0a/flavorIds/1_92dfyrz5,1_9dhh6m0i,1_zudouuah,1_r0wu6y77,1_oz343kla/deliveryProfileId/11311/protocol/https/format/applehttp/a.m3u8", "drm": [ { - "certificate": "MIIE8DCCA9igAwIBAgIIWErELxCBDA4wDQYJKoZIhvcNAQEFBQAwfzELMAkGA1UEBhMCVVMxEzARBgNVBAoMCkFwcGxlIEluYy4xJjAkBgNVBAsMHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MTMwMQYDVQQDDCpBcHBsZSBLZXkgU2VydmljZXMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTYxMTIzMDA0NDQyWhcNMTgxMTI0MDA0NDQyWjB0MQswCQYDVQQGEwJVUzEdMBsGA1UECgwUU3RhcndhdmUgQ29ycG9yYXRpb24xEzARBgNVBAsMCldLM1lFUlZKV0ExMTAvBgNVBAMMKEZhaXJQbGF5IFN0cmVhbWluZzogU3RhcndhdmUgQ29ycG9yYXRpb24wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKDqSYs/fp9+BOvrgvnwy0p9WQt7ZUrPV4/RfWjcwU3ndYSR6LtNEWlRjHU18OF8HsU678nMqsxRAFwv12Hdew4WoZ7AEdPTX2tOZkvHqgQczo0TKdtuKF3+SYPWiE2u3epFuTAldCkc5stXOwtPnutHsUm+SxWc+DPhMBO1ryBlAgMBAAGjggH9MIIB+TAdBgNVHQ4EFgQUDCgFiGFqGqz0LuWC9mVG3Zktm5IwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBRj5EdUy4VxWUYsg6zMRDFkZwMsvjCB4gYDVR0gBIHaMIHXMIHUBgkqhkiG92NkBQEwgcYwgcMGCCsGAQUFBwICMIG2DIGzUmVsaWFuY2Ugb24gdGhpcyBjZXJ0aWZpY2F0ZSBieSBhbnkgcGFydHkgYXNzdW1lcyBhY2NlcHRhbmNlIG9mIHRoZSB0aGVuIGFwcGxpY2FibGUgc3RhbmRhcmQgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdXNlLCBjZXJ0aWZpY2F0ZSBwb2xpY3kgYW5kIGNlcnRpZmljYXRpb24gcHJhY3RpY2Ugc3RhdGVtZW50cy4wNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL2NybC5hcHBsZS5jb20va2V5c2VydmljZXMuY3JsMA4GA1UdDwEB/wQEAwIFIDBGBgsqhkiG92NkBg0BAwEB/wQ0AXdxb2EwczF5bWZ4cG5vN2gwcnh0bXp4amJzb2psa3BndTh5eWRsa3d1Y3NxZXltcWZvNTA1BgsqhkiG92NkBg0BBAEB/wQjAW5kam03a3hsamFiandvaXU3NGRmeG1zdXkybHlsMmhhdGIwDQYJKoZIhvcNAQEFBQADggEBAC2i5fDiQClCkp9mIyWBW+ZyMlUiM3Wr5eui0dUvKwSBTc8pyv4m4f60X7JoN5iZykriSnF3zO2aNY43AQsTzIpGvQ9kSJVBdTO7u/UevlbRcHDHrSoQ/8fKSVKvx9Be1pIRgznBRqS+iV6V0572rZOuR0ZQf0nY5vtEHBN6kTZyhPYFuTE32f77E/dtv6XnZ6qB1OKtv483mjVLqQrI0IOl3LyMKgAJ51whloEJEJC6g8frCmwmTLsmmOR17wq24/6YKjGNM2NuSa7/7RqwdEKuqDzzVyh3Zafmtn8rlIptACGPYWnmAP2gnCzBO/V6AIQDf0JcZUpOb+GfhQ7M7ik=", + "certificate": "ABCD1234", "scheme": "fairplay.FAIRPLAY", "licenseURL": "https://udrmv3.kaltura.com//fps/license?custom_data=eyJjYV9zeXN0ZW0iOiJPVlAiLCJ1c2VyX3Rva2VuIjoiT0dVNU56YzJaVFkwTURkalpHSmpZVGsxT0RRMVkyWXpaakZpTWpNek9UZGxaV1U1T0RkbU9Yd3hNRFk0TWpreU96RXdOamd5T1RJN01UUTVNREkxTkRnd01Ec3dPekUwT1RBeE5qZzBNREF1TVRBMk16c3dPM1pwWlhjNktpeDNhV1JuWlhRNk1UczciLCJhY2NvdW50X2lkIjoxMDY4MjkyLCJjb250ZW50X2lkIjoiMV9yd2JqM2owYSIsImZpbGVzIjoiMV85MmRmeXJ6NSwxXzlkaGg2bTBpLDFfenVkb3V1YWgsMV9yMHd1Nnk3NywxX296MzQza2xhIn0%3D&signature=RW0rJqR9HuXDUlN8gqmDF08PMLE%3D", "objectType": "KalturaFairPlayPlaybackPluginData"