@playkit-js/playkit-js-providers 2.40.1 → 2.41.0-canary.0-2452bbc

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 (135) 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 +1 -1
  9. package/dist/playkit-ovp-provider.js.map +1 -1
  10. package/dist/playkit-stats-service.js +1 -1
  11. package/dist/playkit-stats-service.js.map +1 -1
  12. package/dist/tsdoc-metadata.json +11 -0
  13. package/flow-typed/types/media-config-sources.js +1 -1
  14. package/flow-typed/types/media-sources.js +1 -1
  15. package/package.json +48 -45
  16. package/playkit-analytics-service/package.json +5 -0
  17. package/playkit-bookmark-service/package.json +5 -0
  18. package/playkit-ott-provider/package.json +5 -0
  19. package/playkit-ovp-provider/package.json +5 -0
  20. package/playkit-stats-service/package.json +5 -0
  21. package/src/entities/bumper.ts +21 -0
  22. package/src/entities/drm.ts +47 -0
  23. package/src/entities/entry-list.ts +13 -0
  24. package/src/entities/image-source.ts +36 -0
  25. package/src/entities/media-entry.ts +104 -0
  26. package/src/entities/media-format.ts +47 -0
  27. package/src/entities/media-source.ts +70 -0
  28. package/src/entities/media-sources.ts +79 -0
  29. package/src/entities/playlist.ts +41 -0
  30. package/src/k-provider/common/base-provider-parser.ts +0 -0
  31. package/src/k-provider/common/base-provider.ts +112 -0
  32. package/src/k-provider/common/base-service-result.ts +56 -0
  33. package/src/k-provider/common/data-loader-manager.ts +115 -0
  34. package/src/k-provider/common/multi-request-builder.ts +111 -0
  35. package/src/k-provider/common/response-types/kaltura-access-control-message.ts +21 -0
  36. package/src/k-provider/common/response-types/kaltura-drm-playback-plugin-data.ts +38 -0
  37. package/src/k-provider/ott/config.ts +22 -0
  38. package/src/k-provider/ott/index.ts +14 -0
  39. package/src/k-provider/ott/loaders/asset-list-loader.ts +68 -0
  40. package/src/k-provider/ott/loaders/asset-loader.ts +69 -0
  41. package/src/k-provider/ott/loaders/data-loader-manager.ts +15 -0
  42. package/src/k-provider/ott/loaders/session-loader.ts +62 -0
  43. package/src/k-provider/ott/provider-parser.ts +285 -0
  44. package/src/k-provider/ott/provider.ts +252 -0
  45. package/src/k-provider/ott/response-types/kaltura-asset.ts +105 -0
  46. package/src/k-provider/ott/response-types/kaltura-bumper-playback-plugin-data.ts +27 -0
  47. package/src/k-provider/ott/response-types/kaltura-playback-context.ts +73 -0
  48. package/src/k-provider/ott/response-types/kaltura-playback-source.ts +62 -0
  49. package/src/k-provider/ott/response-types/kaltura-rule-action.ts +25 -0
  50. package/src/k-provider/ott/services/asset-service.ts +50 -0
  51. package/src/k-provider/ott/services/bookmark/bookmark-service.ts +48 -0
  52. package/src/k-provider/ott/services/bookmark/index.ts +11 -0
  53. package/src/k-provider/ott/services/ott-service.ts +33 -0
  54. package/src/k-provider/ott/services/user-service.ts +31 -0
  55. package/src/k-provider/ovp/config.ts +28 -0
  56. package/src/k-provider/ovp/external-captions-builder.ts +37 -0
  57. package/src/k-provider/ovp/index.ts +13 -0
  58. package/src/k-provider/ovp/loaders/data-loader-manager.ts +17 -0
  59. package/src/k-provider/ovp/loaders/entry-list-loader.ts +69 -0
  60. package/src/k-provider/ovp/loaders/media-entry-loader.ts +84 -0
  61. package/src/k-provider/ovp/loaders/playlist-loader.ts +69 -0
  62. package/src/k-provider/ovp/loaders/session-loader.ts +62 -0
  63. package/src/k-provider/ovp/loaders/ui-config-loader.ts +71 -0
  64. package/src/k-provider/ovp/play-source-url-builder.ts +59 -0
  65. package/src/k-provider/ovp/provider-parser.ts +461 -0
  66. package/src/k-provider/ovp/provider.ts +358 -0
  67. package/src/k-provider/ovp/regex-action-handler.ts +149 -0
  68. package/src/k-provider/ovp/request-params/base-entry-response-profile.ts +28 -0
  69. package/src/k-provider/ovp/response-types/index.ts +21 -0
  70. package/src/k-provider/ovp/response-types/kaltura-access-control-modify-request-host-regex-action.ts +35 -0
  71. package/src/k-provider/ovp/response-types/kaltura-base-entry-list-response.ts +30 -0
  72. package/src/k-provider/ovp/response-types/kaltura-bumper.ts +25 -0
  73. package/src/k-provider/ovp/response-types/kaltura-flavor-asset.ts +108 -0
  74. package/src/k-provider/ovp/response-types/kaltura-media-entries.ts +28 -0
  75. package/src/k-provider/ovp/response-types/kaltura-media-entry.ts +189 -0
  76. package/src/k-provider/ovp/response-types/kaltura-metadata-list-response.ts +22 -0
  77. package/src/k-provider/ovp/response-types/kaltura-metadata.ts +50 -0
  78. package/src/k-provider/ovp/response-types/kaltura-playback-context.ts +95 -0
  79. package/src/k-provider/ovp/response-types/kaltura-playback-source.ts +89 -0
  80. package/src/k-provider/ovp/response-types/kaltura-playlist.ts +33 -0
  81. package/src/k-provider/ovp/response-types/kaltura-rule-action.ts +27 -0
  82. package/src/k-provider/ovp/response-types/kaltura-ui-conf-response.ts +89 -0
  83. package/src/k-provider/ovp/response-types/kaltura-user-entry-list-response.ts +30 -0
  84. package/src/k-provider/ovp/response-types/kaltura-user-entry.ts +57 -0
  85. package/src/k-provider/ovp/services/analytics/analytics-service.ts +58 -0
  86. package/src/k-provider/ovp/services/analytics/index.ts +11 -0
  87. package/src/k-provider/ovp/services/base-entry-service.ts +75 -0
  88. package/src/k-provider/ovp/services/meta-data-service.ts +29 -0
  89. package/src/k-provider/ovp/services/ovp-service.ts +32 -0
  90. package/src/k-provider/ovp/services/playlist-service.ts +95 -0
  91. package/src/k-provider/ovp/services/session-service.ts +27 -0
  92. package/src/k-provider/ovp/services/stats/index.ts +11 -0
  93. package/src/k-provider/ovp/services/stats/stats-service.ts +32 -0
  94. package/src/k-provider/ovp/services/ui-conf-service.ts +32 -0
  95. package/src/types/adapter-data-config.ts +1 -0
  96. package/src/types/caption-type.ts +1 -0
  97. package/src/types/drm-data.ts +5 -0
  98. package/src/types/entry-list.ts +6 -0
  99. package/src/types/env-config.ts +7 -0
  100. package/src/types/external-caption-object.ts +7 -0
  101. package/src/types/filter-options.ts +3 -0
  102. package/src/types/index.ts +34 -0
  103. package/src/types/loader.ts +7 -0
  104. package/src/types/media-config-metadata.ts +13 -0
  105. package/src/types/media-config-session.ts +6 -0
  106. package/src/types/media-config-sources.ts +20 -0
  107. package/src/types/media-config.ts +8 -0
  108. package/src/types/media-entry.ts +16 -0
  109. package/src/types/media-format.ts +5 -0
  110. package/src/types/media-info.ts +21 -0
  111. package/src/types/media-source.ts +12 -0
  112. package/src/types/media-sources.ts +11 -0
  113. package/src/types/network-retry-parameters.ts +5 -0
  114. package/src/types/playback-context.ts +10 -0
  115. package/src/types/playlist-info.ts +4 -0
  116. package/src/types/playlist-item.ts +5 -0
  117. package/src/types/playlist-metadata.ts +4 -0
  118. package/src/types/playlist.ts +10 -0
  119. package/src/types/poster.ts +5 -0
  120. package/src/types/provider-options.ts +17 -0
  121. package/src/types/request-loader.ts +6 -0
  122. package/src/util/clone.ts +23 -0
  123. package/src/util/error/category.ts +11 -0
  124. package/src/util/error/code.ts +77 -0
  125. package/src/util/error/error.ts +47 -0
  126. package/src/util/error/severity.ts +21 -0
  127. package/src/util/logger.ts +108 -0
  128. package/src/util/param.ts +45 -0
  129. package/src/util/request-builder.ts +187 -0
  130. package/src/util/xml-parser.ts +39 -0
  131. package/CHANGELOG.md +0 -959
  132. package/samples/ott/bookmark.html +0 -23
  133. package/samples/ott/provider.html +0 -28
  134. package/samples/ovp/provider.html +0 -30
  135. 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
+ }