From dbc776950b76b130633a75b8fc30f5550911428c Mon Sep 17 00:00:00 2001 From: Yair Ansbacher Date: Sun, 27 Aug 2017 10:50:16 +0300 Subject: [PATCH] feat(ovp-provider): expose dvr status (#25) --- src/entities/media-entry.js | 5 +++++ src/k-provider/ovp/ovp-provider.js | 3 +++ src/k-provider/ovp/provider-parser.js | 1 + src/k-provider/ovp/response-types/kaltura-media-entry.js | 6 ++++++ src/k-provider/ovp/services/base-entry-service.js | 2 +- test/src/k-provider/ovp/player-config-parsed.js | 6 ++++++ 6 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/entities/media-entry.js b/src/entities/media-entry.js index 9a876327..5f56a748 100644 --- a/src/entities/media-entry.js +++ b/src/entities/media-entry.js @@ -38,6 +38,11 @@ export default class MediaEntry { * @type {Object} */ metaData: Object; + /** + * @member - DVR status + * @type {number} + */ + dvrStatus: number; /** * @constructor diff --git a/src/k-provider/ovp/ovp-provider.js b/src/k-provider/ovp/ovp-provider.js index 89cc5636..2afb8e3d 100644 --- a/src/k-provider/ovp/ovp-provider.js +++ b/src/k-provider/ovp/ovp-provider.js @@ -19,6 +19,7 @@ type playerConfig = { session: Object, sources: MediaSources, duration: number, + dvr: boolean, type: string, metadata: Object, plugins: Object @@ -124,6 +125,7 @@ export class OvpProvider { sources: new MediaSources(), duration: 0, type: "Unknown", + dvr: false, metadata: {}, plugins: {} }; @@ -152,6 +154,7 @@ export class OvpProvider { config.sources = mediaEntry.sources; config.duration = mediaEntry.duration; config.type = mediaEntry.type; + config.dvr = !!mediaEntry.dvrStatus; config.metadata = mediaEntry.metaData; } } diff --git a/src/k-provider/ovp/provider-parser.js b/src/k-provider/ovp/provider-parser.js index 7a39dffc..7001abb6 100644 --- a/src/k-provider/ovp/provider-parser.js +++ b/src/k-provider/ovp/provider-parser.js @@ -81,6 +81,7 @@ export default class ProviderParser { case EntryTypes.LIVE_STREAM.value: case EntryTypes.LIVE_CHANNEL.value: type = MediaEntryTypes.Live; + mediaEntry.dvrStatus = entry.dvrStatus; break; default: type = MediaEntryTypes.Unknown; diff --git a/src/k-provider/ovp/response-types/kaltura-media-entry.js b/src/k-provider/ovp/response-types/kaltura-media-entry.js index 57ba069b..07aa6a6b 100644 --- a/src/k-provider/ovp/response-types/kaltura-media-entry.js +++ b/src/k-provider/ovp/response-types/kaltura-media-entry.js @@ -50,6 +50,11 @@ export default class KalturaMediaEntry { * @type {string} */ poster: string; + /** + * @member - DVR status + * @type {number} + */ + dvrStatus: number; /** * @constructor @@ -65,6 +70,7 @@ export default class KalturaMediaEntry { this.flavorParamsIds = entry.flavorParamsIds; this.duration = entry.duration; this.poster = entry.thumbnailUrl; + this.dvrStatus = entry.dvrStatus; } } diff --git a/src/k-provider/ovp/services/base-entry-service.js b/src/k-provider/ovp/services/base-entry-service.js index fc002085..cfc8fde6 100644 --- a/src/k-provider/ovp/services/base-entry-service.js +++ b/src/k-provider/ovp/services/base-entry-service.js @@ -63,7 +63,7 @@ export default class BaseEntryService extends OvpService { static getEntryListReqParams(entryId: string, ks: string): any { let filterParams = {redirectFromEntryId: entryId}; let responseProfileParams = { - fields: "id,name,description,thumbnailUrl,dataUrl,duration,msDuration,flavorParamsIds,mediaType,type,tags", + fields: "id,name,description,thumbnailUrl,dataUrl,duration,msDuration,flavorParamsIds,mediaType,type,tags,dvrStatus", type: 1 }; return {ks: ks, filter: filterParams, responseProfile: responseProfileParams}; diff --git a/test/src/k-provider/ovp/player-config-parsed.js b/test/src/k-provider/ovp/player-config-parsed.js index 39ef58f8..492ca517 100644 --- a/test/src/k-provider/ovp/player-config-parsed.js +++ b/test/src/k-provider/ovp/player-config-parsed.js @@ -99,6 +99,7 @@ let NoPluginsNoDrm = { ] }, "duration": 55, + "dvr": false, "type": "Vod", "metadata": { "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vel semper libero. Curabitur in felis elementum, porttitor sem ac, volutpat mi. Sed dignissim facilisis magna, ac suscipit orci suscipit id. Suspendisse feugiat sapien laoreet auctor convallis. Cras volutpat dictum massa, in pharetra erat placerat eget. Donec at elit est. Donec id cursus elit. Etiam sit amet sapien sed mi aliquam finibus at lobortis diam. Aenean at gravida libero.", @@ -167,6 +168,7 @@ let NoPluginsWithDrm = { ] }, "duration": 596, + "dvr": false, "type": "Vod", "metadata": { "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vel semper libero. Curabitur in felis elementum, porttitor sem ac, volutpat mi. Sed dignissim facilisis magna, ac suscipit orci suscipit id. Suspendisse feugiat sapien laoreet auctor convallis. Cras volutpat dictum massa, in pharetra erat placerat eget. Donec at elit est. Donec id cursus elit. Etiam sit amet sapien sed mi aliquam finibus at lobortis diam. Aenean at gravida libero.", @@ -275,6 +277,7 @@ let WithPluginsNoDrm = { ] }, "duration": 55, + "dvr": false, "type": "Vod", "metadata": { "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vel semper libero. Curabitur in felis elementum, porttitor sem ac, volutpat mi. Sed dignissim facilisis magna, ac suscipit orci suscipit id. Suspendisse feugiat sapien laoreet auctor convallis. Cras volutpat dictum massa, in pharetra erat placerat eget. Donec at elit est. Donec id cursus elit. Etiam sit amet sapien sed mi aliquam finibus at lobortis diam. Aenean at gravida libero.", @@ -414,6 +417,7 @@ let WithPluginsWithDrm = { ] }, "duration": 596, + "dvr": false, "type": "Vod", "metadata": { "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vel semper libero. Curabitur in felis elementum, porttitor sem ac, volutpat mi. Sed dignissim facilisis magna, ac suscipit orci suscipit id. Suspendisse feugiat sapien laoreet auctor convallis. Cras volutpat dictum massa, in pharetra erat placerat eget. Donec at elit est. Donec id cursus elit. Etiam sit amet sapien sed mi aliquam finibus at lobortis diam. Aenean at gravida libero.", @@ -529,6 +533,7 @@ let AudioEntryWithoutPlugins = { ] }, "duration": 0, + "dvr": false, "type": "Audio", "metadata": { "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vel semper libero. Curabitur in felis elementum, porttitor sem ac, volutpat mi. Sed dignissim facilisis magna, ac suscipit orci suscipit id. Suspendisse feugiat sapien laoreet auctor convallis. Cras volutpat dictum massa, in pharetra erat placerat eget. Donec at elit est. Donec id cursus elit. Etiam sit amet sapien sed mi aliquam finibus at lobortis diam. Aenean at gravida libero.", @@ -551,6 +556,7 @@ let ImageEntryWithoutPlugins = { "progressive": [] }, "duration": 0, + "dvr": false, "type": "Image", "metadata": { "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vel semper libero. Curabitur in felis elementum, porttitor sem ac, volutpat mi. Sed dignissim facilisis magna, ac suscipit orci suscipit id. Suspendisse feugiat sapien laoreet auctor convallis. Cras volutpat dictum massa, in pharetra erat placerat eget. Donec at elit est. Donec id cursus elit. Etiam sit amet sapien sed mi aliquam finibus at lobortis diam. Aenean at gravida libero.",