{"version":3,"sources":["config/config.js","config/Configuration.js","PauseOverlay.js","DateTime.js","Media.js","Ui.js","Logger.js","analytics/Analytic.js","analytics/ComScore.js","analytics/ATInternetDevelopers.js","analytics/MUX.js","analytics/Analytics.js","StreamFincons.js","Stream.js","Uint8ArrayUtils.js","CastQueue.js","MimeResolver.js","Receiver.js"],"names":["config","environment","version","customChannel","streamType","accountId","endpoint","drmType","subtitleFilter","configUrl","dvrWindowLength","Configuration","instance","data","Promise","resolve","get","fetch","then","response","json","parseData","catch","all","api","fincons","mpx_config","account_pid","set","e","console","log","features","ads","key","value","valObject","keys","split","dataObject","length","undefined","nextDataObject","shift","nextKey","join","Object","freeze","PauseOverlay","customData","maxReccomendation","pauseOverlay","document","getElementById","innerHTML","title","description","thumbnailUrl","img","createElement","src","thumbNode","firstChild","removeChild","appendChild","next","subtitle","style","backgroundImage","display","recommendations","recommendNode","recommendationlength","i","parentDiv","className","textDiv","titleSpan","subtitleSpan","DateTime","element","ticker","el","dateTimeStart","changeTime","setInterval","date","Date","formatDate","dateArray","toString","dayName","dayNum","getDate","monthName","hours","zeroFill","getHours","minutes","getMinutes","number","requiredWidth","realWidth","Array","test","Media","contentId","Ui","logger","obj","playerElement","debug","prototype","hasOwnProperty","call","info","setProperty","splashImage","logoImage","fontFamily","levelTypes","NONE","ERROR","WARNING","INFO","DEBUG","V1","V2","Logger","options","defaultOptions","debugLevel","assign","currentLevel","window","bind","alwaysWarn","warn","setLevel","level","nop","error","warning","Analytic","context","cast","framework","CastReceiverContext","getInstance","playerManager","getPlayerManager","metadata","messages","GenericMediaMetadata","ComScore","name","publisherId","streamingAnalytics","ns_","StreamingAnalytics","setLabels","ns_site","ns_st_mp","ns_st_mv","ns_st_it","addEventListener","events","EventType","BITRATE_CHANGED","event","bitrateChangedEvent","BUFFERING","bufferingEvent","CLIP_ENDED","clipEndedEvent","errorEvent","MEDIA_FINISHED","mediaFinishedEvent","MEDIA_STATUS","mediaStatusEvent","SEGMENT_DOWNLOADED","segmentDownloadedEvent","BREAK_STARTED","breakEvent","BREAK_ENDED","BREAK_CLIP_LOADING","BREAK_CLIP_STARTED","BREAK_CLIP_ENDED","asset","getPlaybackSession","setAsset","notifyChangeBitrate","totalBitrate","isBuffering","notifyBufferStart","notifyBufferStop","getAsset","setLabel","notifyError","notifyEnd","currentMediaTime","mediaStatus","playerState","notifyPlay","currentTime","notifyPause","notifyCustomEvent","ns_st_ev","download_time","downloadTime","size","ATInternetDevelopers","ATInternet","Tracker","Tag","media","mediaInformation","PLAYING","PAUSED","broadcastTypes","LIVE","VOD","mediaTypes","VIDEO","playerTypes","pageTypes","NAME","LEVEL2","trackConstants","MEDIA_TYPE","PLATFORM","APP_NAME","CONTENT_TYPE","LANGUAGE","TITLE","MEDIA_PLAYER","PLAYER_VERSION","resetMedia","duration","channel","genre","playlistProgName","episodeName","episodeNumber","seriesNumber","subGenre","pubDate","producer","getMediaInformation","parseCustomData","pageSet","rmSet","action","richMedia","send","playerId","mediaLabel","SEEKED","mediaSeekEvent","sendAction","mInfo","cData","broadcastMode","StreamType","mTypes","pTypes","mediaType","format","mediaLevel2","mediaTheme1","mediaTheme2","mediaTheme3","content","refreshDuration","isEmbedded","add","page","level2","tConst","site","customVars","dispatch","string","constructor","formatString","replace","MUX","mux","emit","setData","initData","initChromecastMux","env_key","accessTokenID","player_name","player_init_time","now","video_id","video_duration","video_title","Analytics","analytics","init","analyticsData","push","analyticsLength","analyticsItem","type","startAnalytics","initEvents","setCustomData","StreamFincons","authToken","mediaId","formats","googleAds","google","enabled","isStreamLive","adPolicy","playerTypeKey","adUnitKey","adUnit","playerType","platform","iu","oReq","XMLHttpRequest","parseResponse","open","target","status","xmlDoc","responseXML","parser","DOMParser","parseFromString","responseText","parseSmilXml","seqEl","querySelector","getFirstAdEl","getFirstVideoSwitchEl","convertDataToObject","adEl","switchEl","videoEl","getElementsByTagName","trackingDataParamEl","adTagUrl","getAttribute","videoUrl","videoTrackingDataStr","videoTrackingDataObj","releasePid","pid","aid","hasDrm","accountUrl","encodeURIComponent","streamInfo","stream","buildVideoUrl","licenseUrl","buildLicenseUrl","account","buildAdUrl","isStreamBuffered","BUFFERED","url","dvrWindow","search","match","p1","p2","includes","params","urlToChange","dvrWindowLengthParameter","regexTime","RegExp","indexOf","adUrl","pageUrl","location","href","outputFormat","dataString","separator","array","object","forEach","item","arr","children","nodeName","Stream","Uint8ArrayUtils","btoa","String","fromCharCode","Uint8Array","enc","TextDecoder","decode","str","bytes","atob","result","charCodeAt","CastQueue","requestData","queueData","QueueData","QueueBase","MimeResolver","mediaUrl","mimetype","linkEl","xhr","filename","pathname","pop","responseURL","getMimeType","DEBUG_LEVEL","isShakaPreset","Receiver","ui","mimeResolver","receiverOption","CastReceiverOptions","useLegacyDashSupport","breakManager","getBreakManager","initCafLoggerLevel","onLoadMessage","hasPauseOverlay","dateTime","initMessageInterceptors","start","queue","getLevel","setLoggerLevel","LoggerLevel","initCoreEventsListener","categoryTypes","category","CORE","PAUSE","ended","show","PLAY","hide","PLAYER_LOAD_COMPLETE","request","textTracksRebuild","addCustomMessageListener","customEvent","update","system","READY","setMessageInterceptor","MessageType","LOAD","loadRequestData","requestId","JSON","stringify","load","getCustomData","mediaContentId","startsWith","setMimeType","streamOptions","getStream","contentUrl","waitForShakaIsPreset","setMediaPlaybackInfoHandler","loadRequest","playbackConfig","protectionSystem","ContentProtection","PLAYREADY","CLEARKEY","licenseRequestHandler","networkRequestInfo","widevineChallenge","toBase64","getWidevineLicense","licenseHandler","jsonMsg","license","parse","fromBase64","getWidevineLicenseResponse","WIDEVINE","mediaInfo","promise","contentType","newTextTracksManager","getTextTracksManager","newTracks","getTracks","tracks","track","idAudio","idText","id","waitingForShakaIsLoaded","timer","shaka","clearInterval","ManifestParser","registerParserByMime","dash","DashParser","finally","loadConfig","receiver"],"mappings":"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","file":"Receiver.196d942a.map","sourceRoot":"..","sourcesContent":["/**\n * Configuration object\n */\nconst config = {\n /** @member {String} environment The one from 'PRODUCTION', 'DEVELOPMENT' */\n environment: 'PRODUCTION',\n\n /** @member {String} version Application version */\n version: '1.0.21',\n\n /** @member {String} customChannel Namespace for custom message channel */\n customChannel: 'urn:x-cast:com.rte.chromecast',\n\n /** @member {String} streamType The RTE stream type */\n streamType: 'fincons',\n\n accountId: '1uC-gC', // dev: '9nl_gC',, prod: 1uC-gC\n\n /** @member {String} endpoint Endpoint URL returning SMIL (including Stream URL and Ads URL) */\n endpoint: 'https://link.theplatform.eu/s/[account]/media/[media]?auth=[auth]&sdk=PDK%205.7.16&formats=[formats]&format=SMIL&embedded=true&tracking=true',\n\n /** @member {String} drmType DRM type. The one from 'widevine', 'playready' */\n drmType: 'widevine',\n\n /** @member {Bollean} subtitleFilter */\n subtitleFilter: true,\n\n /** @member {String} configUrl Returning configuration for App */\n configUrl: 'https://www.rte.ie/wordpress/wp-content/uploads/standard/smartott/config.json',\n\n /**\n * @member {Bollean} dvrWindowLength DVR window length in seconds.\n * The additional property included in live stream request. TMGRIS-40\n */\n dvrWindowLength: 30\n};\n\nif (config.environment === 'DEVELOPMENT') {\n // config.configUrl = 'https://pl-cms-test.rte.host/wordpress/wp-content/uploads/standard/smartott/config.json';\n}\n\nexport default config;\n","import config from './config.js';\n\nclass Configuration {\n constructor() {\n if (!Configuration.instance) {\n this.data = { ...config };\n Configuration.instance = this;\n }\n\n return Configuration.instance;\n }\n\n loadConfig() {\n return new Promise((resolve) => {\n const configUrl = this.get('configUrl');\n if (configUrl) {\n fetch(configUrl)\n .then(response => response.json())\n .then((data) => {\n this.parseData(data);\n resolve();\n })\n .catch(() => {\n resolve();\n });\n } else {\n resolve();\n }\n });\n }\n\n parseData(data) {\n try {\n if (data.all.api.fincons.mpx_config.account_pid) {\n this.set('accountId', data.all.api.fincons.mpx_config.account_pid);\n }\n } catch (e) {\n console.log('account id does not exist');\n }\n\n try {\n if (data.all.features.ads) {\n this.set('ads', data.all.features.ads);\n }\n } catch (e) {\n console.log('ads does not exist');\n }\n }\n\n set(key, value) {\n this.data[key] = value;\n }\n\n get(key, valObject) {\n const keys = key.split('.');\n const dataObject = valObject || this.data;\n\n if (keys.length === 1) {\n if (dataObject[key]) {\n return dataObject[key];\n }\n return undefined;\n }\n\n if (dataObject[keys[0]]) {\n const nextDataObject = dataObject[keys[0]];\n keys.shift();\n const nextKey = keys.join('.');\n return this.get(nextKey, nextDataObject);\n }\n return undefined;\n }\n}\n\nconst instance = new Configuration();\nObject.freeze(instance);\n\nexport default instance;\n","import Configuration from './config/Configuration.js';\n\nexport default class PauseOverlay {\n /**\n * Initialize Pause overlay\n * @param {Object} customData\n */\n static init(customData) {\n const maxReccomendation = 3;\n\n if (typeof (customData.pauseOverlay) === 'undefined') {\n return false;\n }\n const data = customData.pauseOverlay;\n\n if (Configuration.get('version')) {\n document.getElementById('version').innerHTML = 'Version: ' + Configuration.get('version');\n }\n\n if (data.title) {\n document.getElementById('header-title').innerHTML = data.title;\n } else {\n document.getElementById('header-title').innerHTML = '';\n }\n if (data.description) {\n document.getElementById('header-description').innerHTML = data.description;\n } else {\n document.getElementById('header-description').innerHTML = '';\n }\n if (data.thumbnailUrl) {\n const img = document.createElement('img');\n img.src = data.thumbnailUrl;\n const thumbNode = document.getElementById('header-thumb');\n // Remove old images\n while (thumbNode.firstChild) {\n thumbNode.removeChild(thumbNode.firstChild);\n }\n thumbNode.appendChild(img);\n } else {\n const thumbNode = document.getElementById('header-thumb');\n // Remove old images\n while (thumbNode.firstChild) {\n thumbNode.removeChild(thumbNode.firstChild);\n }\n }\n\n if (data.next) {\n if (data.next.title) {\n document.getElementById('next-title').innerHTML = data.next.title;\n } else {\n document.getElementById('next-title').innerHTML = '';\n }\n if (data.next.subtitle) {\n document.getElementById('next-subtitle').innerHTML = data.next.subtitle;\n } else {\n document.getElementById('next-subtitle').innerHTML = '';\n }\n if (data.next.thumbnailUrl) {\n document.getElementById('next-thumb').style.backgroundImage = `url('${data.next.thumbnailUrl}')`;\n } else {\n document.getElementById('next-thumb').style.backgroundImage = 'none';\n }\n document.getElementById('next').style.display = 'inline-block';\n } else {\n document.getElementById('next').style.display = 'none';\n }\n\n if (data.recommendations) {\n const recommendNode = document.getElementById('recommendations-row');\n // Clear old recommendations\n while (recommendNode.firstChild) {\n recommendNode.removeChild(recommendNode.firstChild);\n }\n const recommendationlength = (\n data.recommendations.length\n && data.recommendations.length <= maxReccomendation\n ) ? data.recommendations.length : maxReccomendation;\n for (let i = 0; i < recommendationlength; i += 1) {\n const parentDiv = document.createElement('div');\n parentDiv.className = 'recommendations-thumb';\n if (data.recommendations[i].thumbnailUrl) {\n parentDiv.style.backgroundImage = `url('${data.recommendations[i].thumbnailUrl}')`;\n }\n const textDiv = document.createElement('div');\n textDiv.className = 'recommendations-text';\n\n if (data.recommendations[i].title) {\n const titleSpan = document.createElement('span');\n titleSpan.className = 'recommendations-title';\n titleSpan.innerHTML = data.recommendations[i].title;\n textDiv.appendChild(titleSpan);\n }\n\n if (data.recommendations[i].subtitle) {\n const subtitleSpan = document.createElement('span');\n subtitleSpan.className = 'recommendations-subtitle';\n subtitleSpan.innerHTML = data.recommendations[i].subtitle;\n textDiv.appendChild(subtitleSpan);\n }\n\n parentDiv.appendChild(textDiv);\n recommendNode.appendChild(parentDiv);\n document.getElementById('recommendations').style.display = 'inline-block';\n }\n } else {\n document.getElementById('recommendations').style.display = 'none';\n }\n return true;\n }\n\n /**\n * Show pause Modal\n */\n static show() {\n document.getElementById('pauseModal').style.display = 'block';\n }\n\n /**\n * Hide pause Modal\n */\n static hide() {\n document.getElementById('pauseModal').style.display = 'none';\n }\n}\n","export default class DateTime {\n /**\n * Constructor\n * @param {Object} element Html element\n */\n constructor(element) {\n this.ticker = null;\n this.el = element;\n this.dateTimeStart();\n }\n\n /**\n * Starting ticker\n */\n dateTimeStart() {\n this.changeTime();\n this.ticker = setInterval(() => {\n this.changeTime();\n }, 10000);\n }\n\n /**\n * Changing date string in the main HTML element\n */\n changeTime() {\n const date = new Date();\n this.el.innerHTML = DateTime.formatDate(date);\n }\n\n /**\n * Convert date object do the formated string\n * @param {Object} Date\n * @returns {String}\n */\n static formatDate(date) {\n const dateArray = date.toString().split(' ');\n const dayName = dateArray[0];\n const dayNum = date.getDate();\n const monthName = dateArray[1];\n const hours = DateTime.zeroFill(date.getHours(), 2);\n const minutes = DateTime.zeroFill(date.getMinutes(), 2);\n return `${dayName} ${dayNum} ${monthName} | ${hours}:${minutes}`;\n }\n\n /**\n * Padding number with zero, it depends on the width\n * @param {Integer} number\n * @param {Integer} requiredWidth\n */\n static zeroFill(number, requiredWidth) {\n const realWidth = requiredWidth - number.toString().length;\n if (realWidth > 0) {\n return new Array(realWidth + (/\\./.test(number) ? 2 : 1)).join('0') + number;\n }\n return number.toString(); // always return a string\n }\n\n}\n","export default class Media {\n static load(contentId) {\n // console.log(`Load media for id: ${contentId}`);\n }\n}","export default class Ui {\n constructor(logger) {\n this.logger = logger;\n }\n\n update(obj) {\n const playerElement = document.getElementById('player');\n this.logger.debug(obj);\n\n if (Object.prototype.hasOwnProperty.call(obj, 'backgroundImage')) {\n this.logger.info(`Update ui with new background image: ${obj.backgroundImage}`);\n playerElement.style.setProperty('--background-image', `url(\"${obj.backgroundImage}\")`);\n }\n\n if (Object.prototype.hasOwnProperty.call(obj, 'splashImage')) {\n this.logger.info(`Update ui with new splash image: ${obj.backgroundImage}`);\n playerElement.style.setProperty('--splash-image', `url(\"${obj.splashImage}\")`);\n }\n\n if (Object.prototype.hasOwnProperty.call(obj, 'logoImage')) {\n this.logger.info(`Update ui with new logo: ${obj.backgroundImage}`);\n playerElement.style.setProperty('--logo-image', `url(\"${obj.logoImage}\")`);\n }\n\n if (Object.prototype.hasOwnProperty.call(obj, 'fontFamily')) {\n this.logger.info(`Update ui with new font family: ${obj.backgroundImage}`);\n playerElement.style.setProperty('--font-family', `url(\"${obj.fontFamily}\")`);\n }\n }\n}","const levelTypes = {\n NONE: 0,\n ERROR: 1,\n WARNING: 2,\n INFO: 3,\n DEBUG: 4,\n V1: 5,\n V2: 6\n};\n\nexport default class Logger {\n /**\n * Log constructor\n * @param {Object} options\n */\n constructor(options) {\n const defaultOptions = {\n debugLevel: 0\n };\n this.options = Object.assign(defaultOptions, options);\n this.currentLevel = 0;\n\n // IE8 has no console unless it is opened in advance.\n // IE9 console methods are not Functions and have no bind.\n if (window.console && window.console.log.bind) {\n this.alwaysWarn = console.warn.bind(console);\n this.setLevel(this.options.debugLevel);\n }\n }\n\n /**\n * Set debug level\n * @param {number} level\n */\n setLevel(level) {\n const nop = function () {};\n\n this.currentLevel = level;\n\n this.error = (level >= levelTypes.ERROR) ? console.error.bind(console) : nop;\n this.warning = (level >= levelTypes.WARNING) ? console.warn.bind(console) : nop;\n this.info = (level >= levelTypes.INFO) ? console.info.bind(console) : nop;\n this.debug = (level >= levelTypes.DEBUG) ? console.log.bind(console) : nop;\n }\n\n /**\n * @returns {number} The debug level\n */\n getLevel() {\n return this.currentLevel;\n }\n\n /* eslint-disable lines-between-class-members, class-methods-use-this */\n alwaysWarn() {}\n error() {}\n warning() {}\n info() {}\n debug() {}\n}\n\nLogger.levelTypes = levelTypes;\n","// eslint\n/* global cast */\n\nexport default class Analytic {\n /**\n * Analytic constructor\n * @param {Object} options\n * @param {Logger} logger\n */\n constructor(options, logger) {\n this.context = cast.framework.CastReceiverContext.getInstance();\n this.playerManager = this.context.getPlayerManager();\n const defaultOptions = {\n title: null\n };\n this.options = Object.assign(defaultOptions, options);\n this.logger = logger;\n this.metadata = new cast.framework.messages.GenericMediaMetadata();\n }\n\n initEvents() {\n return;\n }\n\n setCustomData() {\n return;\n }\n\n sendAction() {\n return;\n }\n\n mediaFinishedEvent() {\n return;\n }\n\n mediaStatusEvent() {\n return;\n }\n\n mediaSeekEvent() {\n return;\n }\n}\n","import Analytic from './Analytic.js';\n\n// eslint\n/* global cast, ns_ */\n\nexport default class ComScore extends Analytic {\n /**\n * Create ComScore Analytics\n * @param {Object} options\n * @param {Logger} logger\n */\n constructor(options, logger) {\n super(options, logger);\n this.name = 'ComScore';\n\n const defaultOptions = {\n publisherId: null\n };\n this.options = Object.assign(defaultOptions, this.options);\n\n this.streamingAnalytics = new ns_.StreamingAnalytics({\n publisherId: this.options.publisherId,\n debug: true\n });\n\n this.streamingAnalytics.setLabels({\n ns_site: 'test',\n ns_st_mp: '24i-smartott',\n ns_st_mv: 1.0,\n ns_st_it: 'c'\n });\n }\n\n /**\n * Initialize events\n */\n initEvents() {\n this.logger.info(`Initialize ${this.name} Analytics Events`);\n this.playerManager.addEventListener(\n cast.framework.events.EventType.BITRATE_CHANGED,\n (event) => {\n this.bitrateChangedEvent(event);\n }\n );\n\n this.playerManager.addEventListener(\n cast.framework.events.EventType.BUFFERING,\n (event) => {\n this.bufferingEvent(event);\n }\n );\n\n this.playerManager.addEventListener(\n cast.framework.events.EventType.CLIP_ENDED,\n (event) => {\n this.clipEndedEvent(event);\n }\n );\n\n this.playerManager.addEventListener(\n cast.framework.events.EventType.ERROR,\n (event) => {\n this.errorEvent(event);\n }\n );\n\n this.playerManager.addEventListener(\n cast.framework.events.EventType.MEDIA_FINISHED,\n (event) => {\n this.mediaFinishedEvent(event);\n }\n );\n\n this.playerManager.addEventListener(\n cast.framework.events.EventType.MEDIA_STATUS,\n (event) => {\n this.mediaStatusEvent(event);\n }\n );\n\n this.playerManager.addEventListener(\n cast.framework.events.EventType.SEGMENT_DOWNLOADED,\n (event) => {\n this.segmentDownloadedEvent(event);\n }\n );\n\n this.playerManager.addEventListener(\n cast.framework.events.EventType.BREAK_STARTED,\n (event) => {\n this.breakEvent(event);\n }\n );\n\n this.playerManager.addEventListener(\n cast.framework.events.EventType.BREAK_ENDED,\n (event) => {\n this.breakEvent(event);\n }\n );\n\n this.playerManager.addEventListener(\n cast.framework.events.EventType.BREAK_CLIP_LOADING,\n (event) => {\n this.breakEvent(event);\n }\n );\n\n this.playerManager.addEventListener(\n cast.framework.events.EventType.BREAK_CLIP_STARTED,\n (event) => {\n this.breakEvent(event);\n }\n );\n\n this.playerManager.addEventListener(\n cast.framework.events.EventType.BREAK_CLIP_ENDED,\n (event) => {\n this.breakEvent(event);\n }\n );\n }\n\n setAsset(asset) {\n this.streamingAnalytics.getPlaybackSession().setAsset(asset);\n }\n\n bitrateChangedEvent(event) {\n // notifyChangeBitrate\n this.logger.info(`${this.name}: BitRate Change Event`);\n this.logger.debug('event', event);\n this.streamingAnalytics.notifyChangeBitrate(event.totalBitrate);\n }\n\n bufferingEvent(event) {\n // notifyBufferStart\n if (event.isBuffering) {\n this.logger.info(`${this.name}: Buffering Start Event`);\n this.streamingAnalytics.notifyBufferStart();\n } else {\n this.logger.info(`${this.name}: Buffering Stop Event`);\n this.streamingAnalytics.notifyBufferStop();\n }\n this.logger.debug('event', event);\n }\n\n clipEndedEvent(event) {\n this.logger.info(`${this.name}: Clip Ended Event`);\n this.logger.debug('event', event);\n }\n\n errorEvent(event) {\n // notifyError\n this.logger.info(`${this.name}: Error Event`);\n this.logger.debug('event', event);\n\n this.streamingAnalytics.getPlaybackSession().getAsset().setLabel('ns_st_er', event.error);\n this.streamingAnalytics.notifyError();\n }\n\n mediaFinishedEvent(event) {\n // notifyEnd\n this.logger.info(`${this.name}: Media Finished Event`);\n this.logger.debug('event', event);\n\n this.streamingAnalytics.notifyEnd(event.currentMediaTime);\n }\n\n mediaStatusEvent(event) {\n this.logger.info(`${this.name}: Media Status Event`);\n this.logger.debug('event', event);\n if (event.mediaStatus.playerState === 'PLAYING') {\n this.streamingAnalytics.notifyPlay(event.mediaStatus.currentTime);\n } else if (event.mediaStatus.playerState === 'PAUSED') {\n this.streamingAnalytics.notifyPause(event.mediaStatus.currentTime);\n }\n }\n\n segmentDownloadedEvent(event) {\n this.logger.info(`${this.name}: Segment Downloaded Event`);\n this.logger.debug('event', event);\n\n this.streamingAnalytics.notifyCustomEvent({\n ns_st_ev: 'segment_downloaded',\n download_time: event.downloadTime,\n size: event.size\n });\n }\n\n breakEvent(event) {\n this.logger.info(`${this.name}: Break Event`);\n this.logger.debug('event', event);\n }\n}\n","import Analytic from './Analytic.js';\n\n// eslint\n/* global cast, ATInternet */\n\nexport default class ATInternetDevelopers extends Analytic {\n /**\n * Create ATInternet Developers Analytics\n * @param {Object} options\n * @param {Logger} logger\n */\n constructor(options, logger) {\n super(options, logger);\n this.name = 'AT Internet Developers';\n this.streamingAnalytics = new ATInternet.Tracker.Tag();\n this.media = {};\n this.mediaInformation = {};\n this.customData = {};\n this.mediaStatus = {\n PLAYING: 'PLAYING',\n PAUSED: 'PAUSED'\n };\n this.broadcastTypes = {\n LIVE: 'live',\n VOD: 'clip'\n };\n this.mediaTypes = {\n VIDEO: 'video'\n };\n this.playerTypes = {\n VIDEO: 1\n };\n this.pageTypes = {\n NAME: 'player',\n LEVEL2: 7\n };\n this.trackConstants = {\n MEDIA_TYPE: 'vid',\n PLATFORM: 'ott',\n APP_NAME: 'pl',\n CONTENT_TYPE: 'index',\n LANGUAGE: 'en',\n TITLE: 'Discover Standard | RTÉ Player',\n MEDIA_PLAYER: 'rte_smarttv_player',\n PLAYER_VERSION: '1.0'\n };\n this.resetMedia();\n }\n\n resetMedia() {\n this.media = {\n contentId: '',\n title: '',\n duration: 0,\n channel: '',\n genre: '',\n playlistProgName: '',\n episodeName: '',\n episodeNumber: '',\n seriesNumber: '',\n subGenre: '',\n pubDate: '',\n producer: ''\n };\n }\n\n setCustomData() {\n this.logger.info(`setCustomData ${this.name} Analytics Events`, this.options);\n this.mediaInformation = this.playerManager.getMediaInformation();\n this.customData = (this.mediaInformation && this.mediaInformation.customData) || {};\n this.resetMedia();\n this.parseCustomData();\n\n this.pageSet();\n this.rmSet();\n }\n\n sendAction(action) {\n try {\n this.streamingAnalytics.richMedia.send({\n action,\n playerId: '1',\n mediaLabel: this.media.title\n });\n } catch (e) { console.error(e); }\n }\n\n /**\n * Initialize events\n */\n initEvents() {\n this.logger.info(`Initialize ${this.name} Analytics Events`);\n\n this.playerManager.addEventListener(\n cast.framework.events.EventType.MEDIA_FINISHED,\n (event) => {\n this.mediaFinishedEvent(event);\n }\n );\n\n this.playerManager.addEventListener(\n cast.framework.events.EventType.MEDIA_STATUS,\n (event) => {\n this.mediaStatusEvent(event);\n }\n );\n\n this.playerManager.addEventListener(\n cast.framework.events.EventType.SEEKED,\n (event) => {\n this.mediaSeekEvent(event);\n }\n );\n\n // Fired when the first break clip in a break starts loading.\n // Event is cast.framework.events.BreaksEvent.\n this.playerManager.addEventListener(\n cast.framework.events.EventType.BREAK_STARTED,\n (event) => {\n console.warn('BREAK_STARTED');\n }\n );\n\n // Fired when the last break clip in a break ends.\n // Event is cast.framework.events.BreaksEvent.\n // Note: This event fires even if a user skips the last break clip in a break\n // to end the break.\n this.playerManager.addEventListener(\n cast.framework.events.EventType.BREAK_ENDED,\n (event) => {\n console.warn('BREAK_ENDED');\n }\n );\n\n // Fired when a break clip starts loading. Event is cast.framework.events.BreaksEvent.\n this.playerManager.addEventListener(\n cast.framework.events.EventType.BREAK_CLIP_LOADING,\n (event) => {\n console.warn('BREAK_CLIP_LOADING');\n }\n );\n\n // Fired when a break clip starts. Event is cast.framework.events.BreaksEvent.\n this.playerManager.addEventListener(\n cast.framework.events.EventType.BREAK_CLIP_STARTED,\n (event) => {\n console.warn('BREAK_CLIP_STARTED');\n }\n );\n\n // Fired when a break clip ends. Event is cast.framework.events.BreaksEvent.\n // Note: This event fires even if a user skips a break clip.\n // Please check the endedReason property of BreaksEvent. To figure out amount of time\n // the break clip was watched please check getBreakClipCurrentTimeSec\n // and getBreakClipDurationSec of PlayerManager.\n this.playerManager.addEventListener(\n cast.framework.events.EventType.BREAK_CLIP_ENDED,\n (event) => {\n console.warn('BREAK_CLIP_ENDED');\n }\n );\n }\n\n mediaFinishedEvent(event) {\n // notifyEnd\n this.logger.info(`${this.name}: Media Finished Event`);\n this.logger.debug('event', event);\n this.sendAction('stop');\n }\n\n mediaStatusEvent(event) {\n this.logger.info(`${this.name}: Media Status Event`);\n this.logger.debug('event', event);\n if (event.mediaStatus.playerState === this.mediaStatus.PLAYING) {\n this.sendAction('play');\n } else if (event.mediaStatus.playerState === this.mediaStatus.PAUSED) {\n this.sendAction('pause');\n }\n }\n\n mediaSeekEvent(event) {\n this.logger.info(`${this.name}: Media Seek Event`);\n this.logger.debug('event', event);\n this.sendAction('move');\n }\n\n parseCustomData() {\n const mInfo = this.mediaInformation || {};\n const cData = (this.customData && this.customData.pauseOverlay) || {};\n const { media } = this;\n\n media.contentId = mInfo.contentId || '';\n media.title = cData.title || '';\n media.duration = cData.duration || 0;\n media.pubDate = cData.pubDate || '';\n media.channel = cData.channel || '';\n media.genre = cData.genre || '';\n media.playlistProgName = cData.playlistProgName || '';\n media.episodeName = cData.episodeName || '';\n media.episodeNumber = cData.episodeNumber || '';\n media.seriesNumber = cData.seriesNumber || '';\n media.subGenre = cData.subGenre || '';\n media.pubDate = cData.pubDate || '';\n media.producer = cData.producer || '';\n media.broadcastMode = (mInfo.streamType === cast.framework.messages.StreamType.LIVE)\n ? this.broadcastTypes.LIVE : this.broadcastTypes.VOD;\n }\n\n rmSet() {\n const mTypes = this.mediaTypes;\n const pTypes = this.pageTypes;\n const media = this.media || {};\n\n const options = {\n mediaType: mTypes.VIDEO,\n mediaLabel: media.title && this.format(media.title),\n mediaLevel2: pTypes.LEVEL2,\n mediaTheme1: media.playlistProgName && this.format(media.playlistProgName), // Playlist name\n mediaTheme2: media.pubDate && this.format(media.pubDate), // Publication date\n mediaTheme3: media.producer && this.format(media.producer), // Content provider\n content: media.contentId && this.format(media.contentId),\n playerId: '1',\n refreshDuration: 5,\n duration: media.duration,\n isEmbedded: false,\n broadcastMode: media.broadcastMode\n };\n\n try {\n this.streamingAnalytics.richMedia.add(options);\n } catch (e) { console.error(e); }\n }\n\n pageSet() {\n try {\n this.streamingAnalytics.page.set({\n name: this.pageTypes.NAME,\n level2: this.pageTypes.LEVEL2\n });\n } catch (e) { console.error(e); }\n\n const tConst = this.trackConstants;\n const pTypes = this.pageTypes;\n const media = this.media || {};\n\n const options = {\n site: {\n 1: tConst.MEDIA_TYPE, // Media_Type\n 2: tConst.PLATFORM, // Platform\n 3: tConst.APP_NAME, // App_Name\n 4: media.contentId && this.format(media.contentId), // Content_ID\n 5: media.contentId && this.format(media.contentId), // BRN_ID\n 6: this.format(tConst.APP_NAME), // Media_Player\n 7: this.format(tConst.PLAYER_VERSION), // Player_Version\n 8: pTypes.LEVEL2, // Level2\n 9: this.format(pTypes.NAME), // Chapter1\n 10: media.channel && this.format(media.channel), // Channel\n 11: media.genre && this.format(media.genre), // Genre\n 12: media.playlistProgName && this.format(media.playlistProgName), // Playlist_Prog_Name\n 13: media.episodeName && this.format(media.episodeName), // Episode_Name\n 14: '', // Parent_URL\n 15: media.episodeNumber, // episode_Number\n 16: media.seriesNumber, // Series_Number\n 17: 0, // Radio\n 18: media.subGenre && this.format(media.subGenre), // Sub_Genre\n 19: '', // content_ID\n 20: '' // Boxset\n }\n };\n\n try {\n this.streamingAnalytics.customVars.set(options);\n this.streamingAnalytics.dispatch();\n } catch (e) { console.error(e); }\n }\n\n format(string) {\n if (!string) {\n return false;\n }\n\n /*\n * According to ATInternet documentation,\n * all site/page vars strings must be between brackets.\n */\n return `[${this.constructor.formatString(string)}]`;\n }\n\n static formatString(string) {\n return string && string.replace(/\\s/g, '_');\n }\n}\n","import Analytic from './Analytic.js';\n\n// eslint\n/* global initChromecastMux */\n\nexport default class MUX extends Analytic {\n /**\n * Create MUX Analytics\n * @param {Object} options\n * @param {Logger} logger\n */\n constructor(options, logger) {\n super(options, logger);\n this.name = 'MUX';\n }\n\n /**\n * Initialize events\n */\n initEvents() {\n this.logger.info(`Initialize ${this.name} Analytics Events`, this.options);\n }\n\n setCustomData() {\n if (this.playerManager.mux && this.playerManager.mux.emit) {\n this.setData();\n } else {\n this.initData();\n }\n }\n\n initData() {\n const mediaInformation = this.playerManager.getMediaInformation();\n\n initChromecastMux(this.playerManager, {\n debug: false,\n data: {\n env_key: this.options.accessTokenID, // required\n\n // Metadata\n player_name: 'Chromecast',\n player_init_time: Date.now(),\n\n // ... additional metadata\n video_id: mediaInformation.contentId || '',\n video_duration: mediaInformation.duration || mediaInformation.customData.duration || null,\n video_title: mediaInformation.metadata.title || mediaInformation.customData.pauseOverlay.title || ''\n }\n });\n }\n\n setData() {\n const mediaInformation = this.playerManager.getMediaInformation();\n\n this.playerManager.mux.emit('videochange', {\n data: {\n video_id: mediaInformation.contentId || '',\n video_duration: mediaInformation.duration || mediaInformation.customData.duration || null,\n video_title: mediaInformation.metadata.title || mediaInformation.customData.pauseOverlay.title || ''\n }\n });\n }\n}\n","import ComScore from './ComScore.js';\nimport ATInternetDevelopers from './ATInternetDevelopers.js';\nimport MUX from './MUX.js';\n\n// eslint\n/* global cast */\n\nexport default class Analytics {\n /**\n * Initialize each analytic defined in the data\n * @param {Object|Array} data analytic settings data\n */\n constructor(data, logger) {\n this.context = cast.framework.CastReceiverContext.getInstance();\n this.playerManager = this.context.getPlayerManager();\n this.logger = logger;\n this.analytics = [];\n\n this.init(data);\n }\n\n init(data) {\n let analyticsData = [];\n if (!(data instanceof Array)) {\n analyticsData.push(data);\n } else {\n analyticsData = data;\n }\n\n if (analyticsData instanceof Array) {\n this.logger.info('Initialize Analytics Array');\n const analyticsLength = analyticsData.length;\n for (let i = 0; i < analyticsLength; i += 1) {\n const analyticsItem = analyticsData[i];\n this.logger.info(analyticsItem);\n this.logger.info(`Initialize Analytics ${analyticsItem.type}`);\n this.analytics[i] = this.startAnalytics(\n analyticsItem.type,\n analyticsItem.options\n );\n if (this.analytics[i]) {\n this.analytics[i].initEvents();\n }\n }\n }\n }\n\n /**\n * @param {string} type\n * @param {Object} options\n */\n startAnalytics(type, options) {\n this.logger.info(`Start Analytic for type: ${type}`);\n\n switch (type) {\n case 'comscore':\n return new ComScore(options, this.logger);\n case 'atinternetdevelopers':\n return new ATInternetDevelopers(options, this.logger);\n case 'mux':\n return new MUX(options, this.logger);\n default:\n this.logger.warning(`Start for analytic ${type} not supported`);\n return null;\n }\n }\n\n /**\n * Set custom data for each analytic\n * @param {*} customData\n */\n setCustomData(customData) {\n const analyticsLength = this.analytics.length;\n for (let i = 0; i < analyticsLength; i += 1) {\n this.analytics[i].setCustomData(customData);\n }\n }\n}\n","import Configuration from './config/Configuration.js';\n\n// eslint\n/* global cast */\n\nexport default class StreamFincons {\n /**\n * Create Stream Fincons\n * @param {Object} options\n * @param {String} options.authToken\n * @param {String} options.mediaId\n * @param {cast.framework.messages.StreamType} options.streamType\n * @param {Logger} logger\n */\n constructor(options, logger) {\n const defaultOptions = {\n authToken: null,\n mediaId: null,\n streamType: cast.framework.messages.StreamType.NONE,\n formats: 'mpeg-dash', // ISM, mpeg-dash, M3U\n drmType: 'widevine',\n subtitleFilter: false\n };\n this.options = Object.assign(defaultOptions, options);\n this.logger = logger;\n }\n\n call() {\n return new Promise((resolve) => {\n this.logger.info('[StreamFincons] Start to prepare endpoint');\n const { streamType, authToken } = this.options;\n\n let endpoint = Configuration.get('endpoint').replace('[auth]', authToken);\n endpoint = endpoint.replace('[account]', Configuration.get('accountId'));\n endpoint = endpoint.replace('[media]', this.options.mediaId);\n endpoint = endpoint.replace('[formats]', this.options.formats);\n\n const ads = Configuration.get('ads') || {};\n const googleAds = ads.google;\n if (ads.enabled && googleAds) {\n const isStreamLive = cast.framework.messages.StreamType.LIVE === streamType;\n const adPolicy = Configuration.get('ads.google.ad_policy') || '';\n const playerTypeKey = isStreamLive ? 'liveChannels' : 'VOD';\n const adUnitKey = authToken ? 'logged' : 'not_logged';\n\n const adUnit = Configuration.get(`ads.google.ad_unit.${adUnitKey}`) || '';\n const playerType = Configuration.get(`ads.google.ad_unit.type.${playerTypeKey}`) || '';\n const platform = Configuration.get('ads.google.ad_unit.platform.chromecast') || '';\n\n let iu = adUnit.replace('{type}', playerType);\n iu = iu.replace('{platform}', platform);\n\n endpoint += `&policy=${adPolicy}&iu=${iu}`;\n }\n\n this.logger.info('[StreamFincons] Finished preparing endpoint');\n this.logger.info(`[StreamFincons] Start to fetch SMIL file, url: ${endpoint}`);\n const oReq = new XMLHttpRequest();\n oReq.addEventListener('load', (event) => {\n this.logger.info(`[StreamFincons] Finished fetching endpoint, url: ${endpoint}`);\n resolve(this.parseResponse(event));\n });\n oReq.open('GET', endpoint);\n oReq.send();\n });\n }\n\n parseResponse(event) {\n if (event.target.status !== 200) {\n this.logger.error(`[StreamFincons] Failed to load SMIL file, status: ${event.target.status}`);\n return {};\n }\n let xmlDoc = null;\n if (event.target.responseXML) {\n xmlDoc = event.target.responseXML;\n } else {\n const parser = new DOMParser();\n xmlDoc = parser.parseFromString(event.target.responseText, 'text/xml');\n }\n return this.parseSmilXml(xmlDoc);\n }\n\n parseSmilXml(xmlDoc) {\n this.logger.info('[StreamFincons] Start parsing XML smil');\n if (!xmlDoc) {\n this.logger.info('[StreamFincons] Failed to parse SMIL, missing response XML object');\n return {};\n }\n\n const seqEl = xmlDoc.querySelector('body seq');\n if (!seqEl) {\n this.logger.info('[StreamFincons] Failed SMIL parsing, missing element');\n return {};\n }\n const { getFirstAdEl, getFirstVideoSwitchEl, convertDataToObject } = StreamFincons;\n\n const adEl = getFirstAdEl(seqEl);\n const switchEl = getFirstVideoSwitchEl(seqEl);\n if (!switchEl) {\n this.logger.info('[StreamFincons] Failed SMIL parsing, missing element');\n return {};\n }\n const videoEl = switchEl.getElementsByTagName('video')[0];\n const trackingDataParamEl = switchEl.querySelector('param[name=\"trackingData\"]');\n\n const adTagUrl = adEl ? adEl.getAttribute('src') || '' : '';\n const videoUrl = videoEl ? videoEl.getAttribute('src') || '' : '';\n const videoTrackingDataStr = trackingDataParamEl ? trackingDataParamEl.getAttribute('value') || '' : '';\n const videoTrackingDataObj = convertDataToObject(videoTrackingDataStr);\n\n const { pid: releasePid, aid: accountId } = videoTrackingDataObj;\n const hasDrm = releasePid ? true : false;\n const accountUrl = encodeURIComponent(`http://access.auth.theplatform.com/data/Account/${accountId}`);\n\n const streamInfo = {\n stream: this.buildVideoUrl(videoUrl),\n licenseUrl: hasDrm ? this.buildLicenseUrl({ releasePid, account: accountUrl }) : '',\n releasePid,\n adTagUrl: StreamFincons.buildAdUrl(adTagUrl)\n };\n\n this.logger.debug(streamInfo);\n return streamInfo;\n }\n\n buildVideoUrl(videoUrl) {\n const { streamType } = this.options;\n const isStreamBuffered = streamType === cast.framework.messages.StreamType.BUFFERED;\n let url = videoUrl;\n // if the stream type is LIVE, then we need add another information to the endpoint\n // TMGRIS-40\n url = this.dvrWindow(url);\n\n // https://ott-jira.finconsgroup.com/browse/RTE-686\n // adding url postfix for getting only one subtitle track\n if (Configuration.get('subtitleFilter') && isStreamBuffered) {\n const subtitleFilter = '(type==\"video\"||type==\"audio\"||fourcc==\"stpp\")';\n if (url.search(/([?&]filter=)([^&\\n]*)/) > -1) {\n url = url.replace(/([?&]filter=)([^&\\n]*)/, (match, p1, p2) => {\n if (p2) { return `${p1}${p2}%26%26${subtitleFilter}`; }\n return `${p1}${subtitleFilter}`;\n });\n } else {\n url += url.includes('?') ? '&' : '?';\n url += `filter=${subtitleFilter}`;\n }\n }\n return url;\n }\n\n buildLicenseUrl(params) {\n const { account, releasePid } = params;\n const { authToken } = this.options;\n const drmType = Configuration.get('drmType');\n\n let licenseUrl = '';\n switch (drmType) {\n case 'playready':\n licenseUrl = `https://green.playready.entitlement.theplatform.eu/playready/rightsmanager.asmx?account=${account}&auth=${authToken}&releasePid=${releasePid}&schema=1.0`;\n break;\n case 'widevine':\n licenseUrl = `https://widevine.entitlement.theplatform.eu/wv/web/ModularDrm?form=json&schema=1.0&token=${authToken}&account=${account}`;\n // let raWlicenseUrl = `https://widevine.entitlement.theplatform.eu/wv/web/ModularDrm/getRawWidevineLicense?schema=1.0&token=${authToken}&releasePid=${releasePid}&account=${account}`;\n break;\n default:\n break;\n }\n return licenseUrl;\n }\n\n static buildAdUrl(adUrl) {\n let url = adUrl;\n if (!url) {\n return '';\n }\n\n // set the `url` param in URL\n const pageUrl = window.location.href;\n if (url.search(/([?&]url=)([^&\\n]*)/) > -1) {\n url = url.replace(/([?&]url=)([^&\\n]*)/, `$1${pageUrl}`);\n } else {\n url += url.includes('?') ? '&' : '?';\n url += `url=${pageUrl}`;\n }\n\n // set the `output` param in URL\n const outputFormat = 'vmap';\n if (url.search(/([?&]output=)([^&\\n]*)/) > -1) {\n url = url.replace(/([?&]output=)([^&\\n]*)/, `$1${outputFormat}`);\n } else {\n url += url.includes('?') ? '&' : '?';\n url += `output=${outputFormat}`;\n }\n return url;\n }\n\n /**\n * To convert data in string format to object.\n * @param {String} dataString to be converted to object. E.g.: \"key=value|aid=125jk5\"\n * @param {String='|'} separator\n * @return {Object} output object. E.g. {key: \"value\", aid: \"125jk5\"}\n */\n static convertDataToObject(dataString, separator = '|') {\n const array = dataString.split(separator);\n const object = {};\n array.forEach((item) => {\n const arr = item.split('=');\n if (arr.length > 1) {\n const key = arr[0];\n const value = arr[1];\n object[key] = value;\n }\n });\n return object;\n }\n\n static getFirstAdEl(seqEl) {\n const el = seqEl.children[0];\n if (el.nodeName === 'ref' && el.getAttribute('src')) {\n return el;\n }\n return null;\n }\n\n static getFirstVideoSwitchEl(seqEl) {\n const switchEl = seqEl.getElementsByTagName('switch')[0];\n if (switchEl) {\n return switchEl;\n }\n return null;\n }\n\n dvrWindow(url) {\n let urlToChange = url;\n if (this.options.streamType === cast.framework.messages.StreamType.LIVE) {\n const dvrWindowLengthParameter = `dvr_window_length=${Configuration.get('dvrWindowLength')}`;\n const regexTime = new RegExp(/\\.*(t=)(.*Z)(&)/);\n if (regexTime.test(urlToChange)) {\n urlToChange = urlToChange.replace(regexTime, `${dvrWindowLengthParameter}$3`);\n } else {\n urlToChange += (urlToChange.indexOf('?') > -1) ? '&' : '?';\n urlToChange += dvrWindowLengthParameter;\n }\n }\n return urlToChange;\n }\n}\n","import StreamFincons from './StreamFincons.js';\nimport Configuration from './config/Configuration.js';\n\nexport default class Stream {\n /**\n * @param {Object} options\n * @param {String} options.authToken\n * @param {String} options.mediaId\n * @param {cast.framework.messages.StreamType} options.streamType\n * @param {Logger} logger\n * @returns {StreamFincons|null}\n */\n static getStream(options, logger) {\n logger.info(`Get Stream for type: ${Configuration.get('streamType')}`);\n\n if (Configuration.get('streamType') === 'fincons') {\n return new StreamFincons(options, logger);\n }\n logger.warning('Stream type not supported');\n return null;\n }\n}\n","export default class Uint8ArrayUtils {\n /**\n * Convert a Uint8Array to a base64 string.\n * @param {!Uint8Array} arr\n * @returns {string}\n */\n static toBase64(arr) {\n return btoa(String.fromCharCode(...new Uint8Array(arr)));\n }\n\n /**\n * Convert a Uint8Array to a string.\n * @param {!Uint8Array} arr\n * @returns {string}\n */\n static toString(arr) {\n const enc = new TextDecoder();\n return enc.decode(arr);\n }\n\n /**\n * Convert a base64 string to a Uint8Array.\n * @param {string} str\n * @return {!Uint8Array}\n */\n static fromBase64(str) {\n // atob creates a \"raw string\" where each character is interpreted as a byte.\n const bytes = window.atob(str.replace(/-/g, '+').replace(/_/g, '/'));\n const result = new Uint8Array(bytes.length);\n for (let i = 0; i < bytes.length; i += 1) {\n result[i] = bytes.charCodeAt(i);\n }\n return result;\n }\n}","// eslint\n/* global cast */\n\nexport default class CastQueue extends cast.framework.QueueBase {\n /**\n * @param {Logger} logger\n */\n constructor(logger) {\n super();\n this.logger = logger;\n }\n\n /**\n * Initializes the queue.\n * @param {!cast.framework.messages.LoadRequestData} requestData\n * @return {!cast.framework.messages.QueueData}\n * or non-null Promise containing nullable cast.framework.messages.QueueData\n */\n initialize(requestData) {\n this.logger.info('Initialize CastQueue', requestData);\n if (typeof (requestData.queueData) === 'undefined') {\n this.logger.info('No queueData found, default behaviour');\n return null; // enable default behaviour\n }\n this.logger.info('Queuedata found!');\n const queueData = requestData.queueData || new cast.framework.messages.QueueData();\n return queueData;\n }\n}\n","/**\n * MIME Resolver class\n */\nexport default class MimeResolver {\n /**\n * @param {Logger} logger\n */\n constructor(logger) {\n this.logger = logger;\n }\n\n /**\n * To get MIME type from media URL\n * @param {string} mediaUrl\n * @returns {promise} including Media MIME type or empty string\n */\n getMimeType(mediaUrl) {\n this.logger.info(`[Receiver] getMimeType for url: ${mediaUrl}`);\n\n return new Promise((resolve) => {\n let mimetype = '';\n const linkEl = document.createElement('a');\n let xhr = null;\n linkEl.href = mediaUrl;\n const filename = linkEl.pathname.match(/\\/[^/]*$/gi)[0];\n switch (filename.split('.').pop()) {\n case 'mp4':\n case 'mov':\n mimetype = 'video/mp4';\n break;\n case 'mp3':\n mimetype = 'audio/mp3';\n break;\n case 'm3u':\n case 'm3u8':\n mimetype = 'application/x-mpegURL';\n break;\n case 'mpd':\n mimetype = 'application/dash+xml';\n break;\n case '/':\n xhr = new XMLHttpRequest();\n xhr.addEventListener('load', (event) => {\n if (event.target.responseURL) {\n // TODO check if working\n mimetype = this.getMimeType(event.target.responseURL);\n } else {\n mimetype = this.getMimeType(event.target.responseText);\n }\n resolve(mimetype);\n });\n xhr.open('GET', mediaUrl);\n xhr.send();\n break;\n default:\n mimetype = '';\n resolve(mimetype);\n break;\n }\n if (mimetype !== '') {\n resolve(mimetype);\n }\n });\n }\n}\n","import PauseOverlay from './PauseOverlay.js';\nimport DateTime from './DateTime.js';\nimport Media from './Media.js';\nimport Ui from './Ui.js';\nimport Logger from './Logger.js';\nimport Analytics from './analytics/Analytics.js';\nimport Stream from './Stream.js';\nimport Uint8ArrayUtils from './Uint8ArrayUtils.js';\nimport CastQueue from './CastQueue.js';\nimport MimeResolver from './MimeResolver.js';\nimport config from './config/config.js';\nimport Configuration from './config/Configuration.js';\n// import BitrateLogger from './BitrateLogger.js';\n\n/* global shaka */\n\nconst DEBUG_LEVEL = config.environment === 'DEVELOPMENT' ? Logger.levelTypes.DEBUG : Logger.levelTypes.NONE;\n\nlet isShakaPreset = false;\n\nclass Receiver {\n constructor(options, logger, ui) {\n this.options = options;\n this.logger = logger;\n this.ui = ui;\n this.logger.info(`[Receiver] constructor, version: ${config.version}, env: ${config.environment}`);\n\n this.mimeResolver = new MimeResolver(logger);\n this.context = cast.framework.CastReceiverContext.getInstance();\n this.receiverOption = new cast.framework.CastReceiverOptions(); // TODO: looks like useless variable\n this.receiverOption.useLegacyDashSupport = false;\n this.playerManager = this.context.getPlayerManager();\n this.breakManager = this.playerManager.getBreakManager();\n\n this.initCafLoggerLevel();\n\n this.onLoadMessage = this.onLoadMessage.bind(this);\n\n this.hasPauseOverlay = false;\n this.dateTime = new DateTime(document.getElementById('time'));\n this.initEvents();\n this.initMessageInterceptors();\n\n this.analytics = null;\n // this.bitrateLogger = new BitrateLogger(this.playerManager, this.logger);\n this.context.start({ queue: new CastQueue(logger) });\n }\n\n /**\n * To set CAF logger level. For development purpose ONLY\n */\n initCafLoggerLevel() {\n if (this.logger.getLevel() > Logger.levelTypes.NONE) {\n this.context.setLoggerLevel(cast.framework.LoggerLevel.DEBUG);\n this.initCoreEventsListener();\n }\n }\n\n /**\n * Listen to all Core Events. For development purpose ONLY\n */\n initCoreEventsListener() {\n const categoryTypes = cast.framework.events.category;\n this.playerManager.addEventListener(categoryTypes.CORE, (event) => {\n this.logger.debug(event);\n });\n this.playerManager.addEventListener(categoryTypes.DEBUG, (event) => {\n this.logger.debug(event);\n });\n }\n\n initEvents() {\n this.playerManager.addEventListener(\n cast.framework.events.EventType.PAUSE,\n (event) => {\n if (this.hasPauseOverlay && !event.ended) {\n this.logger.info('PAUSE EVENT - Show pause overlay');\n PauseOverlay.show();\n }\n }\n );\n this.playerManager.addEventListener(\n cast.framework.events.EventType.PLAY,\n () => {\n if (this.hasPauseOverlay) {\n this.logger.info('PLAY EVENT - Hide pause overlay');\n PauseOverlay.hide();\n }\n }\n );\n\n // When in queue mode, it's not executing the play and pause events\n this.playerManager.addEventListener(\n cast.framework.events.EventType.MEDIA_STATUS,\n (event) => {\n this.logger.info('Media Status Event', event);\n if (this.hasPauseOverlay) {\n if (event.mediaStatus.playerState === 'PAUSED') {\n this.logger.info('MEDIA STATUS PAUSE - Show pause overlay');\n PauseOverlay.show();\n } else if (event.mediaStatus.playerState === 'PLAYING' || event.mediaStatus.playerState === 'IDLE') {\n this.logger.info('MEDIA STATUS PLAYING - Hide pause overlay');\n PauseOverlay.hide();\n }\n }\n }\n );\n\n // closed captions handling (subtitles)\n this.playerManager.addEventListener(\n cast.framework.events.EventType.PLAYER_LOAD_COMPLETE,\n (request) => {\n this.textTracksRebuild(request);\n }\n );\n\n this.playerManager.addEventListener(\n cast.framework.events.EventType.ERROR,\n (event) => {\n console.warn('ERROR', event);\n }\n );\n\n this.context.addCustomMessageListener(Configuration.get('customChannel'),\n (customEvent) => {\n this.logger.info('Got a Custom event');\n this.logger.debug('Event data', customEvent.data);\n if (Object.prototype.hasOwnProperty.call(customEvent.data, 'ui')) {\n this.logger.info('Initialize UI');\n this.ui.update(customEvent.data.ui);\n }\n this.logger.info(customEvent);\n if (Object.prototype.hasOwnProperty.call(customEvent.data, 'analytics')) {\n this.analytics = new Analytics(\n customEvent.data.analytics,\n this.logger\n );\n }\n });\n\n this.context.addEventListener(\n cast.framework.system.EventType.READY,\n () => {\n this.logger.debug('[Receiver] system ready event');\n }\n );\n }\n\n initMessageInterceptors() {\n this.playerManager.setMessageInterceptor(\n cast.framework.messages.MessageType.LOAD,\n this.onLoadMessage\n );\n }\n\n /**\n * @param {cast.framework.messages.LoadRequestData} loadRequestData\n * @return {promise | cast.framework.messages.LoadRequestData}\n */\n onLoadMessage(loadRequestData) {\n this.logger.info(`[Receiver] onLoadMessage, id: ${loadRequestData.requestId}`);\n this.logger.info(JSON.stringify(loadRequestData));\n if (loadRequestData.media && loadRequestData.media.contentId) {\n\n if (loadRequestData.media.streamType === cast.framework.messages.StreamType.LIVE) {\n loadRequestData.currentTime = undefined; // hotfix for Android client sending currentTime = 0\n }\n\n Media.load(loadRequestData.media.contentId);\n this.logger.info(`DRM config: ${Configuration.get('drmType')}`);\n this.logger.debug('loadRequestData', loadRequestData);\n const customData = this.getCustomData(loadRequestData);\n this.hasPauseOverlay = PauseOverlay.init(customData);\n if (this.analytics) {\n this.analytics.setCustomData(customData);\n }\n\n // if it starts with http(s) it's not a media id and can't get smill\n // file with license info etc.\n const mediaContentId = loadRequestData.media.contentId;\n if (mediaContentId.startsWith('http://') || mediaContentId.startsWith('https://')) {\n return this.setMimeType(loadRequestData.media).then(() => loadRequestData);\n }\n\n const streamOptions = {\n authToken: customData.authToken,\n mediaId: loadRequestData.media.contentId,\n streamType: loadRequestData.media.streamType\n };\n\n const streamInfo = Stream.getStream(streamOptions, this.logger);\n\n return streamInfo.call().then((stream) => {\n this.logger.info('In promise for stream info');\n this.logger.debug('Stream', stream);\n loadRequestData.media.contentUrl = stream.stream;\n\n return this.setMimeType(loadRequestData.media)\n .then(waitForShakaIsPreset)\n .then(() => {\n this.logger.info('setMediaPlaybackInfoHandler');\n this.playerManager.setMediaPlaybackInfoHandler(\n (loadRequest, playbackConfig) => {\n this.logger.info('In setMediaPlaybackInfoHandler');\n if (stream.licenseUrl) {\n playbackConfig.licenseUrl = stream.licenseUrl;\n this.logger.info(`Set ${Configuration.get('drmType')} licenseUrl on playbackConfig: ${stream.licenseUrl}`);\n switch (Configuration.get('drmType')) {\n case 'playready':\n playbackConfig.protectionSystem = cast.framework.ContentProtection.PLAYREADY;\n break;\n case 'clearkey':\n playbackConfig.protectionSystem = cast.framework.ContentProtection.CLEARKEY;\n break;\n case 'widevine':\n playbackConfig.licenseRequestHandler = (networkRequestInfo) => {\n this.logger.info('WideVine LicenseRequest Handler');\n const widevineChallenge = Uint8ArrayUtils.toBase64(networkRequestInfo.content);\n const content = {\n getWidevineLicense: {\n releasePid: stream.releasePid,\n widevineChallenge\n }\n };\n // Replace content with a json string for the license server\n networkRequestInfo.content = JSON.stringify(content);\n this.logger.info(`New WideVine license uri: ${networkRequestInfo.url}`);\n };\n playbackConfig.licenseHandler = (arr) => {\n this.logger.info('WideVince LicenseHandler');\n // Convert uint8array to string and parse json\n const jsonMsg = Uint8ArrayUtils.toString(arr);\n const license = JSON.parse(jsonMsg);\n // Return Uint8Array from the license in the json\n return Uint8ArrayUtils.fromBase64(license.getWidevineLicenseResponse.license);\n };\n playbackConfig.protectionSystem = cast.framework.ContentProtection.WIDEVINE;\n break;\n default:\n playbackConfig.protectionSystem = cast.framework.ContentProtection.NONE;\n break;\n }\n } else {\n this.logger.info('No license url found');\n }\n return playbackConfig;\n }\n );\n \n // if (stream.adTagUrl) {\n // loadRequestData.media.vmapAdsRequest = {\n // adTagUrl: stream.adTagUrl\n // };\n // }\n \n return loadRequestData;\n });\n });\n }\n return loadRequestData;\n }\n\n setMimeType(mediaInfo) {\n this.logger.info('[Receiver] setMimeType');\n let url = mediaInfo.contentUrl;\n if (!url) {\n url = mediaInfo.contentId;\n }\n const promise = this.mimeResolver.getMimeType(url);\n promise.then((mimetype) => {\n this.logger.debug(`[Receiver] finished setMimeType, mimetype: ${mimetype}`);\n // switching off for the non-functional android app\n return mediaInfo;\n /*\n mediaInfo.contentType = mimetype;\n if (['application/x-mpegURL', 'application/dash+xml'].indexOf(mediaInfo.contentType) > -1) {\n mediaInfo.metadata.metadataType = cast.framework.messages.GenericMediaMetadata;\n mediaInfo.streamType = cast.framework.messages.StreamType.LIVE;\n } else if (mediaInfo.contentType.match(/^audio/gi)) {\n mediaInfo.metadata.metadataType = cast.framework.messages.MusicTrackMediaMetadata;\n mediaInfo.streamType = cast.framework.messages.StreamType.BUFFERED;\n } else {\n mediaInfo.metadata.metadataType = cast.framework.messages.MovieMediaMetadata;\n mediaInfo.streamType = cast.framework.messages.StreamType.BUFFERED;\n }\n\n return mediaInfo;\n */\n });\n return promise;\n }\n\n /**\n * Fetch custom data from the loadRequestData, for some reason\n * the customdata is in different places when\n * using the queue or single media item.\n * @param {!cast.framework.messages.LoadRequestData} loadRequestData\n * @returns {Object}\n */\n getCustomData(loadRequestData) {\n if (typeof (loadRequestData.queueData) !== 'undefined') {\n if (typeof (loadRequestData.customData) !== 'undefined') {\n return loadRequestData.customData;\n }\n this.logger.warning('No custom data found in queue loadRequestData?');\n return {};\n }\n\n if (typeof (loadRequestData.media.customData) !== 'undefined') {\n return loadRequestData.media.customData;\n }\n this.logger.warning('No custom data found in NON queue loadRequestData?');\n return {};\n }\n\n /**\n * Modifing tracks data, especialy for mpeg-dash stream\n * @param {Object} request object of requested data\n * @returns {void}\n */\n textTracksRebuild(request) {\n // only for dash\n if (request.media.contentType !== 'application/dash+xml') {\n return;\n }\n\n const newTextTracksManager = this.playerManager.getTextTracksManager();\n const newTracks = newTextTracksManager.getTracks();\n const { tracks } = request.media;\n\n let track = {};\n let idAudio = 0;\n let idText = 0;\n let id = '';\n for (let i = 0; i < tracks.length; i += 1) {\n track = tracks[i];\n id = '';\n if (track.type === 'AUDIO') {\n idAudio += 1;\n id = idAudio;\n }\n if (track.type === 'TEXT') {\n idText += 1;\n id = idText;\n }\n track.name = track.name || `Track ${id}`;\n }\n }\n}\n\n\nfunction waitingForShakaIsLoaded() {\n console.log('[waitingForShakaIsLoaded] called');\n return new Promise((resolve) => {\n const timer = setInterval(() => {\n if (typeof shaka !== 'undefined') {\n console.log('[waitingForShakaIsLoaded] loaded');\n clearInterval(timer);\n resolve();\n }\n }, 100);\n });\n}\n\nfunction waitForShakaIsPreset() {\n console.log('[waitForShakaIsPreset] called');\n return new Promise((resolve) => {\n if (isShakaPreset) {\n resolve();\n } else {\n waitingForShakaIsLoaded()\n .then(() => {\n // [PRJ0930RTE-1103] added special MPEG-DASH MIME type of Ads media files used in Google VAST\n shaka.media.ManifestParser.registerParserByMime('video/vnd.mpeg.dash.mpd', shaka.dash.DashParser);\n })\n .catch((e) => { console.error(e); })\n .finally(() => {\n isShakaPreset = true;\n resolve();\n });\n }\n });\n}\n\nConfiguration.loadConfig()\n .then(() => {\n const logger = new Logger({ debugLevel: DEBUG_LEVEL });\n const ui = new Ui(logger);\n const receiver = new Receiver(config, logger, ui);\n });\n"]}