@playkit-js/playkit-js-providers 2.40.1-canary.0-f2a1cb3 → 2.40.2-canary.0-c7a43ae
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/dist/index.d.ts +1624 -0
- 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/tsdoc-metadata.json +11 -0
- package/flow-typed/types/media-config-sources.js +1 -1
- package/flow-typed/types/media-sources.js +1 -1
- package/package.json +49 -46
- package/playkit-analytics-service/package.json +5 -0
- package/playkit-bookmark-service/package.json +5 -0
- package/playkit-ott-provider/package.json +5 -0
- package/playkit-ovp-provider/package.json +5 -0
- package/playkit-stats-service/package.json +5 -0
- package/src/entities/bumper.ts +21 -0
- package/src/entities/drm.ts +47 -0
- package/src/entities/entry-list.ts +13 -0
- package/src/entities/image-source.ts +36 -0
- package/src/entities/media-entry.ts +104 -0
- package/src/entities/media-format.ts +47 -0
- package/src/entities/media-source.ts +70 -0
- package/src/entities/media-sources.ts +79 -0
- package/src/entities/playlist.ts +41 -0
- package/src/k-provider/common/base-provider-parser.ts +0 -0
- package/src/k-provider/common/base-provider.ts +112 -0
- package/src/k-provider/common/base-service-result.ts +56 -0
- package/src/k-provider/common/data-loader-manager.ts +115 -0
- package/src/k-provider/common/multi-request-builder.ts +111 -0
- package/src/k-provider/common/response-types/kaltura-access-control-message.ts +21 -0
- package/src/k-provider/common/response-types/kaltura-drm-playback-plugin-data.ts +38 -0
- package/src/k-provider/ott/config.ts +22 -0
- package/src/k-provider/ott/index.ts +14 -0
- package/src/k-provider/ott/loaders/asset-list-loader.ts +68 -0
- package/src/k-provider/ott/loaders/asset-loader.ts +69 -0
- package/src/k-provider/ott/loaders/data-loader-manager.ts +15 -0
- package/src/k-provider/ott/loaders/session-loader.ts +62 -0
- package/src/k-provider/ott/provider-parser.ts +285 -0
- package/src/k-provider/ott/provider.ts +252 -0
- package/src/k-provider/ott/response-types/kaltura-asset.ts +105 -0
- package/src/k-provider/ott/response-types/kaltura-bumper-playback-plugin-data.ts +27 -0
- package/src/k-provider/ott/response-types/kaltura-playback-context.ts +73 -0
- package/src/k-provider/ott/response-types/kaltura-playback-source.ts +62 -0
- package/src/k-provider/ott/response-types/kaltura-rule-action.ts +25 -0
- package/src/k-provider/ott/services/asset-service.ts +50 -0
- package/src/k-provider/ott/services/bookmark/bookmark-service.ts +48 -0
- package/src/k-provider/ott/services/bookmark/index.ts +11 -0
- package/src/k-provider/ott/services/ott-service.ts +33 -0
- package/src/k-provider/ott/services/user-service.ts +31 -0
- package/src/k-provider/ovp/config.ts +28 -0
- package/src/k-provider/ovp/external-captions-builder.ts +37 -0
- package/src/k-provider/ovp/index.ts +13 -0
- package/src/k-provider/ovp/loaders/data-loader-manager.ts +17 -0
- package/src/k-provider/ovp/loaders/entry-list-loader.ts +69 -0
- package/src/k-provider/ovp/loaders/media-entry-loader.ts +84 -0
- package/src/k-provider/ovp/loaders/playlist-loader.ts +69 -0
- package/src/k-provider/ovp/loaders/session-loader.ts +62 -0
- package/src/k-provider/ovp/loaders/ui-config-loader.ts +71 -0
- package/src/k-provider/ovp/play-source-url-builder.ts +59 -0
- package/src/k-provider/ovp/provider-parser.ts +461 -0
- package/src/k-provider/ovp/provider.ts +358 -0
- package/src/k-provider/ovp/regex-action-handler.ts +149 -0
- package/src/k-provider/ovp/request-params/base-entry-response-profile.ts +28 -0
- package/src/k-provider/ovp/response-types/index.ts +21 -0
- package/src/k-provider/ovp/response-types/kaltura-access-control-modify-request-host-regex-action.ts +35 -0
- package/src/k-provider/ovp/response-types/kaltura-base-entry-list-response.ts +30 -0
- package/src/k-provider/ovp/response-types/kaltura-bumper.ts +25 -0
- package/src/k-provider/ovp/response-types/kaltura-flavor-asset.ts +108 -0
- package/src/k-provider/ovp/response-types/kaltura-media-entries.ts +28 -0
- package/src/k-provider/ovp/response-types/kaltura-media-entry.ts +189 -0
- package/src/k-provider/ovp/response-types/kaltura-metadata-list-response.ts +22 -0
- package/src/k-provider/ovp/response-types/kaltura-metadata.ts +50 -0
- package/src/k-provider/ovp/response-types/kaltura-playback-context.ts +95 -0
- package/src/k-provider/ovp/response-types/kaltura-playback-source.ts +89 -0
- package/src/k-provider/ovp/response-types/kaltura-playlist.ts +33 -0
- package/src/k-provider/ovp/response-types/kaltura-rule-action.ts +27 -0
- package/src/k-provider/ovp/response-types/kaltura-ui-conf-response.ts +89 -0
- package/src/k-provider/ovp/response-types/kaltura-user-entry-list-response.ts +30 -0
- package/src/k-provider/ovp/response-types/kaltura-user-entry.ts +57 -0
- package/src/k-provider/ovp/services/analytics/analytics-service.ts +58 -0
- package/src/k-provider/ovp/services/analytics/index.ts +11 -0
- package/src/k-provider/ovp/services/base-entry-service.ts +75 -0
- package/src/k-provider/ovp/services/meta-data-service.ts +29 -0
- package/src/k-provider/ovp/services/ovp-service.ts +32 -0
- package/src/k-provider/ovp/services/playlist-service.ts +95 -0
- package/src/k-provider/ovp/services/session-service.ts +27 -0
- package/src/k-provider/ovp/services/stats/index.ts +11 -0
- package/src/k-provider/ovp/services/stats/stats-service.ts +32 -0
- package/src/k-provider/ovp/services/ui-conf-service.ts +32 -0
- package/src/types/adapter-data-config.ts +1 -0
- package/src/types/caption-type.ts +1 -0
- package/src/types/drm-data.ts +5 -0
- package/src/types/entry-list.ts +6 -0
- package/src/types/env-config.ts +7 -0
- package/src/types/external-caption-object.ts +7 -0
- package/src/types/filter-options.ts +3 -0
- package/src/types/index.ts +34 -0
- package/src/types/loader.ts +7 -0
- package/src/types/media-config-metadata.ts +13 -0
- package/src/types/media-config-session.ts +6 -0
- package/src/types/media-config-sources.ts +20 -0
- package/src/types/media-config.ts +8 -0
- package/src/types/media-entry.ts +16 -0
- package/src/types/media-format.ts +5 -0
- package/src/types/media-info.ts +21 -0
- package/src/types/media-source.ts +12 -0
- package/src/types/media-sources.ts +11 -0
- package/src/types/network-retry-parameters.ts +5 -0
- package/src/types/playback-context.ts +10 -0
- package/src/types/playlist-info.ts +4 -0
- package/src/types/playlist-item.ts +5 -0
- package/src/types/playlist-metadata.ts +4 -0
- package/src/types/playlist.ts +10 -0
- package/src/types/poster.ts +5 -0
- package/src/types/provider-options.ts +17 -0
- package/src/types/request-loader.ts +6 -0
- package/src/util/clone.ts +23 -0
- package/src/util/error/category.ts +11 -0
- package/src/util/error/code.ts +77 -0
- package/src/util/error/error.ts +47 -0
- package/src/util/error/severity.ts +21 -0
- package/src/util/logger.ts +108 -0
- package/src/util/param.ts +45 -0
- package/src/util/request-builder.ts +187 -0
- package/src/util/xml-parser.ts +39 -0
- package/CHANGELOG.md +0 -959
- package/samples/ott/bookmark.html +0 -23
- package/samples/ott/provider.html +0 -28
- package/samples/ovp/provider.html +0 -30
- 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
|
+
}
|