Skip to content

Commit

Permalink
feat: support server side config (#65)
Browse files Browse the repository at this point in the history
server embed action returns a UIConf object on a global __kalturaplayerdata object, use it as default for player if exist.
client side settings still get precedence over server side config
  • Loading branch information
OrenMe authored Dec 10, 2017
1 parent 4c96bf1 commit 2f75dd4
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 20 deletions.
10 changes: 9 additions & 1 deletion src/kaltura-player.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,15 @@ export default class KalturaPlayer {
this._uiManager = new PlaykitUI(this._player, {targetId: targetId, logLevel: playerConfig.logLevel});
const forceTouchUI = playerConfig.ui ? playerConfig.ui.forceTouchUI : false;
setUITouchConfig(forceTouchUI, this._uiManager);
this._provider = new OvpProvider(__VERSION__, providerConfig.partnerId, providerConfig.ks, providerConfig.env, playerConfig.logLevel);
const providerConf = {
ks: providerConfig.ks,
playerVersion: __VERSION__,
config: providerConfig.env,
logLevel: playerConfig.logLevel,
partnerID: providerConfig.partnerId,
loadUiConf: providerConfig.loadUiConf
}
this._provider = new OvpProvider(providerConf);
this._uiManager.buildDefaultUI();
return {
loadMedia: this.loadMedia.bind(this)
Expand Down
18 changes: 9 additions & 9 deletions src/setup.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,15 @@ function setup(targetId: string, options: Object = {}): KalturaPlayer {
setLogLevel(options);
validateTargetId(targetId);
validateProvidersConfig(options);
let userPlayerConfig = extractPlayerConfig(options);
let userProvidersConfig = extractProvidersConfig(options);
let containerId = createKalturaPlayerContainer(targetId);
setDefaultPlayerConfig(userPlayerConfig);
evaluatePluginsConfig(userPlayerConfig);
setStorageConfig(userPlayerConfig);
let player = loadPlayer(userPlayerConfig);
let kalturaPlayerApi = new KalturaPlayer(player, containerId, userPlayerConfig, userProvidersConfig);
let kalturaPlayer = Object.assign(player, kalturaPlayerApi);
const playerConfig = extractPlayerConfig(options);
const providersConfig = extractProvidersConfig(options);
const containerId = createKalturaPlayerContainer(targetId);
setDefaultPlayerConfig(playerConfig);
evaluatePluginsConfig(playerConfig);
setStorageConfig(playerConfig);
const player = loadPlayer(playerConfig);
const kalturaPlayerApi = new KalturaPlayer(player, containerId, playerConfig, providersConfig);
const kalturaPlayer = Object.assign(player, kalturaPlayerApi);
setStorageTextStyle(kalturaPlayer);
applyStorageSupport(kalturaPlayer);
return kalturaPlayer;
Expand Down
48 changes: 39 additions & 9 deletions src/utils/setup-helpers.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,16 @@ function validateTargetId(targetId: string) {
* @returns {Object} - The player configuration.
*/
function extractPlayerConfig(config: ?Object): Object {
let playerConfig = {};
Utils.Object.mergeDeep(playerConfig, config);
delete playerConfig.partnerId;
delete playerConfig.entryId;
delete playerConfig.uiConfId;
delete playerConfig.env;
delete playerConfig.ks;
const playerConfig = {};
if (config) {
const serverUIConf = extractServerUiconf(config.uiConfId);
Utils.Object.mergeDeep(playerConfig, serverUIConf, config);
delete playerConfig.partnerId;
delete playerConfig.entryId;
delete playerConfig.uiConfId;
delete playerConfig.env;
delete playerConfig.ks;
}
return playerConfig;
}

Expand All @@ -61,17 +64,44 @@ function extractPlayerConfig(config: ?Object): Object {
* @returns {Object} - The provider configuration.
*/
function extractProvidersConfig(config: ?Object): Object {
let providerConfig = {};
const providerConfig = {};
if (config) {
providerConfig.partnerId = config.partnerId;
providerConfig.entryId = config.entryId;
providerConfig.uiConfId = config.uiConfId;
providerConfig.env = config.env;
providerConfig.loadUiConf = !serverUiconfExist(config.uiConfId);
const serverUIConf = extractServerUiconf(config.uiConfId);
providerConfig.env = Utils.Object.mergeDeep({}, serverUIConf.env, config.env);
providerConfig.ks = config.ks;
}
return providerConfig;
}

/**
* checks if the server UIConf exist
* @param {number} uiConfId - The server UIConf
* @returns {boolean} - server UIConf exist
*/
function serverUiconfExist(uiConfId: number): boolean{
const UIConf = Utils.Object.getPropertyPath(window, "__kalturaplayerdata.UIConf");
const hasUiConfId = (uiConfId !== null) && (uiConfId !== undefined);
return hasUiConfId &&
((UIConf !== undefined && (UIConf[uiConfId] !== undefined)) || false);
}

/**
* Extracts the server UIConf
* @param {number} uiConfId - The server UIConf
* @returns {Object} - The server UIConf
*/
function extractServerUiconf(uiConfId: number): Object{
let config = {};
if (serverUiconfExist(uiConfId)){
config = window.__kalturaplayerdata.UIConf[uiConfId];
}
return config;
}

/**
* Creates the player container dom element.
* @param {string} targetId - The div id which the player will append to.
Expand Down
7 changes: 6 additions & 1 deletion test/src/utils/setup-helpers.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ describe('extractProvidersConfig', function () {
partnerId: 1914121,
entryId: '1_umer46fd',
uiConfId: '12345',
loadUiConf: true,
ks: 'sdsf87s8f7s8fjsf',
env: {
beUrl: 'http://some/be/url',
Expand All @@ -110,6 +111,7 @@ describe('extractProvidersConfig', function () {
extractProvidersConfig(config).should.deep.equals({
partnerId: 1914121,
entryId: undefined,
loadUiConf: true,
uiConfId: '12345',
ks: 'sdsf87s8f7s8fjsf',
env: {
Expand All @@ -124,6 +126,7 @@ describe('extractProvidersConfig', function () {
extractProvidersConfig(config).should.deep.equals({
partnerId: undefined,
entryId: '1_umer46fd',
loadUiConf: true,
uiConfId: '12345',
ks: 'sdsf87s8f7s8fjsf',
env: {
Expand All @@ -138,6 +141,7 @@ describe('extractProvidersConfig', function () {
extractProvidersConfig(config).should.deep.equals({
partnerId: 1914121,
entryId: '1_umer46fd',
loadUiConf: true,
uiConfId: '12345',
ks: undefined,
env: {
Expand All @@ -152,9 +156,10 @@ describe('extractProvidersConfig', function () {
extractProvidersConfig(config).should.deep.equals({
partnerId: 1914121,
entryId: '1_umer46fd',
loadUiConf: true,
uiConfId: '12345',
ks: 'sdsf87s8f7s8fjsf',
env: undefined
env: {}
});
});

Expand Down

0 comments on commit 2f75dd4

Please sign in to comment.