@playkit-js/playkit-js-providers 2.41.0-canary.0-2452bbc → 2.41.0-canary.0-3d6d02a
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.
- package/analytics-service/package.json +6 -0
- package/bookmark-service/package.json +6 -0
- package/dist/analytics-service.d.ts +160 -0
- package/dist/bookmark-service.d.ts +157 -0
- package/dist/ott-provider.d.ts +545 -0
- package/dist/{index.d.ts → ovp-provider.d.ts} +102 -120
- package/dist/playkit-analytics-service.js +1 -1
- package/dist/playkit-analytics-service.js.map +1 -1
- package/dist/playkit-bookmark-service.js +1 -1
- package/dist/playkit-bookmark-service.js.map +1 -1
- package/dist/playkit-ott-provider.js +1 -1
- package/dist/playkit-ott-provider.js.map +1 -1
- package/dist/playkit-ovp-provider.js +1 -1
- package/dist/playkit-ovp-provider.js.map +1 -1
- package/dist/playkit-stats-service.js +1 -1
- package/dist/playkit-stats-service.js.map +1 -1
- package/dist/stats-service.d.ts +159 -0
- package/dist/tsdoc-metadata.json +1 -1
- package/dist/types.d.ts +391 -0
- package/ott-provider/package.json +6 -0
- package/ovp-provider/package.json +6 -0
- package/package.json +29 -21
- package/src/entities/document-source.ts +31 -0
- package/src/entities/media-entry.ts +2 -1
- package/src/entities/media-sources.ts +6 -1
- package/src/k-provider/common/base-provider.ts +14 -3
- package/src/k-provider/ott/provider.ts +1 -0
- package/src/k-provider/ovp/loaders/media-entry-loader.ts +4 -4
- package/src/k-provider/ovp/provider-parser.ts +22 -2
- package/src/k-provider/ovp/provider.ts +9 -5
- package/src/k-provider/ovp/regex-action-handler.ts +51 -44
- package/src/k-provider/ovp/response-types/kaltura-media-entries.ts +1 -7
- package/src/k-provider/ovp/services/base-entry-service.ts +2 -2
- package/src/types/index.ts +0 -8
- package/src/types/media-config-sources.ts +2 -0
- package/src/types/media-sources.ts +2 -0
- package/src/types/provider-options.ts +1 -0
- package/stats-service/package.json +6 -0
- package/types/package.json +5 -0
- package/playkit-analytics-service/package.json +0 -5
- package/playkit-bookmark-service/package.json +0 -5
- package/playkit-ott-provider/package.json +0 -5
- package/playkit-ovp-provider/package.json +0 -5
- package/playkit-stats-service/package.json +0 -5
|
@@ -21,6 +21,7 @@ import {KalturaAccessControlMessage} from '../common/response-types/kaltura-acce
|
|
|
21
21
|
import type {OVPMediaEntryLoaderResponse} from './loaders/media-entry-loader';
|
|
22
22
|
import {ExternalCaptionsBuilder} from './external-captions-builder';
|
|
23
23
|
import {ImageSource} from '../../entities/image-source';
|
|
24
|
+
import {DocumentSource} from '../../entities/document-source';
|
|
24
25
|
|
|
25
26
|
class OVPProviderParser {
|
|
26
27
|
private static _logger = getLogger('OVPProviderParser');
|
|
@@ -44,7 +45,7 @@ class OVPProviderParser {
|
|
|
44
45
|
const kalturaSources = playbackContext.sources;
|
|
45
46
|
|
|
46
47
|
mediaEntry.sources = OVPProviderParser._getParsedSources(kalturaSources, ks, partnerId, uiConfId, entry, playbackContext);
|
|
47
|
-
OVPProviderParser._fillBaseData(mediaEntry, entry, metadataList);
|
|
48
|
+
OVPProviderParser._fillBaseData(mediaEntry, entry, metadataList, playbackContext);
|
|
48
49
|
if (mediaEntry.type !== MediaEntry.Type.LIVE && OVPConfiguration.get().useApiCaptions && playbackContext.data.playbackCaptions) {
|
|
49
50
|
mediaEntry.sources.captions = ExternalCaptionsBuilder.createConfig(playbackContext.data.playbackCaptions, ks);
|
|
50
51
|
}
|
|
@@ -150,7 +151,7 @@ class OVPProviderParser {
|
|
|
150
151
|
}
|
|
151
152
|
}
|
|
152
153
|
|
|
153
|
-
private static _fillBaseData(mediaEntry: MediaEntry, entry: KalturaMediaEntry, metadataList?: KalturaMetadataListResponse): MediaEntry {
|
|
154
|
+
private static _fillBaseData(mediaEntry: MediaEntry, entry: KalturaMediaEntry, metadataList?: KalturaMetadataListResponse, playbackContext?: any): MediaEntry {
|
|
154
155
|
mediaEntry.poster = entry.poster;
|
|
155
156
|
mediaEntry.id = entry.id;
|
|
156
157
|
mediaEntry.duration = entry.duration;
|
|
@@ -173,6 +174,16 @@ class OVPProviderParser {
|
|
|
173
174
|
mediaEntry.dvrStatus = entry.dvrStatus;
|
|
174
175
|
}
|
|
175
176
|
|
|
177
|
+
if (playbackContext &&
|
|
178
|
+
playbackContext.flavorAssets[0] &&
|
|
179
|
+
playbackContext.flavorAssets[0].width && playbackContext.flavorAssets[0].height) {
|
|
180
|
+
|
|
181
|
+
const {height, width} = playbackContext.flavorAssets[0];
|
|
182
|
+
mediaEntry.metadata.heightRatio = +Number(height / width).toFixed(2);
|
|
183
|
+
} else {
|
|
184
|
+
mediaEntry.metadata.heightRatio = 1.78;
|
|
185
|
+
}
|
|
186
|
+
|
|
176
187
|
return mediaEntry;
|
|
177
188
|
}
|
|
178
189
|
|
|
@@ -194,6 +205,9 @@ class OVPProviderParser {
|
|
|
194
205
|
case KalturaMediaEntry.EntryType.LIVE_CHANNEL.value:
|
|
195
206
|
type = MediaEntry.Type.LIVE;
|
|
196
207
|
break;
|
|
208
|
+
case KalturaMediaEntry.EntryType.DOCUMENT.value:
|
|
209
|
+
type = MediaEntry.Type.DOCUMENT;
|
|
210
|
+
break;
|
|
197
211
|
default:
|
|
198
212
|
type = MediaEntry.Type.UNKNOWN;
|
|
199
213
|
}
|
|
@@ -246,6 +260,10 @@ class OVPProviderParser {
|
|
|
246
260
|
sources.image.push(new ImageSource(entry));
|
|
247
261
|
};
|
|
248
262
|
|
|
263
|
+
const parseDocumentSources = (): void => {
|
|
264
|
+
sources.document.push(new DocumentSource(entry));
|
|
265
|
+
};
|
|
266
|
+
|
|
249
267
|
const parseExternalMedia = (): void => {
|
|
250
268
|
const mediaSource = new MediaSource();
|
|
251
269
|
mediaSource.mimetype = 'video/youtube';
|
|
@@ -258,6 +276,8 @@ class OVPProviderParser {
|
|
|
258
276
|
parseExternalMedia();
|
|
259
277
|
} else if (entry.entryType === KalturaMediaEntry.MediaType.IMAGE.value) {
|
|
260
278
|
parseImageSources();
|
|
279
|
+
} else if (entry.type === KalturaMediaEntry.EntryType.DOCUMENT.value) {
|
|
280
|
+
parseDocumentSources();
|
|
261
281
|
} else if (kalturaSources && kalturaSources.length > 0) {
|
|
262
282
|
parseAdaptiveSources();
|
|
263
283
|
parseProgressiveSources();
|
|
@@ -18,8 +18,10 @@ import {
|
|
|
18
18
|
ProviderFilterOptionsObject,
|
|
19
19
|
ProviderMediaConfigObject,
|
|
20
20
|
ProviderMediaConfigSourcesObject,
|
|
21
|
-
ProviderOptionsObject,
|
|
22
|
-
|
|
21
|
+
ProviderOptionsObject,
|
|
22
|
+
ProviderPlaylistInfoObject,
|
|
23
|
+
ProviderPlaylistObject,
|
|
24
|
+
RequestLoader
|
|
23
25
|
} from '../../types';
|
|
24
26
|
|
|
25
27
|
export default class OVPProvider extends BaseProvider<OVPProviderMediaInfoObject> {
|
|
@@ -65,7 +67,7 @@ export default class OVPProvider extends BaseProvider<OVPProviderMediaInfoObject
|
|
|
65
67
|
this._dataLoader.add(OVPSessionLoader, {widgetId: this.widgetId});
|
|
66
68
|
}
|
|
67
69
|
const redirectFromEntryId = this._getEntryRedirectFilter(mediaInfo);
|
|
68
|
-
this._dataLoader.add(OVPMediaEntryLoader, {entryId, ks, redirectFromEntryId, referenceId});
|
|
70
|
+
this._dataLoader.add(OVPMediaEntryLoader, {entryId, ks, redirectFromEntryId, referenceId, referrer: this._referrer});
|
|
69
71
|
return this._dataLoader.fetchData().then(
|
|
70
72
|
response => {
|
|
71
73
|
try {
|
|
@@ -85,7 +87,7 @@ export default class OVPProvider extends BaseProvider<OVPProviderMediaInfoObject
|
|
|
85
87
|
});
|
|
86
88
|
}
|
|
87
89
|
|
|
88
|
-
public doRequest(loaders: Array<RequestLoader>, ks?: string): Promise<any> {
|
|
90
|
+
public doRequest(loaders: Array<RequestLoader>, ks?: string, requestsMustSucceed?: boolean): Promise<any> {
|
|
89
91
|
const theKs: string = ks || this.ks;
|
|
90
92
|
const dataLoader = new OVPDataLoaderManager(this.playerVersion, this.partnerId, theKs, this._networkRetryConfig);
|
|
91
93
|
|
|
@@ -98,7 +100,7 @@ export default class OVPProvider extends BaseProvider<OVPProviderMediaInfoObject
|
|
|
98
100
|
// @ts-ignore
|
|
99
101
|
dataLoader.add(loaderRequest.loader, loaderRequest.params, theKs || '{1:result:ks}');
|
|
100
102
|
});
|
|
101
|
-
return dataLoader.fetchData().then(
|
|
103
|
+
return dataLoader.fetchData(requestsMustSucceed).then(
|
|
102
104
|
response => {
|
|
103
105
|
try {
|
|
104
106
|
resolve(response);
|
|
@@ -319,6 +321,7 @@ export default class OVPProvider extends BaseProvider<OVPProviderMediaInfoObject
|
|
|
319
321
|
dash: [],
|
|
320
322
|
progressive: [],
|
|
321
323
|
image: [],
|
|
324
|
+
document: [],
|
|
322
325
|
id: '',
|
|
323
326
|
duration: 0,
|
|
324
327
|
type: MediaEntry.Type.UNKNOWN,
|
|
@@ -340,6 +343,7 @@ export default class OVPProvider extends BaseProvider<OVPProviderMediaInfoObject
|
|
|
340
343
|
sourcesObject.dash = mediaSources.dash;
|
|
341
344
|
sourcesObject.progressive = mediaSources.progressive;
|
|
342
345
|
sourcesObject.image = mediaSources.image;
|
|
346
|
+
sourcesObject.document = mediaSources.document;
|
|
343
347
|
sourcesObject.id = mediaEntry.id;
|
|
344
348
|
sourcesObject.duration = mediaEntry.duration;
|
|
345
349
|
sourcesObject.type = mediaEntry.type;
|
|
@@ -27,34 +27,39 @@ class RegexActionHandler {
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
/**
|
|
30
|
-
* Ping the ECDN url
|
|
31
|
-
* @function
|
|
30
|
+
* Ping the ECDN url and replace the host urls if needed
|
|
31
|
+
* @function _pingECDNAndReplaceHostUrls
|
|
32
|
+
* @param {ProviderMediaConfigObject} mediaConfig - The media config
|
|
32
33
|
* @param {KalturaAccessControlModifyRequestHostRegexAction} regexAction - The regex action
|
|
33
34
|
* @param {string} cdnUrl - The CDN url
|
|
34
|
-
* @returns {Promise<
|
|
35
|
+
* @returns {Promise<ProviderMediaConfigObject>} - The media config with old or modified urls
|
|
35
36
|
* @static
|
|
36
37
|
* @private
|
|
37
38
|
*/
|
|
38
|
-
private static
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
39
|
+
private static _pingECDNAndReplaceHostUrls(
|
|
40
|
+
mediaConfig: ProviderMediaConfigObject,
|
|
41
|
+
regexAction: KalturaAccessControlModifyRequestHostRegexAction,
|
|
42
|
+
cdnUrl: string
|
|
43
|
+
): Promise<ProviderMediaConfigObject> {
|
|
44
|
+
return new Promise(resolve => {
|
|
45
|
+
const urlPing = cdnUrl + '/api_v3/service/system/action/ping/format/1';
|
|
46
|
+
const req = new XMLHttpRequest();
|
|
47
|
+
req.open('GET', urlPing);
|
|
48
|
+
req.timeout = regexAction.checkAliveTimeoutMs;
|
|
49
|
+
req.onreadystatechange = ():void => {
|
|
50
|
+
if (req.readyState === 4) {
|
|
51
|
+
if (req.status === 200) {
|
|
52
|
+
RegexActionHandler._replaceHostUrls(mediaConfig, regexAction);
|
|
53
|
+
}
|
|
54
|
+
resolve(mediaConfig);
|
|
47
55
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
};
|
|
56
|
-
req.send();
|
|
57
|
-
return false;
|
|
56
|
+
};
|
|
57
|
+
req.ontimeout = ():void => {
|
|
58
|
+
RegexActionHandler._logger.warn(`Got timeout while pinging the ECDN url. the ping url: ${urlPing}`);
|
|
59
|
+
resolve(mediaConfig);
|
|
60
|
+
};
|
|
61
|
+
req.send();
|
|
62
|
+
});
|
|
58
63
|
}
|
|
59
64
|
|
|
60
65
|
/**
|
|
@@ -62,31 +67,33 @@ class RegexActionHandler {
|
|
|
62
67
|
* @function handleRegexAction
|
|
63
68
|
* @param {ProviderMediaConfigObject} mediaConfig - The media config
|
|
64
69
|
* @param {Map<string, Function>} rawResponse - The raw response data from backend
|
|
65
|
-
* @returns {
|
|
70
|
+
* @returns {ProviderMediaConfigObject} - The media config with old or modified urls
|
|
66
71
|
* @static
|
|
67
72
|
*/
|
|
68
|
-
public static
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
73
|
+
public static handleRegexAction(mediaConfig: ProviderMediaConfigObject, rawResponse: Map<string, ILoader>): Promise<ProviderMediaConfigObject> {
|
|
74
|
+
return new Promise(resolve => {
|
|
75
|
+
const cdnUrl = OVPConfiguration.get().cdnUrl;
|
|
76
|
+
const regexAction = RegexActionHandler._extractRegexActionFromData(rawResponse);
|
|
77
|
+
const regExp = RegexActionHandler._getRegExp(regexAction);
|
|
72
78
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
79
|
+
if(
|
|
80
|
+
cdnUrl &&
|
|
81
|
+
regexAction &&
|
|
82
|
+
regExp &&
|
|
83
|
+
cdnUrl.match(regExp)
|
|
84
|
+
) {
|
|
85
|
+
if (regexAction.checkAliveTimeoutMs > 0) {
|
|
86
|
+
RegexActionHandler._logger.debug('executing ping request...');
|
|
87
|
+
RegexActionHandler._pingECDNAndReplaceHostUrls(mediaConfig, regexAction, cdnUrl.replace(regExp, regexAction.replacement)).then(resolve);
|
|
88
|
+
} else {
|
|
89
|
+
RegexActionHandler._replaceHostUrls(mediaConfig, regexAction);
|
|
90
|
+
resolve(mediaConfig);
|
|
91
|
+
}
|
|
92
|
+
} else {
|
|
93
|
+
RegexActionHandler._logger.debug('exiting handleRegexAction - not applying regex action.');
|
|
94
|
+
resolve(mediaConfig);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
90
97
|
}
|
|
91
98
|
|
|
92
99
|
/**
|
|
@@ -16,13 +16,7 @@ export class KalturaMediaEntries extends ServiceResult {
|
|
|
16
16
|
super(responseObj);
|
|
17
17
|
if (!this.hasError) {
|
|
18
18
|
this.entries = [];
|
|
19
|
-
responseObj.map(entry =>
|
|
20
|
-
const kalturaMediaEntry = new KalturaMediaEntry(entry);
|
|
21
|
-
if (kalturaMediaEntry.type !== KalturaMediaEntry.EntryType.DOCUMENT.value) {
|
|
22
|
-
// filter out documents
|
|
23
|
-
this.entries.push(kalturaMediaEntry);
|
|
24
|
-
}
|
|
25
|
-
});
|
|
19
|
+
responseObj.map(entry => this.entries.push(new KalturaMediaEntry(entry)));
|
|
26
20
|
}
|
|
27
21
|
}
|
|
28
22
|
}
|
|
@@ -14,7 +14,7 @@ export default class OVPBaseEntryService extends OVPService {
|
|
|
14
14
|
* @returns {RequestBuilder} The request builder
|
|
15
15
|
* @static
|
|
16
16
|
*/
|
|
17
|
-
public static getPlaybackContext(serviceUrl: string, ks: string, serviceEntryId: string): RequestBuilder {
|
|
17
|
+
public static getPlaybackContext(serviceUrl: string, ks: string, serviceEntryId: string, referrer?: string): RequestBuilder {
|
|
18
18
|
const headers: Map<string, string> = new Map();
|
|
19
19
|
headers.set('Content-Type', 'application/json');
|
|
20
20
|
const request = new RequestBuilder(headers);
|
|
@@ -23,7 +23,7 @@ export default class OVPBaseEntryService extends OVPService {
|
|
|
23
23
|
request.method = 'POST';
|
|
24
24
|
request.url = request.getUrl(serviceUrl);
|
|
25
25
|
request.tag = 'baseEntry-getPlaybackContext';
|
|
26
|
-
const contextDataParams = {objectType: 'KalturaContextDataParams', flavorTags: 'all'};
|
|
26
|
+
const contextDataParams = {objectType: 'KalturaContextDataParams', flavorTags: 'all', referrer};
|
|
27
27
|
request.params = {entryId: serviceEntryId, ks: ks, contextDataParams: contextDataParams};
|
|
28
28
|
return request;
|
|
29
29
|
}
|
package/src/types/index.ts
CHANGED
|
@@ -24,11 +24,3 @@ export * from './playlist-info'
|
|
|
24
24
|
export * from './provider-options'
|
|
25
25
|
export * from './request-loader'
|
|
26
26
|
export * from './poster'
|
|
27
|
-
|
|
28
|
-
export { ProviderParser, RequestBuilder, ResponseTypes} from '../k-provider/ovp'
|
|
29
|
-
export { ContextType, MediaType} from '../k-provider/ott'
|
|
30
|
-
import {BaseProvider} from '../k-provider/common/base-provider'
|
|
31
|
-
import OTTProvider from '../k-provider/ott/provider'
|
|
32
|
-
import OVPProvider from '../k-provider/ovp/provider'
|
|
33
|
-
export {OTTProvider, OVPProvider, OTTProvider as Provider, BaseProvider}
|
|
34
|
-
export type IProvider = OTTProvider | OVPProvider;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import {ImageSource} from '../entities/image-source';
|
|
2
|
+
import {DocumentSource} from '../entities/document-source';
|
|
2
3
|
import {ProviderMediaConfigMetadataObject} from './media-config-metadata';
|
|
3
4
|
import {PKExternalCaptionObject} from './external-caption-object';
|
|
4
5
|
import {ProviderMediaSourceObject} from './media-source';
|
|
@@ -8,6 +9,7 @@ export type ProviderMediaConfigSourcesObject = {
|
|
|
8
9
|
hls: Array<ProviderMediaSourceObject>;
|
|
9
10
|
progressive: Array<ProviderMediaSourceObject>;
|
|
10
11
|
image: Array<ImageSource>;
|
|
12
|
+
document: Array<DocumentSource>;
|
|
11
13
|
duration?: number;
|
|
12
14
|
type: string;
|
|
13
15
|
id?: string;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import {ImageSource} from '../entities/image-source';
|
|
2
|
+
import {DocumentSource} from '../entities/document-source';
|
|
2
3
|
import {ProviderMediaSourceObject} from './media-source';
|
|
3
4
|
import {PKExternalCaptionObject} from './external-caption-object';
|
|
4
5
|
|
|
@@ -7,5 +8,6 @@ export type ProviderMediaSourcesObject = {
|
|
|
7
8
|
dash: Array<ProviderMediaSourceObject>;
|
|
8
9
|
hls: Array<ProviderMediaSourceObject>;
|
|
9
10
|
image: Array<ImageSource>;
|
|
11
|
+
document: Array<DocumentSource>;
|
|
10
12
|
captions?: Array<PKExternalCaptionObject>;
|
|
11
13
|
};
|