Skip to content

Commit

Permalink
fix(FEV-1249): Kaltura CuePoints loads thumb assets always with KS (#25)
Browse files Browse the repository at this point in the history
* fix(FEV-1249): use KS for thumbnails only if configured "loadThumbnailWithKs" property

* Revert "fix(FEV-1249): use KS for thumbnails only if configured "loadThumbnailWithKs" property"

This reverts commit cb20144.

* fix(FEV-1249): use 'player.shouldAddKs' method to define if KS needed
  • Loading branch information
semarche-kaltura authored May 9, 2022
1 parent b922de1 commit dfcf45c
Show file tree
Hide file tree
Showing 8 changed files with 31 additions and 33 deletions.
8 changes: 4 additions & 4 deletions src/cuepoint-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import {Provider} from './providers/provider';
import {VodProvider} from './providers/vod/vod-provider';
import {LiveProvider} from './providers/live/live-provider';
import {KalturaCuePoint} from './providers/vod/response-types';
import {CuepointTypeMap, KalturaCuePointType, KalturaThumbCuePointSubType, CuepointsConfig} from './types';
import {CuepointTypeMap, KalturaCuePointType, KalturaThumbCuePointSubType} from './types';
import Logger = KalturaPlayerTypes.Logger;
import EventManager = KalturaPlayerTypes.EventManager;

Expand All @@ -27,7 +27,7 @@ export class CuepointService {
return KalturaCuePoint.KalturaCuePointType;
}

constructor(player: Player, eventManager: EventManager, logger: any, private _config: CuepointsConfig) {
constructor(player: Player, eventManager: EventManager, logger: any) {
this._logger = logger;
this._player = player;
this._eventManager = eventManager;
Expand Down Expand Up @@ -60,9 +60,9 @@ export class CuepointService {
}

if (this._player.isLive()) {
this._provider = new LiveProvider(this._player, this._eventManager, this._logger, this._types, this._config);
this._provider = new LiveProvider(this._player, this._eventManager, this._logger, this._types);
} else {
this._provider = new VodProvider(this._player, this._eventManager, this._logger, this._types, this._config);
this._provider = new VodProvider(this._player, this._eventManager, this._logger, this._types);
}
}

Expand Down
11 changes: 4 additions & 7 deletions src/cuepoints.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import {CuepointService} from './cuepoint-service';
import {CuepointsConfig} from './types';
import Player = KalturaPlayerTypes.Player;

export class Cuepoints extends KalturaPlayer.core.BasePlugin {
Expand All @@ -8,14 +7,12 @@ export class Cuepoints extends KalturaPlayer.core.BasePlugin {
* The default configuration of the plugin.
* @static
*/
static defaultConfig: CuepointsConfig = {
loadThumbnailWithKs: false
};
static defaultConfig = {};

constructor(name: string, player: Player, config: CuepointsConfig) {
super(name, player, config);
constructor(name: string, player: Player) {
super(name, player);

this._cuePointService = new CuepointService(player, this.eventManager, this.logger, this.config);
this._cuePointService = new CuepointService(player, this.eventManager, this.logger);
player.registerService('kalturaCuepoints', this._cuePointService);
}

Expand Down
12 changes: 4 additions & 8 deletions src/providers/live/live-provider.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {Provider} from '../provider';
import {KalturaCuePointType, CuepointTypeMap, CuepointsConfig} from '../../types';
import {KalturaCuePointType, CuepointTypeMap} from '../../types';
import {
PushNotificationPrivider,
PushNotificationEventTypes,
Expand All @@ -9,7 +9,7 @@ import {
SlideViewChangePushNotificationData,
ThumbPushNotificationData
} from './push-notifications-provider';
import {makeAssetUrl, sortArrayBy} from '../utils';
import {makeAssetUrl, sortArrayBy, getKs} from '../utils';
import Player = KalturaPlayerTypes.Player;
import Logger = KalturaPlayerTypes.Logger;
import EventManager = KalturaPlayerTypes.EventManager;
Expand All @@ -26,7 +26,7 @@ export class LiveProvider extends Provider {
private _currentTimeLiveResolvePromise = () => {};
private _currentTimeLivePromise: Promise<void>;

constructor(player: Player, eventManager: EventManager, logger: Logger, types: CuepointTypeMap, private _config: CuepointsConfig) {
constructor(player: Player, eventManager: EventManager, logger: Logger, types: CuepointTypeMap) {
super(player, eventManager, logger, types);
this._pushNotification = new PushNotificationPrivider(this._player, this._logger);
this._currentTimeLivePromise = this._makeCurrentTimeLiveReadyPromise();
Expand Down Expand Up @@ -130,11 +130,7 @@ export class LiveProvider extends Provider {
const newThumbCue = {
...newThumb,
...this._makeCuePointStartEndTime(newThumb.createdAt),
assetUrl: makeAssetUrl(
this._player.provider.env.serviceUrl,
newThumb.assetId,
this._config.loadThumbnailWithKs ? this._player.config.session.ks : ''
)
assetUrl: makeAssetUrl(this._player.provider.env.serviceUrl, newThumb.assetId, getKs(this._player))
};
this._thumbCuePoints.push(newThumbCue);
this._thumbCuePoints = this._fixCuePointEndTime(this._thumbCuePoints);
Expand Down
9 changes: 9 additions & 0 deletions src/providers/utils.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import Player = KalturaPlayerTypes.Player;

export function isEmptyObject(obj: Record<string, any>) {
return Object.keys(obj).length === 0 && obj.constructor === Object;
}
Expand All @@ -17,3 +19,10 @@ export function sortArrayBy<T>(cuePoints: T[], primarySortKey: string, secondary
: a[primarySortKey] - b[primarySortKey];
});
}

export function getKs(player: Player): string {
if (player.shouldAddKs && player.shouldAddKs() && player.config.session?.ks) {
return player.config.session.ks;
}
return '';
}
12 changes: 4 additions & 8 deletions src/providers/vod/vod-provider.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import {Provider, ProviderRequest} from '../provider';
import {ThumbLoader} from './thumb-loader';
import {KalturaQuizQuestionCuePoint, KalturaThumbCuePoint, KalturaCodeCuePoint} from './response-types';
import {KalturaCuePointType, KalturaThumbCuePointSubType, CuepointTypeMap, CuepointsConfig} from '../../types';
import {KalturaCuePointType, KalturaThumbCuePointSubType, CuepointTypeMap} from '../../types';
import Player = KalturaPlayerTypes.Player;
import Logger = KalturaPlayerTypes.Logger;
import EventManager = KalturaPlayerTypes.EventManager;
import {makeAssetUrl, sortArrayBy} from '../utils';
import {makeAssetUrl, sortArrayBy, getKs} from '../utils';
import {ViewChangeLoader} from './view-change-loader';
import {QuizQuestionLoader} from './quiz-question-loader';

export class VodProvider extends Provider {
constructor(player: Player, eventManager: EventManager, logger: Logger, types: CuepointTypeMap, private _config: CuepointsConfig) {
constructor(player: Player, eventManager: EventManager, logger: Logger, types: CuepointTypeMap) {
super(player, eventManager, logger, types);
this._fetchVodData();
}
Expand Down Expand Up @@ -127,11 +127,7 @@ export class VodProvider extends Provider {
const createCuePointList = (thumbCuePoints: Array<KalturaThumbCuePoint>) => {
return thumbCuePoints.map((thumbCuePoint: KalturaThumbCuePoint) => {
return {
assetUrl: makeAssetUrl(
this._player.provider.env.serviceUrl,
thumbCuePoint.assetId,
this._config.loadThumbnailWithKs ? this._player.config.session.ks : ''
),
assetUrl: makeAssetUrl(this._player.provider.env.serviceUrl, thumbCuePoint.assetId, getKs(this._player)),
id: thumbCuePoint.id,
cuePointType: thumbCuePoint.cuePointType,
startTime: thumbCuePoint.startTime / 1000,
Expand Down
3 changes: 0 additions & 3 deletions src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,3 @@ export enum KalturaCuePointType {
// HOTSPOT = 'hotspot',
// CHAPTER = 'chapter'
}
export interface CuepointsConfig {
loadThumbnailWithKs: boolean;
}
4 changes: 2 additions & 2 deletions test/src/providers/live/live-provider.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ describe('Check Live provider', () => {
startTime: 1,
createdAt: 96,
endTime: Number.MAX_SAFE_INTEGER,
assetUrl: 'test_url/index.php/service/thumbAsset/action/serve/thumbAssetId/test_id/ks/test_ks'
assetUrl: 'test_url/index.php/service/thumbAsset/action/serve/thumbAssetId/test_id'
}
];
const playerResult = [
Expand All @@ -153,7 +153,7 @@ describe('Check Live provider', () => {
metadata: {
assetId: 'test_id',
createdAt: 96,
assetUrl: 'test_url/index.php/service/thumbAsset/action/serve/thumbAssetId/test_id/ks/test_ks'
assetUrl: 'test_url/index.php/service/thumbAsset/action/serve/thumbAssetId/test_id'
}
}
];
Expand Down
5 changes: 4 additions & 1 deletion test/src/providers/utils.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,12 @@ describe('Test provider utils', () => {
it('should get domain from URL', () => {
expect(getDomainFromUrl('http://www.test.te/test-page/test')).to.eq('http://www.test.te');
});
it('should make asset URL', () => {
it('should make asset URL with KS', () => {
expect(makeAssetUrl('http://test.te', 111, 222)).to.eq('http://test.te/index.php/service/thumbAsset/action/serve/thumbAssetId/111/ks/222');
});
it('should make asset URL without KS', () => {
expect(makeAssetUrl('http://test.te', 111, '')).to.eq('http://test.te/index.php/service/thumbAsset/action/serve/thumbAssetId/111');
});
it('should sort array by property', () => {
expect(sortArrayBy([{a: 2}, {a: 0.5}, {a: 1}], 'a')).to.eql([{a: 0.5}, {a: 1}, {a: 2}]);
expect(
Expand Down

0 comments on commit dfcf45c

Please sign in to comment.