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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/dist/index.d.ts +1624 -0
  2. package/dist/playkit-analytics-service.js +1 -1
  3. package/dist/playkit-analytics-service.js.map +1 -1
  4. package/dist/playkit-bookmark-service.js +1 -1
  5. package/dist/playkit-bookmark-service.js.map +1 -1
  6. package/dist/playkit-ott-provider.js +1 -1
  7. package/dist/playkit-ott-provider.js.map +1 -1
  8. package/dist/playkit-ovp-provider.js +2 -1
  9. package/dist/playkit-ovp-provider.js.LICENSE.txt +1 -0
  10. package/dist/playkit-ovp-provider.js.map +1 -1
  11. package/dist/playkit-stats-service.js +1 -1
  12. package/dist/playkit-stats-service.js.map +1 -1
  13. package/dist/tsdoc-metadata.json +11 -0
  14. package/flow-typed/types/media-config-sources.js +1 -1
  15. package/flow-typed/types/media-sources.js +1 -1
  16. package/package.json +49 -46
  17. package/playkit-analytics-service/package.json +5 -0
  18. package/playkit-bookmark-service/package.json +5 -0
  19. package/playkit-ott-provider/package.json +5 -0
  20. package/playkit-ovp-provider/package.json +5 -0
  21. package/playkit-stats-service/package.json +5 -0
  22. package/src/entities/bumper.ts +21 -0
  23. package/src/entities/drm.ts +47 -0
  24. package/src/entities/entry-list.ts +13 -0
  25. package/src/entities/image-source.ts +36 -0
  26. package/src/entities/media-entry.ts +104 -0
  27. package/src/entities/media-format.ts +47 -0
  28. package/src/entities/media-source.ts +70 -0
  29. package/src/entities/media-sources.ts +79 -0
  30. package/src/entities/playlist.ts +41 -0
  31. package/src/k-provider/common/base-provider-parser.ts +0 -0
  32. package/src/k-provider/common/base-provider.ts +112 -0
  33. package/src/k-provider/common/base-service-result.ts +56 -0
  34. package/src/k-provider/common/data-loader-manager.ts +115 -0
  35. package/src/k-provider/common/multi-request-builder.ts +111 -0
  36. package/src/k-provider/common/response-types/kaltura-access-control-message.ts +21 -0
  37. package/src/k-provider/common/response-types/kaltura-drm-playback-plugin-data.ts +38 -0
  38. package/src/k-provider/ott/config.ts +22 -0
  39. package/src/k-provider/ott/index.ts +14 -0
  40. package/src/k-provider/ott/loaders/asset-list-loader.ts +68 -0
  41. package/src/k-provider/ott/loaders/asset-loader.ts +69 -0
  42. package/src/k-provider/ott/loaders/data-loader-manager.ts +15 -0
  43. package/src/k-provider/ott/loaders/session-loader.ts +62 -0
  44. package/src/k-provider/ott/provider-parser.ts +285 -0
  45. package/src/k-provider/ott/provider.ts +252 -0
  46. package/src/k-provider/ott/response-types/kaltura-asset.ts +105 -0
  47. package/src/k-provider/ott/response-types/kaltura-bumper-playback-plugin-data.ts +27 -0
  48. package/src/k-provider/ott/response-types/kaltura-playback-context.ts +73 -0
  49. package/src/k-provider/ott/response-types/kaltura-playback-source.ts +62 -0
  50. package/src/k-provider/ott/response-types/kaltura-rule-action.ts +25 -0
  51. package/src/k-provider/ott/services/asset-service.ts +50 -0
  52. package/src/k-provider/ott/services/bookmark/bookmark-service.ts +48 -0
  53. package/src/k-provider/ott/services/bookmark/index.ts +11 -0
  54. package/src/k-provider/ott/services/ott-service.ts +33 -0
  55. package/src/k-provider/ott/services/user-service.ts +31 -0
  56. package/src/k-provider/ovp/config.ts +28 -0
  57. package/src/k-provider/ovp/external-captions-builder.ts +37 -0
  58. package/src/k-provider/ovp/index.ts +13 -0
  59. package/src/k-provider/ovp/loaders/data-loader-manager.ts +17 -0
  60. package/src/k-provider/ovp/loaders/entry-list-loader.ts +69 -0
  61. package/src/k-provider/ovp/loaders/media-entry-loader.ts +84 -0
  62. package/src/k-provider/ovp/loaders/playlist-loader.ts +69 -0
  63. package/src/k-provider/ovp/loaders/session-loader.ts +62 -0
  64. package/src/k-provider/ovp/loaders/ui-config-loader.ts +71 -0
  65. package/src/k-provider/ovp/play-source-url-builder.ts +59 -0
  66. package/src/k-provider/ovp/provider-parser.ts +461 -0
  67. package/src/k-provider/ovp/provider.ts +358 -0
  68. package/src/k-provider/ovp/regex-action-handler.ts +149 -0
  69. package/src/k-provider/ovp/request-params/base-entry-response-profile.ts +28 -0
  70. package/src/k-provider/ovp/response-types/index.ts +21 -0
  71. package/src/k-provider/ovp/response-types/kaltura-access-control-modify-request-host-regex-action.ts +35 -0
  72. package/src/k-provider/ovp/response-types/kaltura-base-entry-list-response.ts +30 -0
  73. package/src/k-provider/ovp/response-types/kaltura-bumper.ts +25 -0
  74. package/src/k-provider/ovp/response-types/kaltura-flavor-asset.ts +108 -0
  75. package/src/k-provider/ovp/response-types/kaltura-media-entries.ts +28 -0
  76. package/src/k-provider/ovp/response-types/kaltura-media-entry.ts +189 -0
  77. package/src/k-provider/ovp/response-types/kaltura-metadata-list-response.ts +22 -0
  78. package/src/k-provider/ovp/response-types/kaltura-metadata.ts +50 -0
  79. package/src/k-provider/ovp/response-types/kaltura-playback-context.ts +95 -0
  80. package/src/k-provider/ovp/response-types/kaltura-playback-source.ts +89 -0
  81. package/src/k-provider/ovp/response-types/kaltura-playlist.ts +33 -0
  82. package/src/k-provider/ovp/response-types/kaltura-rule-action.ts +27 -0
  83. package/src/k-provider/ovp/response-types/kaltura-ui-conf-response.ts +89 -0
  84. package/src/k-provider/ovp/response-types/kaltura-user-entry-list-response.ts +30 -0
  85. package/src/k-provider/ovp/response-types/kaltura-user-entry.ts +57 -0
  86. package/src/k-provider/ovp/services/analytics/analytics-service.ts +58 -0
  87. package/src/k-provider/ovp/services/analytics/index.ts +11 -0
  88. package/src/k-provider/ovp/services/base-entry-service.ts +75 -0
  89. package/src/k-provider/ovp/services/meta-data-service.ts +29 -0
  90. package/src/k-provider/ovp/services/ovp-service.ts +32 -0
  91. package/src/k-provider/ovp/services/playlist-service.ts +95 -0
  92. package/src/k-provider/ovp/services/session-service.ts +27 -0
  93. package/src/k-provider/ovp/services/stats/index.ts +11 -0
  94. package/src/k-provider/ovp/services/stats/stats-service.ts +32 -0
  95. package/src/k-provider/ovp/services/ui-conf-service.ts +32 -0
  96. package/src/types/adapter-data-config.ts +1 -0
  97. package/src/types/caption-type.ts +1 -0
  98. package/src/types/drm-data.ts +5 -0
  99. package/src/types/entry-list.ts +6 -0
  100. package/src/types/env-config.ts +7 -0
  101. package/src/types/external-caption-object.ts +7 -0
  102. package/src/types/filter-options.ts +3 -0
  103. package/src/types/index.ts +34 -0
  104. package/src/types/loader.ts +7 -0
  105. package/src/types/media-config-metadata.ts +13 -0
  106. package/src/types/media-config-session.ts +6 -0
  107. package/src/types/media-config-sources.ts +20 -0
  108. package/src/types/media-config.ts +8 -0
  109. package/src/types/media-entry.ts +16 -0
  110. package/src/types/media-format.ts +5 -0
  111. package/src/types/media-info.ts +21 -0
  112. package/src/types/media-source.ts +12 -0
  113. package/src/types/media-sources.ts +11 -0
  114. package/src/types/network-retry-parameters.ts +5 -0
  115. package/src/types/playback-context.ts +10 -0
  116. package/src/types/playlist-info.ts +4 -0
  117. package/src/types/playlist-item.ts +5 -0
  118. package/src/types/playlist-metadata.ts +4 -0
  119. package/src/types/playlist.ts +10 -0
  120. package/src/types/poster.ts +5 -0
  121. package/src/types/provider-options.ts +17 -0
  122. package/src/types/request-loader.ts +6 -0
  123. package/src/util/clone.ts +23 -0
  124. package/src/util/error/category.ts +11 -0
  125. package/src/util/error/code.ts +77 -0
  126. package/src/util/error/error.ts +47 -0
  127. package/src/util/error/severity.ts +21 -0
  128. package/src/util/logger.ts +108 -0
  129. package/src/util/param.ts +45 -0
  130. package/src/util/request-builder.ts +187 -0
  131. package/src/util/xml-parser.ts +39 -0
  132. package/CHANGELOG.md +0 -959
  133. package/samples/ott/bookmark.html +0 -23
  134. package/samples/ott/provider.html +0 -28
  135. package/samples/ovp/provider.html +0 -30
  136. package/samples/ovp/stats.html +0 -17
@@ -0,0 +1,111 @@
1
+ import RequestBuilder from '../../util/request-builder';
2
+ import getLogger from '../../util/logger';
3
+ import ServiceResult from './base-service-result';
4
+ import Error from '../../util/error/error';
5
+
6
+ export default class MultiRequestBuilder extends RequestBuilder {
7
+ private static _logger = getLogger('MultiRequestBuilder');
8
+ /**
9
+ * @memberof - MultiRequestBuilder
10
+ * @type {Array<RequestBuilder>}
11
+ */
12
+ public requests: Array<RequestBuilder> = [];
13
+ /**
14
+ * Adds request to requests array
15
+ * @function add
16
+ * @param {RequestBuilder} request The request
17
+ * @returns {MultiRequestBuilder} The multiRequest
18
+ */
19
+ public add(request: RequestBuilder): MultiRequestBuilder {
20
+ this.requests.push(request);
21
+ const requestParams = {};
22
+ const serviceDef: any = {service: request.service, action: request.action};
23
+ Object.assign(requestParams, {[this.requests.length]: Object.assign(serviceDef, request.params)});
24
+ Object.assign(requestParams, this.params);
25
+ this.params = requestParams;
26
+ return this;
27
+ }
28
+
29
+ /**
30
+ * Executes a multi request
31
+ * @function execute
32
+ * @param {boolean} requestsMustSucceed whether all of the requests must succeed or not
33
+ * @returns {Promise} The multirequest execution promise
34
+ */
35
+ public execute(requestsMustSucceed?: boolean): Promise<any> {
36
+ return new Promise((resolve, reject) => {
37
+ try {
38
+ this.params = JSON.stringify(this.params);
39
+ } catch (err) {
40
+ MultiRequestBuilder._logger.error(`${err.message}`);
41
+ reject(
42
+ new Error(Error.Severity.CRITICAL, Error.Category.PROVIDER, Error.Code.FAILED_PARSING_REQUEST, {
43
+ error: err,
44
+ params: this.params
45
+ })
46
+ );
47
+ }
48
+ this.doHttpRequest().then(
49
+ data => {
50
+ const multiRequestResult = new MultiRequestResult(data, requestsMustSucceed);
51
+ if (multiRequestResult.success) {
52
+ resolve({
53
+ headers: this.responseHeaders,
54
+ response: multiRequestResult
55
+ });
56
+ } else {
57
+ reject(
58
+ new Error(Error.Severity.CRITICAL, Error.Category.NETWORK, Error.Code.MULTIREQUEST_API_ERROR, {
59
+ url: this.url,
60
+ headers: this.responseHeaders,
61
+ results: multiRequestResult.results
62
+ })
63
+ );
64
+ }
65
+ },
66
+ err => {
67
+ reject(err);
68
+ }
69
+ );
70
+ });
71
+ }
72
+ }
73
+
74
+ export class MultiRequestResult {
75
+ private static _logger = getLogger('MultiRequestResult');
76
+ /**
77
+ * @memberof MultiRequestResult
78
+ * @type {boolean}
79
+ */
80
+ public success: boolean;
81
+ /**
82
+ * @memberof MultiRequestResult
83
+ * @type {Object}
84
+ */
85
+ public results: Array<ServiceResult> = [];
86
+ /**
87
+ * @constructor
88
+ * @param {Object} response data
89
+ * @param {boolean} requestsMustSucceed whether all of the requests must succeed
90
+ */
91
+ constructor(response: any, requestsMustSucceed: boolean = true) {
92
+ const result = response.result ? response.result : response;
93
+ const responseArr = Array.isArray(result) ? result : [result];
94
+ const results = responseArr.map(result => new ServiceResult(result));
95
+ const errorResults = results.filter(serviceResult => serviceResult.hasError);
96
+
97
+ errorResults.forEach(serviceResult => {
98
+ MultiRequestResult._logger.error(
99
+ `Service returned an error with error code: ${serviceResult.error.code} and message: ${serviceResult.error.message}.`
100
+ );
101
+ });
102
+
103
+ this.results = results;
104
+ if ((requestsMustSucceed && errorResults.length) || errorResults.length === this.results.length) {
105
+ this.success = false;
106
+ } else {
107
+ this.results = this.results.filter(serviceResult => !serviceResult.hasError);
108
+ this.success = true;
109
+ }
110
+ }
111
+ }
@@ -0,0 +1,21 @@
1
+ export class KalturaAccessControlMessage {
2
+ /**
3
+ * @member - The access control message
4
+ * @type {string}
5
+ */
6
+ public message: string;
7
+ /**
8
+ * @member - The access control message code
9
+ * @@type {string}
10
+ */
11
+ public code: string;
12
+
13
+ /**
14
+ * @constructor
15
+ * @param {Object} data The json response
16
+ */
17
+ constructor(data: any) {
18
+ this.message = data.message;
19
+ this.code = data.code;
20
+ }
21
+ }
@@ -0,0 +1,38 @@
1
+ export class KalturaDrmPlaybackPluginData {
2
+ public static Scheme: {[scheme: string]: string} = {
3
+ 'drm.PLAYREADY_CENC': 'com.microsoft.playready',
4
+ 'drm.WIDEVINE_CENC': 'com.widevine.alpha',
5
+ 'fairplay.FAIRPLAY': 'com.apple.fairplay',
6
+ WIDEVINE_CENC: 'com.widevine.alpha',
7
+ PLAYREADY_CENC: 'com.microsoft.playready',
8
+ FAIRPLAY: 'com.apple.fairplay'
9
+ };
10
+
11
+ /**
12
+ * @member - The drm scheme
13
+ * @type {string}
14
+ */
15
+ public scheme: string;
16
+
17
+ /**
18
+ * @member - The license URL
19
+ * @type {string}
20
+ */
21
+ public licenseURL: string;
22
+
23
+ /**
24
+ * @member - The drm certificate
25
+ * @type {?string}
26
+ */
27
+ public certificate?: string;
28
+
29
+ /**
30
+ * @constructor
31
+ * @param {Object} drm The json response
32
+ */
33
+ constructor(drm: any) {
34
+ this.scheme = drm.scheme;
35
+ this.licenseURL = drm.licenseURL;
36
+ this.certificate = drm.certificate;
37
+ }
38
+ }
@@ -0,0 +1,22 @@
1
+ import {clone} from '../../util/clone';
2
+ import {ProviderEnvConfigObject} from '../../types';
3
+
4
+ const defaultConfig: any = {
5
+ serviceParams: {
6
+ apiVersion: '7.8.1'
7
+ }
8
+ };
9
+
10
+ export default class OTTConfiguration {
11
+ public static set(clientConfig?: ProviderEnvConfigObject): void {
12
+ if (clientConfig) {
13
+ Object.assign(defaultConfig, clientConfig);
14
+ }
15
+ }
16
+
17
+ public static get(): any {
18
+ return clone(defaultConfig);
19
+ }
20
+ }
21
+
22
+ export {OTTConfiguration};
@@ -0,0 +1,14 @@
1
+ import OTTProvider from './provider';
2
+ import KalturaPlaybackContext from './response-types/kaltura-playback-context';
3
+ import KalturaAsset from './response-types/kaltura-asset';
4
+
5
+ declare let __VERSION__: string;
6
+ declare let __NAME__: string;
7
+
8
+ const NAME = __NAME__ + '-ott';
9
+ const VERSION = __VERSION__;
10
+
11
+ const ContextType = KalturaPlaybackContext.Type;
12
+ const MediaType = KalturaAsset.Type;
13
+
14
+ export {OTTProvider as Provider, ContextType, MediaType, NAME, VERSION};
@@ -0,0 +1,68 @@
1
+ import RequestBuilder from '../../../util/request-builder';
2
+ import OTTConfiguration from '../config';
3
+ import OTTAssetService from '../services/asset-service';
4
+ import KalturaAsset from '../response-types/kaltura-asset';
5
+ import {ILoader} from '../../../types';
6
+
7
+ export default class OTTAssetListLoader 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 'asset_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
+ response.forEach(item => {
35
+ this._response.playlistItems.entries.push({mediaDataResult: new KalturaAsset(item.data)});
36
+ });
37
+ }
38
+
39
+ public get response(): any {
40
+ return this._response;
41
+ }
42
+
43
+ /**
44
+ * Builds loader requests
45
+ * @function
46
+ * @param {Object} params Requests parameters
47
+ * @returns {RequestBuilder} The request builder
48
+ * @static
49
+ */
50
+ public buildRequests(params: any): Array<RequestBuilder> {
51
+ const config = OTTConfiguration.get();
52
+ const requests: Array<RequestBuilder> = [];
53
+ params.entries.forEach(entry => {
54
+ const assetReferenceType = entry.assetReferenceType || KalturaAsset.AssetReferenceType.MEDIA;
55
+ requests.push(OTTAssetService.get(config.serviceUrl, params.ks, entry.entryId || entry, assetReferenceType));
56
+ });
57
+ return requests;
58
+ }
59
+
60
+ /**
61
+ * Loader validation function
62
+ * @function
63
+ * @returns {boolean} Is valid
64
+ */
65
+ public isValid(): boolean {
66
+ return !!(this._entries && this._entries.length);
67
+ }
68
+ }
@@ -0,0 +1,69 @@
1
+ import OTTAssetService from '../services/asset-service';
2
+ import OTTConfiguration from '../config';
3
+ import RequestBuilder from '../../../util/request-builder';
4
+ import KalturaPlaybackContext from '../response-types/kaltura-playback-context';
5
+ import KalturaAsset from '../response-types/kaltura-asset';
6
+ import {ILoader} from '../../../types';
7
+
8
+ type OTTAssetLoaderResponse = {mediaDataResult: KalturaAsset, playBackContextResult: KalturaPlaybackContext};
9
+ export type {OTTAssetLoaderResponse};
10
+
11
+ export default class OTTAssetLoader implements ILoader {
12
+ private _entryId: string;
13
+ private _requests!: Array<RequestBuilder>;
14
+ private _response: any = {};
15
+
16
+ public static get id(): string {
17
+ return 'asset';
18
+ }
19
+
20
+ /**
21
+ * @constructor
22
+ * @param {Object} params loader params
23
+ */
24
+ constructor(params: any) {
25
+ this.requests = this.buildRequests(params);
26
+ this._entryId = params.entryId;
27
+ }
28
+
29
+ public set requests(requests: Array<RequestBuilder>) {
30
+ this._requests = requests;
31
+ }
32
+
33
+ public get requests(): Array<RequestBuilder> {
34
+ return this._requests;
35
+ }
36
+
37
+ public set response(response: any) {
38
+ this._response.mediaDataResult = new KalturaAsset(response[0].data);
39
+ this._response.playBackContextResult = new KalturaPlaybackContext(response[1].data);
40
+ }
41
+
42
+ public get response(): OTTAssetLoaderResponse {
43
+ return this._response;
44
+ }
45
+
46
+ /**
47
+ * Builds loader requests
48
+ * @function
49
+ * @param {Object} params Requests parameters
50
+ * @returns {RequestBuilder} The request builder
51
+ * @static
52
+ */
53
+ public buildRequests(params: any): Array<RequestBuilder> {
54
+ const config = OTTConfiguration.get();
55
+ const requests: Array<RequestBuilder> = [];
56
+ requests.push(OTTAssetService.get(config.serviceUrl, params.ks, params.entryId, params.assetReferenceType));
57
+ requests.push(OTTAssetService.getPlaybackContext(config.serviceUrl, params.ks, params.entryId, params.type, params.playbackContext));
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._entryId;
68
+ }
69
+ }
@@ -0,0 +1,15 @@
1
+ import DataLoaderManager from '../../common/data-loader-manager';
2
+ import OTTService from '../services/ott-service';
3
+ import {ProviderNetworkRetryParameters} from '../../../types';
4
+ /**
5
+ * OTTDataLoaderManager is a class that handles the OTT data loading
6
+ * @param {string} partnerId - partner id
7
+ * @param {string} ks - ks
8
+ * @param {ProviderNetworkRetryParameters} [networkRetryConfig] - network retry configuration
9
+ */
10
+ export default class OTTDataLoaderManager extends DataLoaderManager {
11
+ constructor(partnerId: number, ks: string = '', networkRetryConfig: ProviderNetworkRetryParameters) {
12
+ super(networkRetryConfig);
13
+ this._multiRequest = OTTService.getMultiRequest(ks, partnerId);
14
+ }
15
+ }
@@ -0,0 +1,62 @@
1
+ import UserService from '../services/user-service';
2
+ import OTTConfiguration from '../config';
3
+ import RequestBuilder from '../../../util/request-builder';
4
+ import {ILoader} from '../../../types';
5
+
6
+ export default class OTTSessionLoader implements ILoader {
7
+ private _partnerId: number;
8
+ private _requests!: Array<RequestBuilder>;
9
+ private _response: any = {};
10
+
11
+ public static get id(): string {
12
+ return 'session';
13
+ }
14
+
15
+ /**
16
+ * @constructor
17
+ * @param {Object} params loader params
18
+ */
19
+ constructor(params: any) {
20
+ this.requests = this.buildRequests(params);
21
+ this._partnerId = params.partnerId;
22
+ }
23
+
24
+ public set requests(requests: Array<RequestBuilder>) {
25
+ this._requests = requests;
26
+ }
27
+
28
+ public get requests(): Array<RequestBuilder> {
29
+ return this._requests;
30
+ }
31
+
32
+ public set response(response: any) {
33
+ this._response.ks = response[0].data.ks;
34
+ }
35
+
36
+ public get response(): any {
37
+ return this._response.ks;
38
+ }
39
+
40
+ /**
41
+ * Builds loader requests
42
+ * @function
43
+ * @param {Object} params Requests parameters
44
+ * @returns {RequestBuilder} The request builder
45
+ * @static
46
+ */
47
+ public buildRequests(params: any): Array<RequestBuilder> {
48
+ const config = OTTConfiguration.get();
49
+ const requests: Array<RequestBuilder> = [];
50
+ requests.push(UserService.anonymousLogin(config.serviceUrl, params.partnerId, params.udid));
51
+ return requests;
52
+ }
53
+
54
+ /**
55
+ * Loader validation function
56
+ * @function
57
+ * @returns {boolean} Is valid
58
+ */
59
+ public isValid(): boolean {
60
+ return !!this._partnerId;
61
+ }
62
+ }