@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.
- 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 +2 -1
- package/dist/playkit-ovp-provider.js.LICENSE.txt +1 -0
- 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,187 @@
|
|
|
1
|
+
import Error from './error/error';
|
|
2
|
+
import {ProviderNetworkRetryParameters} from '../types';
|
|
3
|
+
|
|
4
|
+
const KALTURA_HEADER_PREFIX: string = 'x-';
|
|
5
|
+
|
|
6
|
+
export default class RequestBuilder {
|
|
7
|
+
/**
|
|
8
|
+
* @member - Service name
|
|
9
|
+
* @type {string}
|
|
10
|
+
*/
|
|
11
|
+
public service!: string;
|
|
12
|
+
/**
|
|
13
|
+
* @member - Service action
|
|
14
|
+
* @type {string}
|
|
15
|
+
*/
|
|
16
|
+
public action!: string;
|
|
17
|
+
/**
|
|
18
|
+
* @member - Service params
|
|
19
|
+
* @type {any}
|
|
20
|
+
*/
|
|
21
|
+
public params: any;
|
|
22
|
+
/**
|
|
23
|
+
* @memberof - Service headers
|
|
24
|
+
* @type {Map<string, string>}
|
|
25
|
+
*/
|
|
26
|
+
public headers: Map<string, string>;
|
|
27
|
+
/**
|
|
28
|
+
* @memberof - Service URL
|
|
29
|
+
* @type {string}
|
|
30
|
+
*/
|
|
31
|
+
public url!: string;
|
|
32
|
+
/**
|
|
33
|
+
* @memberof - Service method (POST,GET,DELETE etc..)
|
|
34
|
+
* @type {string}
|
|
35
|
+
*/
|
|
36
|
+
public method!: string;
|
|
37
|
+
/**
|
|
38
|
+
* @memberof - Service tag
|
|
39
|
+
* @type {string}
|
|
40
|
+
*/
|
|
41
|
+
public tag!: string;
|
|
42
|
+
/**
|
|
43
|
+
* @memberof - the response headers of the arra
|
|
44
|
+
* @type {Array<string>}
|
|
45
|
+
*/
|
|
46
|
+
public responseHeaders!: Array<string>;
|
|
47
|
+
/**
|
|
48
|
+
* @description network retry configuration
|
|
49
|
+
* @memberof RequestBuilder
|
|
50
|
+
* @type {ProviderNetworkRetryParameters}
|
|
51
|
+
*/
|
|
52
|
+
public retryConfig: ProviderNetworkRetryParameters = {
|
|
53
|
+
async: true,
|
|
54
|
+
timeout: 0,
|
|
55
|
+
maxAttempts: 4
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* @description number of xhr attempts for the same multi - request.
|
|
60
|
+
* @memberof RequestBuilder
|
|
61
|
+
* @type {number}
|
|
62
|
+
* @private
|
|
63
|
+
*/
|
|
64
|
+
private _attemptCounter: number = 1;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* @description hold the promise result of the XHR request(s) - if all tries fails, it rejects with the error.
|
|
68
|
+
* @memberof RequestBuilder
|
|
69
|
+
* @type {Object}
|
|
70
|
+
* @private
|
|
71
|
+
*/
|
|
72
|
+
private _requestPromise: any;
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* @constructor
|
|
76
|
+
* @param {Map<string, string>} headers The request headers
|
|
77
|
+
*/
|
|
78
|
+
constructor(headers: Map<string, string> = new Map()) {
|
|
79
|
+
this.headers = headers;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Builds restful service URL
|
|
84
|
+
* @function getUrl
|
|
85
|
+
* @param {string} serviceUrl - The service base URL
|
|
86
|
+
* @returns {string} The service URL
|
|
87
|
+
*/
|
|
88
|
+
public getUrl(serviceUrl: string): string {
|
|
89
|
+
return serviceUrl + '/service/' + this.service + (this.action ? '/action/' + this.action : '');
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Executes service
|
|
94
|
+
* @function doHttpRequest
|
|
95
|
+
* @returns {Promise.<any>} Service response as promise
|
|
96
|
+
*/
|
|
97
|
+
public doHttpRequest(): Promise<any> {
|
|
98
|
+
const promise = new Promise((resolve, reject) => {
|
|
99
|
+
this._requestPromise = {
|
|
100
|
+
resolve,
|
|
101
|
+
reject
|
|
102
|
+
};
|
|
103
|
+
});
|
|
104
|
+
if (!this.url) {
|
|
105
|
+
this._requestPromise.reject(
|
|
106
|
+
new Error(Error.Severity.CRITICAL, Error.Category.NETWORK, Error.Code.MALFORMED_DATA_URI, {
|
|
107
|
+
url: this.url
|
|
108
|
+
})
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
this._createXHR();
|
|
112
|
+
return promise;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
private _createXHR(): void {
|
|
116
|
+
const request = new XMLHttpRequest();
|
|
117
|
+
request.onreadystatechange = (): void => {
|
|
118
|
+
if (request.readyState === 4) {
|
|
119
|
+
if (request.status === 200) {
|
|
120
|
+
try {
|
|
121
|
+
const response = JSON.parse(request.responseText);
|
|
122
|
+
this.responseHeaders = this._getResponseHeaders(request);
|
|
123
|
+
// the promise returns the response for backwards compatibility
|
|
124
|
+
return this._requestPromise.resolve(response);
|
|
125
|
+
} catch (error) {
|
|
126
|
+
this._requestPromise.reject(
|
|
127
|
+
this._createError(request, Error.Code.BAD_SERVER_RESPONSE, {
|
|
128
|
+
text: request.responseText
|
|
129
|
+
})
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
request.open(this.method, this.url, this.retryConfig.async);
|
|
136
|
+
if (this.retryConfig.async && this.retryConfig.timeout) {
|
|
137
|
+
request.timeout = this.retryConfig.timeout;
|
|
138
|
+
}
|
|
139
|
+
const requestTime = performance.now();
|
|
140
|
+
request.ontimeout = (): void => {
|
|
141
|
+
this._handleError(request, Error.Code.TIMEOUT, {
|
|
142
|
+
timeout: (performance.now() - requestTime) / 1000,
|
|
143
|
+
statusText: request.statusText
|
|
144
|
+
});
|
|
145
|
+
};
|
|
146
|
+
request.onerror = request.onabort = (): void => {
|
|
147
|
+
this._handleError(request, Error.Code.HTTP_ERROR, {
|
|
148
|
+
text: request.responseText,
|
|
149
|
+
statusText: request.statusText
|
|
150
|
+
});
|
|
151
|
+
};
|
|
152
|
+
this.headers.forEach((value, key) => {
|
|
153
|
+
request.setRequestHeader(key, value);
|
|
154
|
+
});
|
|
155
|
+
request.send(this.params);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
private _getResponseHeaders(request: XMLHttpRequest): Array<string> {
|
|
159
|
+
return request
|
|
160
|
+
.getAllResponseHeaders()
|
|
161
|
+
.split('\n')
|
|
162
|
+
.filter(header => header.toLowerCase().indexOf(KALTURA_HEADER_PREFIX) === 0);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
private _handleError(request: XMLHttpRequest, code: number, data: any): Promise<void> | void {
|
|
166
|
+
const error = this._createError(request, code, data);
|
|
167
|
+
request.onreadystatechange = function (): void {};
|
|
168
|
+
request.onerror = function (): void {};
|
|
169
|
+
request.ontimeout = function (): void {};
|
|
170
|
+
request.onabort = function (): void {};
|
|
171
|
+
if (this.retryConfig.maxAttempts && this._attemptCounter < this.retryConfig.maxAttempts) {
|
|
172
|
+
this._attemptCounter++;
|
|
173
|
+
this._createXHR();
|
|
174
|
+
} else {
|
|
175
|
+
return this._requestPromise.reject(error);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
private _createError(request: XMLHttpRequest, code: number, data: any): Error {
|
|
180
|
+
Object.assign(data, {
|
|
181
|
+
url: this.url,
|
|
182
|
+
headers: this._getResponseHeaders(request),
|
|
183
|
+
attempt: this._attemptCounter
|
|
184
|
+
});
|
|
185
|
+
return new Error(Error.Severity.CRITICAL, Error.Category.NETWORK, code, data);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export default class XmlParser {
|
|
2
|
+
/**
|
|
3
|
+
* Parses xml string to json object
|
|
4
|
+
* @param {string} xml The xml to parse
|
|
5
|
+
* @returns {{}} The parsed xml as Json object
|
|
6
|
+
* @static
|
|
7
|
+
*/
|
|
8
|
+
public static xmlToJson(xml: Document | ChildNode): any {
|
|
9
|
+
let obj: any = {};
|
|
10
|
+
if (xml.nodeType === 1) {
|
|
11
|
+
if (xml['attributes'].length > 0) {
|
|
12
|
+
obj['@attributes'] = {};
|
|
13
|
+
for (let j = 0; j < xml['attributes'].length; j++) {
|
|
14
|
+
const attribute = xml['attributes'].item(j);
|
|
15
|
+
obj['@attributes'][attribute.nodeName] = attribute.nodeValue;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
} else if (xml.nodeType === 3) {
|
|
19
|
+
obj = xml.nodeValue;
|
|
20
|
+
}
|
|
21
|
+
if (xml.hasChildNodes()) {
|
|
22
|
+
for (let i = 0; i < xml.childNodes.length; i++) {
|
|
23
|
+
const item = xml.childNodes.item(i);
|
|
24
|
+
const nodeName = item.nodeName;
|
|
25
|
+
if (typeof obj[nodeName] === 'undefined') {
|
|
26
|
+
obj[nodeName] = this.xmlToJson(item);
|
|
27
|
+
} else {
|
|
28
|
+
if (typeof obj[nodeName].push === 'undefined') {
|
|
29
|
+
const old = obj[nodeName];
|
|
30
|
+
obj[nodeName] = [];
|
|
31
|
+
obj[nodeName].push(old);
|
|
32
|
+
}
|
|
33
|
+
obj[nodeName].push(this.xmlToJson(item));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return obj;
|
|
38
|
+
}
|
|
39
|
+
}
|