Skip to content

Commit

Permalink
feat: evaluate default plugins config (#30)
Browse files Browse the repository at this point in the history
  • Loading branch information
yairans authored Sep 26, 2017
1 parent ca0a23c commit f87beac
Show file tree
Hide file tree
Showing 6 changed files with 106 additions and 1 deletion.
4 changes: 4 additions & 0 deletions src/kaltura-player.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import OvpProvider from 'playkit-js-providers/dist/ovpProvider'
import LoggerFactory from './utils/logger'
import {addKalturaParams} from './utils/kaltura-params'
import {addKalturaPoster} from './utils/setup-helpers'
import {evaluatePluginsConfig} from './plugins/plugins-config'
import './assets/style.css'

export default class KalturaPlayer {
Expand All @@ -31,6 +32,9 @@ export default class KalturaPlayer {
const dimensions = this._player.dimensions;
addKalturaPoster(data.metadata, dimensions.width, dimensions.height);
addKalturaParams(data.sources, this._player);
Utils.Object.mergeDeep(data.plugins, this._player.config.plugins);
Utils.Object.mergeDeep(data.session, this._player.config.session);
evaluatePluginsConfig(data);
this._player.configure(data);
});
}
Expand Down
53 changes: 53 additions & 0 deletions src/plugins/plugins-config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
//@flow

import pluginsConfig from './plugins-config.json'
import evaluate from '../utils/evaluate'
import {Utils} from 'playkit-js'
import {PLAYER_NAME, VERSION} from "../index";


/**
* @param {Object} [playerConfig = {}] - The player config
* @return {void}
*/
function evaluatePluginsConfig(playerConfig: Object = {}): void {
if (playerConfig.plugins) {
let dataModel = {
pVersion: VERSION,
pName: PLAYER_NAME,
};
if (playerConfig.session) {
let entryDataModel = {
entryId: playerConfig.id,
entryName: playerConfig.name,
entryType: playerConfig.type,
sessionId: playerConfig.session.id,
ks: playerConfig.session.ks,
uiConfId: playerConfig.session.uiConfID,
partnerId: playerConfig.session.partnerID
};
Utils.Object.mergeDeep(dataModel, entryDataModel);
}
let evaluatedConfig = evaluate(JSON.stringify(pluginsConfig), dataModel);
let evaluatedConfigObj;
try {
evaluatedConfigObj = JSON.parse(evaluatedConfig);
} catch (e) {
evaluatedConfigObj = {};
}
let templateRegex = new RegExp(('{{.*}}'));
Object.keys(evaluatedConfigObj).forEach((plugin) => {
Object.keys(evaluatedConfigObj[plugin]).forEach((key) => {
if (templateRegex.test(evaluatedConfigObj[plugin][key])) {
delete evaluatedConfigObj[plugin][key];
}
});
});
Object.keys(playerConfig.plugins).forEach((pluginName) => {
Utils.Object.mergeDeep(playerConfig.plugins[pluginName], evaluatedConfigObj[pluginName]);
});
}
}


export {evaluatePluginsConfig};
24 changes: 24 additions & 0 deletions src/plugins/plugins-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"youbora": {
"playerVersion": "{{pVersion}}",
"playerName": "{{pName}}",
"entryId": "{{entryId}}",
"entryName": "{{entryName}}",
"entryType": "{{entryType}}",
"sessionId": "{{sessionId}}",
"uiConfId": "{{uiConfId}}"
},
"kanalytics": {
"playerVersion": "{{pVersion}}",
"entryId": "{{entryId}}",
"entryType": "{{entryType}}",
"sessionId": "{{sessionId}}",
"ks": "{{ks}}",
"uiConfId": "{{uiConfId}}",
"partnerId": "{{partnerId}}"
},
"ima": {
"playerVersion": "{{pVersion}}",
"playerName": "{{pName}}"
}
}
2 changes: 2 additions & 0 deletions src/setup.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// @flow
import {loadPlayer} from 'playkit-js'
import KalturaPlayer from './kaltura-player'
import {evaluatePluginsConfig} from './plugins/plugins-config'
import {
extractPlayerConfig,
extractProvidersConfig,
Expand All @@ -24,6 +25,7 @@ function setup(targetId: string, options: Object): KalturaPlayer {
let userProvidersConfig = extractProvidersConfig(options);
let containerId = createKalturaPlayerContainer(targetId);
checkNativeHlsSupport(userPlayerConfig);
evaluatePluginsConfig(userPlayerConfig);
setStorageConfig(options.disableUserCache, userPlayerConfig);
let player = loadPlayer(userPlayerConfig);
let kalturaPlayerApi = new KalturaPlayer(player, containerId, userProvidersConfig);
Expand Down
3 changes: 2 additions & 1 deletion src/storage/storage-wrapper.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
// @flow
import LoggerFactory from '../utils/logger'
import {PLAYER_NAME} from "../index";

const STORAGE_PREFIX = __NAME__ + '_';
const STORAGE_PREFIX = PLAYER_NAME + '_';

export default class StorageWrapper {
static _logger: any = LoggerFactory.getLogger('StorageWrapper');
Expand Down
21 changes: 21 additions & 0 deletions src/utils/evaluate.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
//@flow

/**
* @param {string} template - The template string to evaluate
* @param {Object} model - The model to evaluate with
* @return {string} - The evaluated string
*/
function evaluate(template: string, model: Object = {}): string {
try {
let reg, res = template;
for (let key in model) {
reg = new RegExp('{{' + key + '}}', 'g');
res = res.replace(reg, model[key] || "");
}
return res;
} catch (e) {
return "";
}
}

export default evaluate;

0 comments on commit f87beac

Please sign in to comment.