@playkit-js/playkit-js-providers 2.40.1 → 2.40.2-canary.0-45b4098

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/dist/index.d.ts +1624 -0
  2. package/dist/playkit-analytics-service.js +1 -1
  3. package/dist/playkit-analytics-service.js.map +1 -1
  4. package/dist/playkit-bookmark-service.js +1 -1
  5. package/dist/playkit-bookmark-service.js.map +1 -1
  6. package/dist/playkit-ott-provider.js +1 -1
  7. package/dist/playkit-ott-provider.js.map +1 -1
  8. package/dist/playkit-ovp-provider.js +2 -1
  9. package/dist/playkit-ovp-provider.js.LICENSE.txt +1 -0
  10. package/dist/playkit-ovp-provider.js.map +1 -1
  11. package/dist/playkit-stats-service.js +1 -1
  12. package/dist/playkit-stats-service.js.map +1 -1
  13. package/dist/tsdoc-metadata.json +11 -0
  14. package/flow-typed/types/media-config-sources.js +1 -1
  15. package/flow-typed/types/media-sources.js +1 -1
  16. package/package.json +49 -46
  17. package/playkit-analytics-service/package.json +5 -0
  18. package/playkit-bookmark-service/package.json +5 -0
  19. package/playkit-ott-provider/package.json +5 -0
  20. package/playkit-ovp-provider/package.json +5 -0
  21. package/playkit-stats-service/package.json +5 -0
  22. package/src/entities/bumper.ts +21 -0
  23. package/src/entities/drm.ts +47 -0
  24. package/src/entities/entry-list.ts +13 -0
  25. package/src/entities/image-source.ts +36 -0
  26. package/src/entities/media-entry.ts +104 -0
  27. package/src/entities/media-format.ts +47 -0
  28. package/src/entities/media-source.ts +70 -0
  29. package/src/entities/media-sources.ts +79 -0
  30. package/src/entities/playlist.ts +41 -0
  31. package/src/k-provider/common/base-provider-parser.ts +0 -0
  32. package/src/k-provider/common/base-provider.ts +112 -0
  33. package/src/k-provider/common/base-service-result.ts +56 -0
  34. package/src/k-provider/common/data-loader-manager.ts +115 -0
  35. package/src/k-provider/common/multi-request-builder.ts +111 -0
  36. package/src/k-provider/common/response-types/kaltura-access-control-message.ts +21 -0
  37. package/src/k-provider/common/response-types/kaltura-drm-playback-plugin-data.ts +38 -0
  38. package/src/k-provider/ott/config.ts +22 -0
  39. package/src/k-provider/ott/index.ts +14 -0
  40. package/src/k-provider/ott/loaders/asset-list-loader.ts +68 -0
  41. package/src/k-provider/ott/loaders/asset-loader.ts +69 -0
  42. package/src/k-provider/ott/loaders/data-loader-manager.ts +15 -0
  43. package/src/k-provider/ott/loaders/session-loader.ts +62 -0
  44. package/src/k-provider/ott/provider-parser.ts +285 -0
  45. package/src/k-provider/ott/provider.ts +252 -0
  46. package/src/k-provider/ott/response-types/kaltura-asset.ts +105 -0
  47. package/src/k-provider/ott/response-types/kaltura-bumper-playback-plugin-data.ts +27 -0
  48. package/src/k-provider/ott/response-types/kaltura-playback-context.ts +73 -0
  49. package/src/k-provider/ott/response-types/kaltura-playback-source.ts +62 -0
  50. package/src/k-provider/ott/response-types/kaltura-rule-action.ts +25 -0
  51. package/src/k-provider/ott/services/asset-service.ts +50 -0
  52. package/src/k-provider/ott/services/bookmark/bookmark-service.ts +48 -0
  53. package/src/k-provider/ott/services/bookmark/index.ts +11 -0
  54. package/src/k-provider/ott/services/ott-service.ts +33 -0
  55. package/src/k-provider/ott/services/user-service.ts +31 -0
  56. package/src/k-provider/ovp/config.ts +28 -0
  57. package/src/k-provider/ovp/external-captions-builder.ts +37 -0
  58. package/src/k-provider/ovp/index.ts +13 -0
  59. package/src/k-provider/ovp/loaders/data-loader-manager.ts +17 -0
  60. package/src/k-provider/ovp/loaders/entry-list-loader.ts +69 -0
  61. package/src/k-provider/ovp/loaders/media-entry-loader.ts +84 -0
  62. package/src/k-provider/ovp/loaders/playlist-loader.ts +69 -0
  63. package/src/k-provider/ovp/loaders/session-loader.ts +62 -0
  64. package/src/k-provider/ovp/loaders/ui-config-loader.ts +71 -0
  65. package/src/k-provider/ovp/play-source-url-builder.ts +59 -0
  66. package/src/k-provider/ovp/provider-parser.ts +461 -0
  67. package/src/k-provider/ovp/provider.ts +358 -0
  68. package/src/k-provider/ovp/regex-action-handler.ts +149 -0
  69. package/src/k-provider/ovp/request-params/base-entry-response-profile.ts +28 -0
  70. package/src/k-provider/ovp/response-types/index.ts +21 -0
  71. package/src/k-provider/ovp/response-types/kaltura-access-control-modify-request-host-regex-action.ts +35 -0
  72. package/src/k-provider/ovp/response-types/kaltura-base-entry-list-response.ts +30 -0
  73. package/src/k-provider/ovp/response-types/kaltura-bumper.ts +25 -0
  74. package/src/k-provider/ovp/response-types/kaltura-flavor-asset.ts +108 -0
  75. package/src/k-provider/ovp/response-types/kaltura-media-entries.ts +28 -0
  76. package/src/k-provider/ovp/response-types/kaltura-media-entry.ts +189 -0
  77. package/src/k-provider/ovp/response-types/kaltura-metadata-list-response.ts +22 -0
  78. package/src/k-provider/ovp/response-types/kaltura-metadata.ts +50 -0
  79. package/src/k-provider/ovp/response-types/kaltura-playback-context.ts +95 -0
  80. package/src/k-provider/ovp/response-types/kaltura-playback-source.ts +89 -0
  81. package/src/k-provider/ovp/response-types/kaltura-playlist.ts +33 -0
  82. package/src/k-provider/ovp/response-types/kaltura-rule-action.ts +27 -0
  83. package/src/k-provider/ovp/response-types/kaltura-ui-conf-response.ts +89 -0
  84. package/src/k-provider/ovp/response-types/kaltura-user-entry-list-response.ts +30 -0
  85. package/src/k-provider/ovp/response-types/kaltura-user-entry.ts +57 -0
  86. package/src/k-provider/ovp/services/analytics/analytics-service.ts +58 -0
  87. package/src/k-provider/ovp/services/analytics/index.ts +11 -0
  88. package/src/k-provider/ovp/services/base-entry-service.ts +75 -0
  89. package/src/k-provider/ovp/services/meta-data-service.ts +29 -0
  90. package/src/k-provider/ovp/services/ovp-service.ts +32 -0
  91. package/src/k-provider/ovp/services/playlist-service.ts +95 -0
  92. package/src/k-provider/ovp/services/session-service.ts +27 -0
  93. package/src/k-provider/ovp/services/stats/index.ts +11 -0
  94. package/src/k-provider/ovp/services/stats/stats-service.ts +32 -0
  95. package/src/k-provider/ovp/services/ui-conf-service.ts +32 -0
  96. package/src/types/adapter-data-config.ts +1 -0
  97. package/src/types/caption-type.ts +1 -0
  98. package/src/types/drm-data.ts +5 -0
  99. package/src/types/entry-list.ts +6 -0
  100. package/src/types/env-config.ts +7 -0
  101. package/src/types/external-caption-object.ts +7 -0
  102. package/src/types/filter-options.ts +3 -0
  103. package/src/types/index.ts +34 -0
  104. package/src/types/loader.ts +7 -0
  105. package/src/types/media-config-metadata.ts +13 -0
  106. package/src/types/media-config-session.ts +6 -0
  107. package/src/types/media-config-sources.ts +20 -0
  108. package/src/types/media-config.ts +8 -0
  109. package/src/types/media-entry.ts +16 -0
  110. package/src/types/media-format.ts +5 -0
  111. package/src/types/media-info.ts +21 -0
  112. package/src/types/media-source.ts +12 -0
  113. package/src/types/media-sources.ts +11 -0
  114. package/src/types/network-retry-parameters.ts +5 -0
  115. package/src/types/playback-context.ts +10 -0
  116. package/src/types/playlist-info.ts +4 -0
  117. package/src/types/playlist-item.ts +5 -0
  118. package/src/types/playlist-metadata.ts +4 -0
  119. package/src/types/playlist.ts +10 -0
  120. package/src/types/poster.ts +5 -0
  121. package/src/types/provider-options.ts +17 -0
  122. package/src/types/request-loader.ts +6 -0
  123. package/src/util/clone.ts +23 -0
  124. package/src/util/error/category.ts +11 -0
  125. package/src/util/error/code.ts +77 -0
  126. package/src/util/error/error.ts +47 -0
  127. package/src/util/error/severity.ts +21 -0
  128. package/src/util/logger.ts +108 -0
  129. package/src/util/param.ts +45 -0
  130. package/src/util/request-builder.ts +187 -0
  131. package/src/util/xml-parser.ts +39 -0
  132. package/CHANGELOG.md +0 -959
  133. package/samples/ott/bookmark.html +0 -23
  134. package/samples/ott/provider.html +0 -28
  135. package/samples/ovp/provider.html +0 -30
  136. package/samples/ovp/stats.html +0 -17
@@ -0,0 +1,73 @@
1
+ import ServiceResult from '../../common/base-service-result';
2
+ import {KalturaAccessControlMessage} from '../../common/response-types/kaltura-access-control-message';
3
+ import KalturaRuleAction from './kaltura-rule-action';
4
+ import KalturaPlaybackSource from './kaltura-playback-source';
5
+ import KalturaBumpersPlaybackPluginData from './kaltura-bumper-playback-plugin-data';
6
+
7
+ export default class KalturaPlaybackContext extends ServiceResult {
8
+ public static Type: {[type: string]: string} = {
9
+ DOWNLOAD: 'DOWNLOAD',
10
+ TRAILER: 'TRAILER',
11
+ CATCHUP: 'CATCHUP',
12
+ START_OVER: 'START_OVER',
13
+ PLAYBACK: 'PLAYBACK'
14
+ };
15
+ /**
16
+ * @member - The playback sources
17
+ * @type {Array<KalturaPlaybackSource>}
18
+ */
19
+ public sources: Array<KalturaPlaybackSource> = [];
20
+ /**
21
+ * @member - Array of actions as received from the rules that invalidated
22
+ * @type {Array<KalturaRuleAction>}
23
+ */
24
+ public actions: KalturaRuleAction[] = [];
25
+ /**
26
+ * @member - Array of access control massages
27
+ * @type {Array<KalturaAccessControlMessage>}
28
+ */
29
+ public messages: Array<KalturaAccessControlMessage> = [];
30
+ /**
31
+ * @member - Array of bumper plugins
32
+ * @type {Array<KalturaBumpersPlaybackPluginData>}
33
+ */
34
+ public plugins: Array<KalturaBumpersPlaybackPluginData> = [];
35
+
36
+ /**
37
+ * @constructor
38
+ * @param {Object} response The response
39
+ */
40
+ constructor(response: any) {
41
+ super(response);
42
+ if (!this.hasError) {
43
+ const messages = response.messages;
44
+ if (messages) {
45
+ messages.map(message => this.messages.push(new KalturaAccessControlMessage(message)));
46
+ }
47
+ const actions = response.actions;
48
+ if (actions) {
49
+ actions.map(action => this.actions.push(new KalturaRuleAction(action)));
50
+ }
51
+ const sources = response.sources;
52
+ if (sources) {
53
+ sources.map(source => this.sources.push(new KalturaPlaybackSource(source)));
54
+ }
55
+ const plugins = response.plugins;
56
+ if (plugins) {
57
+ plugins.map(plugin => this.plugins.push(new KalturaBumpersPlaybackPluginData(plugin)));
58
+ }
59
+ }
60
+ }
61
+
62
+ public hasBlockAction(): boolean {
63
+ return this.getBlockAction() !== undefined;
64
+ }
65
+
66
+ public getBlockAction(): KalturaRuleAction | undefined {
67
+ return this.actions.find(action => action.type === KalturaRuleAction.Type.BLOCK);
68
+ }
69
+
70
+ public getErrorMessages(): Array<KalturaAccessControlMessage> {
71
+ return this.messages;
72
+ }
73
+ }
@@ -0,0 +1,62 @@
1
+ import {KalturaDrmPlaybackPluginData} from '../../common/response-types/kaltura-drm-playback-plugin-data';
2
+
3
+ export type OTTKalturaPlaybackSource = KalturaPlaybackSource;
4
+
5
+ export default class KalturaPlaybackSource {
6
+ public format: string;
7
+ public protocols: string;
8
+ public drm: Array<KalturaDrmPlaybackPluginData> = [];
9
+ public adsPolicy: string;
10
+ public adsParam: string;
11
+ public duration: number;
12
+ public url: string;
13
+ public type: string;
14
+ public fileId: number;
15
+
16
+ /**
17
+ * @constructor
18
+ * @param {Object} source The response
19
+ */
20
+ constructor(source: any) {
21
+ this.format = source.format;
22
+ this.adsPolicy = source.adsPolicy;
23
+ this.adsParam = source.adsParam;
24
+ this.duration = source.duration;
25
+ this.url = source.url;
26
+ this.type = source.type;
27
+ this.fileId = source.id;
28
+ this.protocols = source.protocols;
29
+ if (source.drm) {
30
+ source.drm.map(drm => this.drm.push(new KalturaDrmPlaybackPluginData(drm)));
31
+ }
32
+ }
33
+
34
+ /**
35
+ * Checks if source has DRM data
36
+ * @function hasDrmData
37
+ * @returns {boolean} Is source has DRM
38
+ */
39
+ public hasDrmData(): boolean {
40
+ return this.drm && this.drm.length > 0;
41
+ }
42
+
43
+ /**
44
+ * Returns source desired protocol if supported
45
+ * @param {string} protocol - the desired protocol for the source (base play url protocol)
46
+ * @returns {string} - protocol if protocol is in the protocols list - if not empty string returned
47
+ */
48
+ public getProtocol(protocol: string): string {
49
+ let returnValue: string = '';
50
+ if (this.protocols && this.protocols.length > 0) {
51
+ const protocolsArr: Array<string> = this.protocols.split(',');
52
+ protocolsArr.forEach(p => {
53
+ if (p === protocol) {
54
+ returnValue = p;
55
+ }
56
+ });
57
+ } else if (protocol === 'http') {
58
+ return protocol;
59
+ }
60
+ return returnValue;
61
+ }
62
+ }
@@ -0,0 +1,25 @@
1
+ export default class KalturaRuleAction {
2
+ public static Type: {[type: string]: string | number} = {
3
+ BLOCK: 'BLOCK',
4
+ START_DATE_OFFSET: 'START_DATE_OFFSET',
5
+ END_DATE_OFFSET: 'END_DATE_OFFSET',
6
+ USER_BLOCK: 'USER_BLOCK',
7
+ ALLOW_PLAYBACK: 'ALLOW_PLAYBACK',
8
+ BLOCK_PLAYBACK: 'BLOCK_PLAYBACK',
9
+ APPLY_DISCOUNT_MODULE: 'APPLY_DISCOUNT_MODULE'
10
+ };
11
+
12
+ /**
13
+ * @member - The type of the action
14
+ * @type {string|number}
15
+ */
16
+ public type: string | number;
17
+
18
+ /**
19
+ * @constructor
20
+ * @param {Object} data - The response
21
+ */
22
+ constructor(data: any) {
23
+ this.type = data.type;
24
+ }
25
+ }
@@ -0,0 +1,50 @@
1
+ import OTTService from './ott-service';
2
+ import RequestBuilder from '../../../util/request-builder';
3
+ import {ProviderPlaybackContextOptions} from '../../../types';
4
+
5
+ const SERVICE_NAME: string = 'asset';
6
+
7
+ export default class OTTAssetService extends OTTService {
8
+ /**
9
+ * Creates an instance of RequestBuilder for session.startWidgetSession
10
+ * @function anonymousSession
11
+ * @param {string} serviceUrl The service base URL
12
+ * @param {string} ks The partner ID
13
+ * @param {string} assetId The asset ID
14
+ * @param {string} type The asset type (media/recording/epg)
15
+ * @param {ProviderPlaybackContextOptions} playbackContextOptions The playbackContextOptions
16
+ * @returns {RequestBuilder} The request builder
17
+ * @static
18
+ */
19
+ public static getPlaybackContext(
20
+ serviceUrl: string,
21
+ ks: string,
22
+ assetId: string,
23
+ type: string,
24
+ playbackContextOptions: ProviderPlaybackContextOptions
25
+ ): RequestBuilder {
26
+ const headers: Map<string, string> = new Map();
27
+ headers.set('Content-Type', 'application/json');
28
+ const request = new RequestBuilder(headers);
29
+ request.service = SERVICE_NAME;
30
+ request.action = 'getPlaybackContext';
31
+ request.method = 'POST';
32
+ request.url = request.getUrl(serviceUrl);
33
+ const contextDataParams: any = {objectType: 'KalturaPlaybackContextOptions'};
34
+ Object.assign(contextDataParams, playbackContextOptions);
35
+ request.params = {assetId: assetId, assetType: type, contextDataParams: contextDataParams, ks: ks};
36
+ return request;
37
+ }
38
+
39
+ public static get(serviceUrl: string, ks: string, assetId: string, assetReferenceType: string): RequestBuilder {
40
+ const headers: Map<string, string> = new Map();
41
+ headers.set('Content-Type', 'application/json');
42
+ const request = new RequestBuilder(headers);
43
+ request.service = SERVICE_NAME;
44
+ request.action = 'get';
45
+ request.method = 'POST';
46
+ request.url = request.getUrl(serviceUrl);
47
+ request.params = {id: assetId, assetReferenceType: assetReferenceType, ks: ks};
48
+ return request;
49
+ }
50
+ }
@@ -0,0 +1,48 @@
1
+ import OTTService from '../ott-service';
2
+ import RequestBuilder from '../../../../util/request-builder';
3
+ import OTTConfiguration from '../../config';
4
+
5
+ const SERVICE_NAME: string = 'bookmark';
6
+
7
+ export default class OTTBookmarkService extends OTTService {
8
+ /**
9
+ * Creates an instance of RequestBuilder for session.startWidgetSession
10
+ * @function add
11
+ * @param {string} serviceUrl - The service url
12
+ * @param {string} ks - The ks
13
+ * @param {Object} bookmark - The udid
14
+ * @returns {RequestBuilder} - The request builder
15
+ * @static
16
+ */
17
+ public static add(serviceUrl: string, ks: string, bookmark: any): RequestBuilder {
18
+ const headers: Map<string, string> = new Map();
19
+ headers.set('Content-Type', 'application/json');
20
+ const request = new RequestBuilder(headers);
21
+ request.service = SERVICE_NAME;
22
+ request.action = 'add';
23
+ request.method = 'POST';
24
+ request.url = request.getUrl(serviceUrl);
25
+ const playerData: any = {
26
+ objectType: 'KalturaBookmarkPlayerData',
27
+ action: bookmark.playerData.action,
28
+ averageBitrate: bookmark.playerData.averageBitrate,
29
+ totalBitrate: bookmark.playerData.totalBitrate,
30
+ currentBitrate: bookmark.playerData.currentBitrate,
31
+ fileId: bookmark.playerData.fileId
32
+ };
33
+ const bookmarkServiceParams: any = {
34
+ objectType: 'KalturaBookmark',
35
+ type: bookmark.type,
36
+ context: bookmark.context,
37
+ id: bookmark.id,
38
+ position: bookmark.position,
39
+ playerData: playerData
40
+ };
41
+ if (bookmark.programId) bookmarkServiceParams.programId = bookmark.programId;
42
+ const config = OTTConfiguration.get();
43
+ const serviceParams = config.serviceParams;
44
+ Object.assign(serviceParams, {bookmark: bookmarkServiceParams, ks: ks});
45
+ request.params = JSON.stringify(serviceParams);
46
+ return request;
47
+ }
48
+ }
@@ -0,0 +1,11 @@
1
+ import RequestBuilder from '../../../../util/request-builder';
2
+ import OTTConfiguration from '../../config';
3
+ import OTTBookmarkService from './bookmark-service';
4
+
5
+ declare let __VERSION__: string;
6
+ declare let __NAME__: string;
7
+
8
+ const NAME = __NAME__ + '-bookmark-service';
9
+ const VERSION = __VERSION__;
10
+
11
+ export {OTTBookmarkService, OTTConfiguration, RequestBuilder, NAME, VERSION};
@@ -0,0 +1,33 @@
1
+ import MultiRequestBuilder from '../../common/multi-request-builder';
2
+ import OTTConfiguration from '../config';
3
+
4
+ const SERVICE_NAME: string = 'multirequest';
5
+
6
+ export default class OTTService {
7
+ /**
8
+ * Gets a new instance of MultiRequestBuilder with ott params
9
+ * @function getMultiRequest
10
+ * @param {string} ks The ks
11
+ * @param {string} partnerId The partner ID
12
+ * @returns {MultiRequestBuilder} The multi request builder
13
+ * @static
14
+ */
15
+ public static getMultiRequest(ks: string, partnerId?: number): MultiRequestBuilder {
16
+ const config = OTTConfiguration.get();
17
+ const ottParams = config.serviceParams;
18
+ if (ks) {
19
+ Object.assign(ottParams, {ks: ks});
20
+ }
21
+ if (partnerId) {
22
+ Object.assign(ottParams, {partnerId: partnerId});
23
+ }
24
+ const headers: Map<string, string> = new Map();
25
+ headers.set('Content-Type', 'application/json');
26
+ const multiReq = new MultiRequestBuilder(headers);
27
+ multiReq.method = 'POST';
28
+ multiReq.service = SERVICE_NAME;
29
+ multiReq.url = multiReq.getUrl(config.serviceUrl);
30
+ multiReq.params = ottParams;
31
+ return multiReq;
32
+ }
33
+ }
@@ -0,0 +1,31 @@
1
+ import OTTService from './ott-service';
2
+ import RequestBuilder from '../../../util/request-builder';
3
+
4
+ const SERVICE_NAME: string = 'ottuser';
5
+
6
+ export default class OTTUserService extends OTTService {
7
+ /**
8
+ * Creates an instance of RequestBuilder for session.startWidgetSession
9
+ * @function anonymousSession
10
+ * @param {string} serviceUrl The service base URL
11
+ * @param {string} partnerId The partner ID
12
+ * @param {string} udid The udid
13
+ * @returns {RequestBuilder} The request builder
14
+ * @static
15
+ */
16
+ public static anonymousLogin(serviceUrl: string, partnerId: number, udid?: string): RequestBuilder {
17
+ const headers: Map<string, string> = new Map();
18
+ headers.set('Content-Type', 'application/json');
19
+ const request = new RequestBuilder(headers);
20
+ request.service = SERVICE_NAME;
21
+ request.action = 'anonymousLogin';
22
+ request.method = 'POST';
23
+ request.url = request.getUrl(serviceUrl);
24
+ const params: any = {partnerId: partnerId};
25
+ if (udid) {
26
+ Object.assign(params, {udid: udid});
27
+ }
28
+ request.params = params;
29
+ return request;
30
+ }
31
+ }
@@ -0,0 +1,28 @@
1
+ import {clone} from '../../util/clone';
2
+ import {ProviderEnvConfigObject} from '../../types';
3
+
4
+ const defaultConfig: any = {
5
+ serviceUrl: 'https://cdnapisec.kaltura.com/api_v3',
6
+ cdnUrl: 'https://cdnapisec.kaltura.com',
7
+ serviceParams: {
8
+ apiVersion: '3.3.0',
9
+ format: 1
10
+ },
11
+ useApiCaptions: true,
12
+ loadThumbnailWithKs: false,
13
+ replaceHostOnlyManifestUrls: false
14
+ };
15
+
16
+ export default class OVPConfiguration {
17
+ public static set(clientConfig?: ProviderEnvConfigObject): void {
18
+ if (clientConfig) {
19
+ Object.assign(defaultConfig, clientConfig);
20
+ }
21
+ }
22
+
23
+ public static get(): any {
24
+ return clone(defaultConfig);
25
+ }
26
+ }
27
+
28
+ export {OVPConfiguration};
@@ -0,0 +1,37 @@
1
+ import {addKsToUrl} from './provider-parser';
2
+ import {CaptionType, PKExternalCaptionObject} from '../../types';
3
+
4
+ const KalturaCaptionType: CaptionType = {
5
+ SRT: '1',
6
+ DFXP: '2',
7
+ WEBVTT: '3',
8
+ CAP: '4'
9
+ };
10
+
11
+ const CaptionsFormatsMap: {[format: string]: string} = {
12
+ '3': 'vtt',
13
+ '1': 'srt'
14
+ };
15
+
16
+ class ExternalCaptionsBuilder {
17
+ public static createConfig(captions: Array<any>, ks: string): Array<PKExternalCaptionObject> {
18
+ return captions.map(caption => {
19
+ let url = caption.url;
20
+ let type = CaptionsFormatsMap[caption.format];
21
+ if ([KalturaCaptionType.DFXP, KalturaCaptionType.CAP].includes(caption.format)) {
22
+ url = caption.webVttUrl;
23
+ type = CaptionsFormatsMap[KalturaCaptionType.WEBVTT];
24
+ }
25
+ url = addKsToUrl(url, ks);
26
+ return {
27
+ default: !!caption.isDefault,
28
+ type: type,
29
+ language: caption.languageCode,
30
+ label: caption.label,
31
+ url: url
32
+ };
33
+ });
34
+ }
35
+ }
36
+
37
+ export {ExternalCaptionsBuilder};
@@ -0,0 +1,13 @@
1
+ import OVPProvider from './provider';
2
+ import OVPProviderParser from './provider-parser';
3
+ import RequestBuilder from '../../util/request-builder';
4
+ import * as ResponseTypes from './response-types';
5
+
6
+ declare let __VERSION__: string;
7
+ declare let __NAME__: string;
8
+
9
+ const NAME = __NAME__ + '-ovp';
10
+ const VERSION = __VERSION__;
11
+
12
+ export {OVPProvider as Provider, OVPProviderParser as ProviderParser, NAME, VERSION, RequestBuilder, ResponseTypes};
13
+
@@ -0,0 +1,17 @@
1
+ import DataLoaderManager from '../../common/data-loader-manager';
2
+ import OVPService from '../services/ovp-service';
3
+ import {ProviderNetworkRetryParameters} from '../../../types';
4
+
5
+ /**
6
+ * OTTDataLoaderManager is a class that handles the OVP data loading
7
+ * @param {string} playerVersion - player version
8
+ * @param {string} partnerId - partner id
9
+ * @param {string} ks - ks
10
+ * @param {ProviderNetworkRetryParameters} [networkRetryConfig] - network retry configuration
11
+ */
12
+ export default class OVPDataLoaderManager extends DataLoaderManager {
13
+ constructor(playerVersion: string, partnerId: number, ks: string = '', networkRetryConfig: ProviderNetworkRetryParameters) {
14
+ super(networkRetryConfig);
15
+ this._multiRequest = OVPService.getMultiRequest(playerVersion, ks, partnerId);
16
+ }
17
+ }
@@ -0,0 +1,69 @@
1
+ import RequestBuilder from '../../../util/request-builder';
2
+ import OVPConfiguration from '../config';
3
+ import OVPBaseEntryService from '../services/base-entry-service';
4
+ import {KalturaBaseEntryListResponse} from '../response-types/kaltura-base-entry-list-response';
5
+ import {ILoader} from '../../../types';
6
+
7
+ export default class OVPEntryListLoader implements ILoader {
8
+ private _entries: Array<string>;
9
+ private _requests!: Array<RequestBuilder>;
10
+ private _response: any = {playlistItems: {entries: []}};
11
+
12
+ public static get id(): string {
13
+ return 'entry_list';
14
+ }
15
+
16
+ /**
17
+ * @constructor
18
+ * @param {Object} params loader params
19
+ */
20
+ constructor(params: any) {
21
+ this.requests = this.buildRequests(params);
22
+ this._entries = params.entries;
23
+ }
24
+
25
+ public set requests(requests: Array<RequestBuilder>) {
26
+ this._requests = requests;
27
+ }
28
+
29
+ public get requests(): Array<RequestBuilder> {
30
+ return this._requests;
31
+ }
32
+
33
+ public set response(response: any) {
34
+ let mediaEntryResponse: KalturaBaseEntryListResponse;
35
+ response.forEach(item => {
36
+ mediaEntryResponse = new KalturaBaseEntryListResponse(item.data);
37
+ this._response.playlistItems.entries.push(mediaEntryResponse.entries[0]);
38
+ });
39
+ }
40
+
41
+ public get response(): any {
42
+ return this._response;
43
+ }
44
+
45
+ /**
46
+ * Builds loader requests
47
+ * @function
48
+ * @param {Object} params Requests parameters
49
+ * @returns {RequestBuilder} The request builder
50
+ * @static
51
+ */
52
+ public buildRequests(params: any): Array<RequestBuilder> {
53
+ const config = OVPConfiguration.get();
54
+ const requests: Array<RequestBuilder> = [];
55
+ params.entries.forEach(entry => {
56
+ requests.push(OVPBaseEntryService.list(config.serviceUrl, params.ks, entry.entryId || entry, params.redirectFromEntryId, entry.referenceId));
57
+ });
58
+ return requests;
59
+ }
60
+
61
+ /**
62
+ * Loader validation function
63
+ * @function
64
+ * @returns {boolean} Is valid
65
+ */
66
+ public isValid(): boolean {
67
+ return !!(this._entries && this._entries.length);
68
+ }
69
+ }
@@ -0,0 +1,84 @@
1
+ import RequestBuilder from '../../../util/request-builder';
2
+ import OVPBaseEntryService from '../services/base-entry-service';
3
+ import OVPMetadataService from '../services/meta-data-service';
4
+ import OVPConfiguration from '../config';
5
+ import {KalturaPlaybackContext} from '../response-types';
6
+ import {KalturaMetadataListResponse} from '../response-types';
7
+ import {KalturaBaseEntryListResponse} from '../response-types';
8
+ import {KalturaMediaEntry} from '../response-types';
9
+ import {ILoader} from '../../../types';
10
+
11
+ type OVPMediaEntryLoaderResponse = {
12
+ entry: KalturaMediaEntry,
13
+ playBackContextResult: KalturaPlaybackContext,
14
+ metadataListResult: KalturaMetadataListResponse
15
+ };
16
+ export type {OVPMediaEntryLoaderResponse};
17
+
18
+ export default class OVPMediaEntryLoader implements ILoader {
19
+ private _entryId: string;
20
+ private _referenceId: string;
21
+ private _requests!: Array<RequestBuilder>;
22
+ private _response: any = {};
23
+
24
+ public static get id(): string {
25
+ return 'media';
26
+ }
27
+
28
+ /**
29
+ * @constructor
30
+ * @param {Object} params loader params
31
+ * @boolean {boolean} useExternalCaptions - if we should add captions request to the multirequests.
32
+ */
33
+ constructor(params: any) {
34
+ this.requests = this.buildRequests(params);
35
+ this._entryId = params.entryId;
36
+ this._referenceId = params.referenceId;
37
+ }
38
+
39
+ public set requests(requests: Array<RequestBuilder>) {
40
+ this._requests = requests;
41
+ }
42
+
43
+ public get requests(): Array<RequestBuilder> {
44
+ return this._requests;
45
+ }
46
+
47
+ public set response(response: any) {
48
+ const mediaEntryResponse: KalturaBaseEntryListResponse = new KalturaBaseEntryListResponse(response[0].data);
49
+ this._response.entry = mediaEntryResponse.entries[0];
50
+ this._response.playBackContextResult = new KalturaPlaybackContext(response[1].data);
51
+ this._response.metadataListResult = new KalturaMetadataListResponse(response[2].data);
52
+ }
53
+
54
+ public get response(): OVPMediaEntryLoaderResponse {
55
+ return this._response;
56
+ }
57
+
58
+ /**
59
+ * Builds loader requests
60
+ * @function
61
+ * @param {Object} params Requests parameters
62
+ * @returns {RequestBuilder} The request builder
63
+ * @static
64
+ */
65
+ public buildRequests(params: any): Array<RequestBuilder> {
66
+ const config = OVPConfiguration.get();
67
+ const requests: Array<RequestBuilder> = [];
68
+ requests.push(OVPBaseEntryService.list(config.serviceUrl, params.ks, params.entryId, params.redirectFromEntryId, params.referenceId));
69
+ // Use the entry id from the request result to support loading by referenceId
70
+ const serviceEntryId = params.ks === '{1:result:ks}' ? '{2:result:objects:0:id}' : '{1:result:objects:0:id}';
71
+ requests.push(OVPBaseEntryService.getPlaybackContext(config.serviceUrl, params.ks, serviceEntryId));
72
+ requests.push(OVPMetadataService.list(config.serviceUrl, params.ks, serviceEntryId));
73
+ return requests;
74
+ }
75
+
76
+ /**
77
+ * Loader validation function
78
+ * @function
79
+ * @returns {boolean} Is valid
80
+ */
81
+ public isValid(): boolean {
82
+ return !!(this._entryId || this._referenceId);
83
+ }
84
+ }
@@ -0,0 +1,69 @@
1
+ import RequestBuilder from '../../../util/request-builder';
2
+ import OVPPlaylistService from '../services/playlist-service';
3
+ import OVPConfiguration from '../config';
4
+ import {KalturaPlaylist} from '../response-types';
5
+ import {KalturaMediaEntries} from '../response-types';
6
+ import {ILoader} from '../../../types';
7
+ import { KalturaUserEntryListResponse } from '../response-types';
8
+
9
+ export default class OVPPlaylistLoader implements ILoader {
10
+ private _playlistId: string;
11
+ private _requests!: Array<RequestBuilder>;
12
+ private _response: any = {};
13
+
14
+ public static get id(): string {
15
+ return 'playlist';
16
+ }
17
+
18
+ /**
19
+ * @constructor
20
+ * @param {Object} params loader params
21
+ */
22
+ constructor(params: any) {
23
+ this.requests = this.buildRequests(params);
24
+ this._playlistId = params.playlistId;
25
+ }
26
+
27
+ public set requests(requests: Array<RequestBuilder>) {
28
+ this._requests = requests;
29
+ }
30
+
31
+ public get requests(): Array<RequestBuilder> {
32
+ return this._requests;
33
+ }
34
+
35
+ public set response(response: any) {
36
+ this._response.playlistData = new KalturaPlaylist(response[0].data);
37
+ this._response.playlistItems = new KalturaMediaEntries(response[1].data);
38
+ this._response.playlistUserEntries = new KalturaUserEntryListResponse(response[2].data);
39
+ }
40
+
41
+ public get response(): any {
42
+ return this._response;
43
+ }
44
+
45
+ /**
46
+ * Builds loader requests
47
+ * @function
48
+ * @param {Object} params Requests parameters
49
+ * @returns {RequestBuilder} The request builder
50
+ * @static
51
+ */
52
+ public buildRequests(params: any): Array<RequestBuilder> {
53
+ const config = OVPConfiguration.get();
54
+ const requests: Array<RequestBuilder> = [];
55
+ requests.push(OVPPlaylistService.get(config.serviceUrl, params.ks, params.playlistId));
56
+ requests.push(OVPPlaylistService.execute(config.serviceUrl, params.ks, params.playlistId));
57
+ requests.push(OVPPlaylistService.getLastEntryId(config.serviceUrl, params.ks, params.playlistId));
58
+ return requests;
59
+ }
60
+
61
+ /**
62
+ * Loader validation function
63
+ * @function
64
+ * @returns {boolean} Is valid
65
+ */
66
+ public isValid(): boolean {
67
+ return !!this._playlistId;
68
+ }
69
+ }