@playkit-js/playkit-js-providers 2.39.1 → 2.39.2
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/CHANGELOG.md +4 -0
- package/dist/playkit-analytics-service.js +2 -0
- package/dist/playkit-analytics-service.js.map +1 -0
- package/dist/playkit-bookmark-service.js +2 -0
- package/dist/playkit-bookmark-service.js.map +1 -0
- package/dist/playkit-ott-provider.js +2 -0
- package/dist/playkit-ott-provider.js.map +1 -0
- package/dist/playkit-ovp-provider.js +2 -0
- package/dist/playkit-ovp-provider.js.map +1 -0
- package/dist/playkit-stats-service.js +2 -0
- package/dist/playkit-stats-service.js.map +1 -0
- package/package.json +1 -1
- package/.babelrc +0 -22
- package/.editorconfig +0 -10
- package/.eslintignore +0 -3
- package/.eslintrc.json +0 -26
- package/.flowconfig +0 -5
- package/.github/ISSUE_TEMPLATE.md +0 -28
- package/.github/PULL_REQUEST_TEMPLATE.md +0 -12
- package/.github/workflows/run_canary_full_flow.yaml +0 -28
- package/.github/workflows/run_prod.yaml +0 -24
- package/.github/workflows/run_tests.yaml +0 -24
- package/.prettierignore +0 -7
- package/.prettierrc +0 -12
- package/docs/configuration.md +0 -225
- package/karma.conf.js +0 -42
- package/src/entities/bumper.js +0 -23
- package/src/entities/drm.js +0 -46
- package/src/entities/entry-list.js +0 -15
- package/src/entities/image-source.js +0 -37
- package/src/entities/media-entry.js +0 -96
- package/src/entities/media-format.js +0 -46
- package/src/entities/media-source.js +0 -70
- package/src/entities/media-sources.js +0 -79
- package/src/entities/playlist.js +0 -37
- package/src/index.html +0 -11
- package/src/k-provider/common/base-provider-parser.js +0 -0
- package/src/k-provider/common/base-provider.js +0 -110
- package/src/k-provider/common/base-service-result.js +0 -57
- package/src/k-provider/common/data-loader-manager.js +0 -115
- package/src/k-provider/common/multi-request-builder.js +0 -112
- package/src/k-provider/common/response-types/kaltura-access-control-message.js +0 -22
- package/src/k-provider/common/response-types/kaltura-drm-playback-plugin-data.js +0 -39
- package/src/k-provider/ott/config.js +0 -22
- package/src/k-provider/ott/index.js +0 -15
- package/src/k-provider/ott/loaders/asset-list-loader.js +0 -68
- package/src/k-provider/ott/loaders/asset-loader.js +0 -69
- package/src/k-provider/ott/loaders/data-loader-manager.js +0 -15
- package/src/k-provider/ott/loaders/session-loader.js +0 -62
- package/src/k-provider/ott/provider-parser.js +0 -282
- package/src/k-provider/ott/provider.js +0 -242
- package/src/k-provider/ott/response-types/kaltura-asset.js +0 -79
- package/src/k-provider/ott/response-types/kaltura-bumper-playback-plugin-data.js +0 -28
- package/src/k-provider/ott/response-types/kaltura-playback-context.js +0 -74
- package/src/k-provider/ott/response-types/kaltura-playback-source.js +0 -63
- package/src/k-provider/ott/response-types/kaltura-rule-action.js +0 -26
- package/src/k-provider/ott/services/asset-service.js +0 -50
- package/src/k-provider/ott/services/bookmark/bookmark-service.js +0 -49
- package/src/k-provider/ott/services/bookmark/index.js +0 -12
- package/src/k-provider/ott/services/ott-service.js +0 -34
- package/src/k-provider/ott/services/user-service.js +0 -32
- package/src/k-provider/ovp/config.js +0 -28
- package/src/k-provider/ovp/external-captions-builder.js +0 -38
- package/src/k-provider/ovp/index.js +0 -13
- package/src/k-provider/ovp/loaders/data-loader-manager.js +0 -17
- package/src/k-provider/ovp/loaders/entry-list-loader.js +0 -69
- package/src/k-provider/ovp/loaders/media-entry-loader.js +0 -84
- package/src/k-provider/ovp/loaders/playlist-loader.js +0 -66
- package/src/k-provider/ovp/loaders/session-loader.js +0 -62
- package/src/k-provider/ovp/loaders/ui-config-loader.js +0 -71
- package/src/k-provider/ovp/play-source-url-builder.js +0 -60
- package/src/k-provider/ovp/provider-parser.js +0 -451
- package/src/k-provider/ovp/provider.js +0 -344
- package/src/k-provider/ovp/regex-action-handler.js +0 -147
- package/src/k-provider/ovp/request-params/base-entry-response-profile.js +0 -29
- package/src/k-provider/ovp/response-types/index.js +0 -18
- package/src/k-provider/ovp/response-types/kaltura-access-control-modify-request-host-regex-action.js +0 -36
- package/src/k-provider/ovp/response-types/kaltura-base-entry-list-response.js +0 -31
- package/src/k-provider/ovp/response-types/kaltura-bumper.js +0 -26
- package/src/k-provider/ovp/response-types/kaltura-flavor-asset.js +0 -109
- package/src/k-provider/ovp/response-types/kaltura-media-entries.js +0 -23
- package/src/k-provider/ovp/response-types/kaltura-media-entry.js +0 -141
- package/src/k-provider/ovp/response-types/kaltura-metadata-list-response.js +0 -23
- package/src/k-provider/ovp/response-types/kaltura-metadata.js +0 -51
- package/src/k-provider/ovp/response-types/kaltura-playback-context.js +0 -96
- package/src/k-provider/ovp/response-types/kaltura-playback-source.js +0 -90
- package/src/k-provider/ovp/response-types/kaltura-playlist.js +0 -35
- package/src/k-provider/ovp/response-types/kaltura-rule-action.js +0 -28
- package/src/k-provider/ovp/response-types/kaltura-ui-conf-response.js +0 -90
- package/src/k-provider/ovp/services/analytics/analytics-service.js +0 -57
- package/src/k-provider/ovp/services/analytics/index.js +0 -12
- package/src/k-provider/ovp/services/base-entry-service.js +0 -76
- package/src/k-provider/ovp/services/meta-data-service.js +0 -30
- package/src/k-provider/ovp/services/ovp-service.js +0 -33
- package/src/k-provider/ovp/services/playlist-service.js +0 -63
- package/src/k-provider/ovp/services/session-service.js +0 -28
- package/src/k-provider/ovp/services/stats/index.js +0 -12
- package/src/k-provider/ovp/services/stats/stats-service.js +0 -33
- package/src/k-provider/ovp/services/ui-conf-service.js +0 -33
- package/src/util/clone.js +0 -23
- package/src/util/error/category.js +0 -12
- package/src/util/error/code.js +0 -79
- package/src/util/error/error.js +0 -48
- package/src/util/error/severity.js +0 -23
- package/src/util/logger.js +0 -108
- package/src/util/param.js +0 -45
- package/src/util/request-builder.js +0 -187
- package/src/util/xml-parser.js +0 -40
- package/test/.eslintrc.json +0 -9
- package/test/setup/karma.js +0 -5
- package/test/setup/load-specs.js +0 -13
- package/test/setup/prepare-test-environment.js +0 -17
- package/test/src/k-provider/ott/be-data.js +0 -3306
- package/test/src/k-provider/ott/media-config-data.js +0 -793
- package/test/src/k-provider/ott/provider-parser.spec.js +0 -30
- package/test/src/k-provider/ott/provider.spec.js +0 -384
- package/test/src/k-provider/ott/services/bookmark-service.spec.js +0 -38
- package/test/src/k-provider/ovp/be-data.js +0 -3932
- package/test/src/k-provider/ovp/external-captions-builder.spec.js +0 -59
- package/test/src/k-provider/ovp/media-config-data.js +0 -1509
- package/test/src/k-provider/ovp/playback-sources-data.js +0 -229
- package/test/src/k-provider/ovp/provider-parser-data.js +0 -142
- package/test/src/k-provider/ovp/provider-parser.spec.js +0 -96
- package/test/src/k-provider/ovp/provider.spec.js +0 -1075
- package/test/src/k-provider/ovp/regex-action-handler-data.js +0 -794
- package/test/src/k-provider/ovp/regex-action-handler.spec.js +0 -93
- package/test/src/k-provider/ovp/services/analytics-service.spec.js +0 -62
- package/test/src/k-provider/ovp/services/stats-service.spec.js +0 -37
- package/test/src/util/param.spec.js +0 -23
- package/webpack.config.js +0 -85
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
//@flow
|
|
2
|
-
import MediaSources from './media-sources';
|
|
3
|
-
|
|
4
|
-
export default class MediaEntry {
|
|
5
|
-
static Type: {[type: string]: string} = {
|
|
6
|
-
VOD: 'Vod',
|
|
7
|
-
LIVE: 'Live',
|
|
8
|
-
IMAGE: 'Image',
|
|
9
|
-
AUDIO: 'Audio',
|
|
10
|
-
UNKNOWN: 'Unknown'
|
|
11
|
-
};
|
|
12
|
-
static DvrStatus: {[type: string]: number} = {
|
|
13
|
-
ON: 1,
|
|
14
|
-
OFF: 0
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* @member - entry id
|
|
19
|
-
* @type {string}
|
|
20
|
-
*/
|
|
21
|
-
id: string;
|
|
22
|
-
/**
|
|
23
|
-
* @member - entry name
|
|
24
|
-
* @type {string}
|
|
25
|
-
*/
|
|
26
|
-
name: string;
|
|
27
|
-
/**
|
|
28
|
-
* @member - entry sources
|
|
29
|
-
* @type {MediaSources}
|
|
30
|
-
*/
|
|
31
|
-
sources: MediaSources;
|
|
32
|
-
/**
|
|
33
|
-
* @member - entry duration
|
|
34
|
-
* @type {number}
|
|
35
|
-
*/
|
|
36
|
-
duration: number;
|
|
37
|
-
/**
|
|
38
|
-
* @member - entry type
|
|
39
|
-
* @type {string}
|
|
40
|
-
*/
|
|
41
|
-
type: string;
|
|
42
|
-
/**
|
|
43
|
-
* @member - entry metadata
|
|
44
|
-
* @type {Object}
|
|
45
|
-
*/
|
|
46
|
-
metadata: Object;
|
|
47
|
-
/**
|
|
48
|
-
* @member - DVR status
|
|
49
|
-
* @type {number}
|
|
50
|
-
*/
|
|
51
|
-
dvrStatus: number;
|
|
52
|
-
/**
|
|
53
|
-
* @member - media status
|
|
54
|
-
* @type {number}
|
|
55
|
-
*/
|
|
56
|
-
status: number;
|
|
57
|
-
/**
|
|
58
|
-
* @member - media poster
|
|
59
|
-
* @type {string | Array<Object>}
|
|
60
|
-
*/
|
|
61
|
-
poster: string | Array<Object>;
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* @member - assetReferenceType
|
|
65
|
-
* @type {string }
|
|
66
|
-
*/
|
|
67
|
-
assetReferenceType: string;
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* @constructor
|
|
71
|
-
*/
|
|
72
|
-
constructor() {
|
|
73
|
-
this.metadata = new Map();
|
|
74
|
-
this.sources = new MediaSources();
|
|
75
|
-
this.type = MediaEntry.Type.UNKNOWN;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Convert class to native js object.
|
|
80
|
-
* @returns {ProviderMediaEntryObject} - The json class object.
|
|
81
|
-
*/
|
|
82
|
-
toJSON(): ProviderMediaEntryObject {
|
|
83
|
-
return {
|
|
84
|
-
id: this.id,
|
|
85
|
-
name: this.name,
|
|
86
|
-
sources: this.sources.toJSON(),
|
|
87
|
-
duration: this.duration,
|
|
88
|
-
dvrStatus: this.dvrStatus,
|
|
89
|
-
status: this.status,
|
|
90
|
-
metadata: this.metadata,
|
|
91
|
-
type: this.type,
|
|
92
|
-
poster: this.poster,
|
|
93
|
-
assetReferenceType: this.assetReferenceType
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
//@flow
|
|
2
|
-
export const MediaFormat: {[name: string]: ProviderMediaFormatType} = {
|
|
3
|
-
DASH: {
|
|
4
|
-
name: 'dash',
|
|
5
|
-
mimeType: 'application/dash+xml',
|
|
6
|
-
pathExt: 'mpd'
|
|
7
|
-
},
|
|
8
|
-
HLS: {
|
|
9
|
-
name: 'hls',
|
|
10
|
-
mimeType: 'application/x-mpegURL',
|
|
11
|
-
pathExt: 'm3u8'
|
|
12
|
-
},
|
|
13
|
-
WVM: {
|
|
14
|
-
name: 'wvm',
|
|
15
|
-
mimeType: 'video/wvm',
|
|
16
|
-
pathExt: 'wvm'
|
|
17
|
-
},
|
|
18
|
-
MP4: {
|
|
19
|
-
name: 'mp4',
|
|
20
|
-
mimeType: 'video/mp4',
|
|
21
|
-
pathExt: 'mp4'
|
|
22
|
-
},
|
|
23
|
-
MP3: {
|
|
24
|
-
name: 'mp3',
|
|
25
|
-
mimeType: 'audio/mpeg',
|
|
26
|
-
pathExt: 'mp3'
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
export const SupportedStreamFormat: Map<string, ProviderMediaFormatType> = new Map([
|
|
31
|
-
['mpegdash', MediaFormat.DASH],
|
|
32
|
-
['applehttp', MediaFormat.HLS],
|
|
33
|
-
['url', MediaFormat.MP4]
|
|
34
|
-
]);
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* returns a boolean whether a source is progressive or not
|
|
38
|
-
* @param {string} formatName - the format name
|
|
39
|
-
* @returns {boolean} - if source is progressive or not
|
|
40
|
-
*/
|
|
41
|
-
function isProgressiveSource(formatName: string): boolean {
|
|
42
|
-
const sourceFormat = SupportedStreamFormat.get(formatName);
|
|
43
|
-
return !!sourceFormat && sourceFormat.name === MediaFormat.MP4.name;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export {isProgressiveSource};
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
//@flow
|
|
2
|
-
import Drm from './drm';
|
|
3
|
-
|
|
4
|
-
export default class MediaSource {
|
|
5
|
-
/**
|
|
6
|
-
* @member - media source id
|
|
7
|
-
* @type {string}
|
|
8
|
-
*/
|
|
9
|
-
id: string;
|
|
10
|
-
/**
|
|
11
|
-
* @member - media source url
|
|
12
|
-
* @type {string}
|
|
13
|
-
*/
|
|
14
|
-
url: string;
|
|
15
|
-
/**
|
|
16
|
-
* @member - media source mimetype
|
|
17
|
-
* @type {string}
|
|
18
|
-
*/
|
|
19
|
-
mimetype: string;
|
|
20
|
-
/**
|
|
21
|
-
* @member - media source drm data
|
|
22
|
-
* @type {Array<Drm>}
|
|
23
|
-
*/
|
|
24
|
-
drmData: Array<Drm>;
|
|
25
|
-
/**
|
|
26
|
-
* @member - media source bandwidth
|
|
27
|
-
* @type {number}
|
|
28
|
-
*/
|
|
29
|
-
bandwidth: number;
|
|
30
|
-
/**
|
|
31
|
-
* @member - media source width
|
|
32
|
-
* @type {number}
|
|
33
|
-
*/
|
|
34
|
-
width: number;
|
|
35
|
-
/**
|
|
36
|
-
* @member - media source height
|
|
37
|
-
* @type {number}
|
|
38
|
-
*/
|
|
39
|
-
height: number;
|
|
40
|
-
/**
|
|
41
|
-
* @member - media source label
|
|
42
|
-
* @type {string}
|
|
43
|
-
*/
|
|
44
|
-
label: string;
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Convert class to native js object.
|
|
48
|
-
* @returns {ProviderMediaSourceObject} - The json class object.
|
|
49
|
-
*/
|
|
50
|
-
toJSON(): ProviderMediaSourceObject {
|
|
51
|
-
const response: ProviderMediaSourceObject = {
|
|
52
|
-
id: this.id,
|
|
53
|
-
url: this.url,
|
|
54
|
-
mimetype: this.mimetype
|
|
55
|
-
};
|
|
56
|
-
if (this.bandwidth) response.bandwidth = this.bandwidth;
|
|
57
|
-
if (this.width) response.width = this.width;
|
|
58
|
-
if (this.height) response.height = this.height;
|
|
59
|
-
if (this.label) response.label = this.label;
|
|
60
|
-
if (this.drmData && this.drmData.length > 0) {
|
|
61
|
-
response.drmData = [];
|
|
62
|
-
this.drmData.forEach(d => {
|
|
63
|
-
if (Array.isArray(response.drmData)) {
|
|
64
|
-
response.drmData.push(d.toJSON());
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
return response;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
import MediaSource from './media-source';
|
|
3
|
-
import {MediaFormat} from './media-format';
|
|
4
|
-
import ImageSource from './image-source';
|
|
5
|
-
|
|
6
|
-
export default class MediaSources {
|
|
7
|
-
/**
|
|
8
|
-
* Progressive download media sources container.
|
|
9
|
-
* @type {Array<MediaSource>}
|
|
10
|
-
* @public
|
|
11
|
-
*/
|
|
12
|
-
progressive: Array<MediaSource>;
|
|
13
|
-
/**
|
|
14
|
-
* Dash media sources container.
|
|
15
|
-
* @type {Array<MediaSource>}
|
|
16
|
-
* @public
|
|
17
|
-
*/
|
|
18
|
-
dash: Array<MediaSource>;
|
|
19
|
-
/**
|
|
20
|
-
* Hls media sources container.
|
|
21
|
-
* @type {Array<MediaSource>}
|
|
22
|
-
* @public
|
|
23
|
-
*/
|
|
24
|
-
hls: Array<MediaSource>;
|
|
25
|
-
image: Array<ImageSource>;
|
|
26
|
-
captions: Array<PKExternalCaptionObject>;
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* @constructor
|
|
30
|
-
*/
|
|
31
|
-
constructor() {
|
|
32
|
-
this.progressive = [];
|
|
33
|
-
this.dash = [];
|
|
34
|
-
this.hls = [];
|
|
35
|
-
this.image = [];
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Maps the source to one of the containers according to his media format.
|
|
40
|
-
* @param {MediaSource} source - The source to add to one of the containers.
|
|
41
|
-
* @param {MediaFormat} mediaFormat - The media format of the source.
|
|
42
|
-
* @returns {void}
|
|
43
|
-
*/
|
|
44
|
-
map(source: MediaSource, mediaFormat: ?ProviderMediaFormatType) {
|
|
45
|
-
if (mediaFormat) {
|
|
46
|
-
switch (mediaFormat.name) {
|
|
47
|
-
case MediaFormat.MP4.name:
|
|
48
|
-
this.progressive.push(source);
|
|
49
|
-
break;
|
|
50
|
-
case MediaFormat.DASH.name:
|
|
51
|
-
this.dash.push(source);
|
|
52
|
-
break;
|
|
53
|
-
case MediaFormat.HLS.name:
|
|
54
|
-
this.hls.push(source);
|
|
55
|
-
break;
|
|
56
|
-
default:
|
|
57
|
-
break;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Convert class to native js object.
|
|
64
|
-
* @returns {ProviderMediaSourcesObject} - The json class object.
|
|
65
|
-
*/
|
|
66
|
-
toJSON(): ProviderMediaSourcesObject {
|
|
67
|
-
const response: ProviderMediaSourcesObject = {
|
|
68
|
-
progressive: [],
|
|
69
|
-
dash: [],
|
|
70
|
-
hls: [],
|
|
71
|
-
image: []
|
|
72
|
-
};
|
|
73
|
-
this.progressive.forEach(p => response.progressive.push(p.toJSON()));
|
|
74
|
-
this.hls.forEach(h => response.hls.push(h.toJSON()));
|
|
75
|
-
this.dash.forEach(d => response.dash.push(d.toJSON()));
|
|
76
|
-
response.image = this.image;
|
|
77
|
-
return response;
|
|
78
|
-
}
|
|
79
|
-
}
|
package/src/entities/playlist.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
//@flow
|
|
2
|
-
|
|
3
|
-
import MediaEntry from '../entities/media-entry';
|
|
4
|
-
|
|
5
|
-
export default class Playlist {
|
|
6
|
-
/**
|
|
7
|
-
* @member - playlist id
|
|
8
|
-
* @type {string}
|
|
9
|
-
*/
|
|
10
|
-
id: string;
|
|
11
|
-
/**
|
|
12
|
-
* @member - playlist name
|
|
13
|
-
* @type {string}
|
|
14
|
-
*/
|
|
15
|
-
name: string;
|
|
16
|
-
/**
|
|
17
|
-
* @member - playlist description
|
|
18
|
-
* @type {string}
|
|
19
|
-
*/
|
|
20
|
-
description: string;
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* @member - playlist poster
|
|
24
|
-
* @type {string}
|
|
25
|
-
*/
|
|
26
|
-
poster: string;
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* @member - playlist items
|
|
30
|
-
* @type {Array<MediaEntry>}
|
|
31
|
-
*/
|
|
32
|
-
items: Array<MediaEntry>;
|
|
33
|
-
|
|
34
|
-
constructor() {
|
|
35
|
-
this.items = [];
|
|
36
|
-
}
|
|
37
|
-
}
|
package/src/index.html
DELETED
|
File without changes
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
import {getLogLevel, setLogLevel, setLogger, type LogLevelType, LogLevel} from '../../util/logger';
|
|
3
|
-
import DataLoaderManager from './data-loader-manager';
|
|
4
|
-
import Error from '../../util/error/error';
|
|
5
|
-
|
|
6
|
-
export default class BaseProvider<MI> {
|
|
7
|
-
_partnerId: number;
|
|
8
|
-
_widgetId: ?string;
|
|
9
|
-
_ks: string;
|
|
10
|
-
_uiConfId: ?number;
|
|
11
|
-
_dataLoader: DataLoaderManager;
|
|
12
|
-
_playerVersion: string;
|
|
13
|
-
_logger: any;
|
|
14
|
-
_isAnonymous: boolean;
|
|
15
|
-
_networkRetryConfig: ProviderNetworkRetryParameters = {
|
|
16
|
-
async: true,
|
|
17
|
-
timeout: 0,
|
|
18
|
-
maxAttempts: 4
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
get partnerId(): number {
|
|
22
|
-
return this._partnerId;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
get widgetId(): string {
|
|
26
|
-
return this._widgetId || this.defaultWidgetId;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
get defaultWidgetId(): string {
|
|
30
|
-
return '_' + this._partnerId;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
get uiConfId(): ?number {
|
|
34
|
-
return this._uiConfId;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
get ks(): string {
|
|
38
|
-
return this._ks;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
set ks(value: string): void {
|
|
42
|
-
this._ks = value;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
get playerVersion(): string {
|
|
46
|
-
return this._playerVersion;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
get isAnonymous(): boolean {
|
|
50
|
-
return this._isAnonymous;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
constructor(options: ProviderOptionsObject, playerVersion: string) {
|
|
54
|
-
setLogger(options.logger);
|
|
55
|
-
this._partnerId = options.partnerId;
|
|
56
|
-
this._widgetId = options.widgetId;
|
|
57
|
-
this._uiConfId = options.uiConfId;
|
|
58
|
-
this._isAnonymous = !options.ks;
|
|
59
|
-
this._ks = options.ks || '';
|
|
60
|
-
this._playerVersion = playerVersion;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
// eslint-disable-next-line no-unused-vars
|
|
64
|
-
getMediaConfig(mediaInfo: MI): Promise<ProviderMediaConfigObject> {
|
|
65
|
-
return Promise.reject(
|
|
66
|
-
new Error(Error.Severity.CRITICAL, Error.Category.PROVIDER, Error.Code.METHOD_NOT_IMPLEMENTED, {
|
|
67
|
-
message: 'getMediaConfig method must be implement by the derived class'
|
|
68
|
-
})
|
|
69
|
-
);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
// eslint-disable-next-line no-unused-vars
|
|
73
|
-
getPlaylistConfig(playlistInfo: ProviderPlaylistInfoObject): Promise<ProviderPlaylistObject> {
|
|
74
|
-
return Promise.reject(
|
|
75
|
-
new Error(Error.Severity.CRITICAL, Error.Category.PROVIDER, Error.Code.METHOD_NOT_IMPLEMENTED, {
|
|
76
|
-
message: 'The provider does not support loading playlist by id'
|
|
77
|
-
})
|
|
78
|
-
);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
// eslint-disable-next-line no-unused-vars
|
|
82
|
-
getEntryListConfig(entryListInfo: ProviderEntryListObject): Promise<ProviderPlaylistObject> {
|
|
83
|
-
return Promise.reject(
|
|
84
|
-
new Error(Error.Severity.CRITICAL, Error.Category.PROVIDER, Error.Code.METHOD_NOT_IMPLEMENTED, {
|
|
85
|
-
message: 'The provider does not support loading entry list'
|
|
86
|
-
})
|
|
87
|
-
);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
_verifyHasSources(sources: ProviderMediaConfigSourcesObject) {
|
|
91
|
-
if (sources.hls.concat(sources.dash, sources.progressive, sources.image).length === 0) {
|
|
92
|
-
throw new Error(Error.Severity.CRITICAL, Error.Category.SERVICE, Error.Code.MISSING_PLAY_SOURCE, {
|
|
93
|
-
action: '',
|
|
94
|
-
messages: `No play source for entry id: ${sources.id}`
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
get LogLevel(): LogLevelType {
|
|
100
|
-
return LogLevel;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
getLogLevel(name?: string): Object {
|
|
104
|
-
return getLogLevel(name);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
setLogLevel(level: Object, name?: string): void {
|
|
108
|
-
setLogLevel(level, name);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
//@flow
|
|
2
|
-
export default class ServiceResult {
|
|
3
|
-
/**
|
|
4
|
-
* @member - Is service returned an error
|
|
5
|
-
* @type {boolean}
|
|
6
|
-
*/
|
|
7
|
-
hasError: boolean = false;
|
|
8
|
-
/**
|
|
9
|
-
* @member - The service error
|
|
10
|
-
* @type {ServiceError}
|
|
11
|
-
*/
|
|
12
|
-
error: ServiceError;
|
|
13
|
-
/**
|
|
14
|
-
* @member - The service result data
|
|
15
|
-
* @type {Object}
|
|
16
|
-
*/
|
|
17
|
-
data: Object;
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* @constructor
|
|
21
|
-
* @param {Object} response - Service response
|
|
22
|
-
*/
|
|
23
|
-
constructor(response: Object) {
|
|
24
|
-
if (response.objectType === 'KalturaAPIException') {
|
|
25
|
-
this.hasError = true;
|
|
26
|
-
this.error = new ServiceError(response.code, response.message);
|
|
27
|
-
} else if (response.error && response.error.objectType === 'KalturaAPIException') {
|
|
28
|
-
this.hasError = true;
|
|
29
|
-
this.error = new ServiceError(response.error.code, response.error.message);
|
|
30
|
-
} else {
|
|
31
|
-
this.data = response;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
class ServiceError {
|
|
37
|
-
/**
|
|
38
|
-
* @member - The error code
|
|
39
|
-
* @type {string}
|
|
40
|
-
*/
|
|
41
|
-
code: string;
|
|
42
|
-
/**
|
|
43
|
-
* @member - The error message
|
|
44
|
-
* @type {string}
|
|
45
|
-
*/
|
|
46
|
-
message: string;
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* @constructor
|
|
50
|
-
* @param {string} code - The result code
|
|
51
|
-
* @param {string} message - The result message
|
|
52
|
-
*/
|
|
53
|
-
constructor(code: string, message: string) {
|
|
54
|
-
this.code = code;
|
|
55
|
-
this.message = message;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
import MultiRequestBuilder, {MultiRequestResult} from './multi-request-builder';
|
|
3
|
-
import Error from '../../util/error/error';
|
|
4
|
-
|
|
5
|
-
export default class DataLoaderManager {
|
|
6
|
-
/**
|
|
7
|
-
* @member - Loaders response map index
|
|
8
|
-
* @type {Map<string,Array<number>>}
|
|
9
|
-
* @private
|
|
10
|
-
*/
|
|
11
|
-
_loadersResponseMap: Map<string, Array<number>> = new Map();
|
|
12
|
-
/**
|
|
13
|
-
* @member - Loaders multi request
|
|
14
|
-
* @type {MultiRequestBuilder}
|
|
15
|
-
* @protected
|
|
16
|
-
*/
|
|
17
|
-
_multiRequest: MultiRequestBuilder;
|
|
18
|
-
/**
|
|
19
|
-
* @member - Loaders multi response
|
|
20
|
-
* @type {MultiRequestResult}
|
|
21
|
-
* @private
|
|
22
|
-
*/
|
|
23
|
-
_multiResponse: MultiRequestResult;
|
|
24
|
-
/**
|
|
25
|
-
* @member - Loaders to execute
|
|
26
|
-
* @type {Map<string,Function>}
|
|
27
|
-
* @private
|
|
28
|
-
*/
|
|
29
|
-
_loaders: Map<string, ILoader> = new Map();
|
|
30
|
-
|
|
31
|
-
_networkRetryConfig: ProviderNetworkRetryParameters;
|
|
32
|
-
|
|
33
|
-
constructor(networkRetryConfig: ProviderNetworkRetryParameters) {
|
|
34
|
-
this._networkRetryConfig = networkRetryConfig;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Add loader to execution loaders map
|
|
39
|
-
* @function
|
|
40
|
-
* @param {Function} loader Loader to add
|
|
41
|
-
* @param {Object} params Loader params
|
|
42
|
-
* @param {string} ks ks
|
|
43
|
-
* @returns {void}
|
|
44
|
-
*/
|
|
45
|
-
add(loader: Function, params: Object, ks?: string): void {
|
|
46
|
-
let execution_loader = new loader(params);
|
|
47
|
-
if (execution_loader.isValid()) {
|
|
48
|
-
this._loaders.set(loader.id, execution_loader);
|
|
49
|
-
// Get the start index from the multiReqeust before adding current execution_loader requests
|
|
50
|
-
let startIndex = this._multiRequest.requests.length;
|
|
51
|
-
// Get the requests
|
|
52
|
-
let requests = execution_loader.requests;
|
|
53
|
-
this._multiRequest.retryConfig = this._networkRetryConfig;
|
|
54
|
-
// Add requests to multiRequest queue
|
|
55
|
-
requests.forEach(request => {
|
|
56
|
-
request.params = request.params || {};
|
|
57
|
-
request.params.ks = request.params.ks || ks;
|
|
58
|
-
this._multiRequest.add(request);
|
|
59
|
-
});
|
|
60
|
-
// Create range array of current execution_loader requests
|
|
61
|
-
let executionLoaderResponseMap = Array.from(new Array(requests.length), (val, index) => index + startIndex);
|
|
62
|
-
// Add to map
|
|
63
|
-
this._loadersResponseMap.set(loader.id, executionLoaderResponseMap);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Get data from all loaders using multi request
|
|
69
|
-
* @param {boolean} requestsMustSucceed whether all of the requests must succeed or not
|
|
70
|
-
* @function
|
|
71
|
-
* @returns {Promise} Promise
|
|
72
|
-
*/
|
|
73
|
-
fetchData(requestsMustSucceed?: boolean): Promise<any> {
|
|
74
|
-
return new Promise((resolve, reject) => {
|
|
75
|
-
this._multiRequest.execute(requestsMustSucceed).then(
|
|
76
|
-
data => {
|
|
77
|
-
this._multiResponse = data.response;
|
|
78
|
-
let preparedData: Object = this.prepareData(data.response);
|
|
79
|
-
if (preparedData.success) {
|
|
80
|
-
resolve(this._loaders);
|
|
81
|
-
} else {
|
|
82
|
-
reject(
|
|
83
|
-
new Error(Error.Severity.CRITICAL, Error.Category.NETWORK, Error.Code.API_RESPONSE_MISMATCH, {
|
|
84
|
-
headers: data.headers
|
|
85
|
-
})
|
|
86
|
-
);
|
|
87
|
-
}
|
|
88
|
-
},
|
|
89
|
-
err => {
|
|
90
|
-
reject(err);
|
|
91
|
-
}
|
|
92
|
-
);
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Prepare fetched data
|
|
98
|
-
* @function
|
|
99
|
-
* @param {MultiRequestResult} response - The multi request result
|
|
100
|
-
* @returns {Object} - The prepared data
|
|
101
|
-
*/
|
|
102
|
-
prepareData(response: MultiRequestResult): Object {
|
|
103
|
-
this._loaders.forEach((loader, name) => {
|
|
104
|
-
let loaderDataIndexes = this._loadersResponseMap.get(name);
|
|
105
|
-
try {
|
|
106
|
-
if (loaderDataIndexes && loaderDataIndexes.length > 0) {
|
|
107
|
-
loader.response = response.results.slice(loaderDataIndexes[0], loaderDataIndexes[loaderDataIndexes.length - 1] + 1);
|
|
108
|
-
}
|
|
109
|
-
} catch (err) {
|
|
110
|
-
return {success: false, error: err};
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
return {success: true, data: this._loaders};
|
|
114
|
-
}
|
|
115
|
-
}
|