@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.
Files changed (130) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/playkit-analytics-service.js +2 -0
  3. package/dist/playkit-analytics-service.js.map +1 -0
  4. package/dist/playkit-bookmark-service.js +2 -0
  5. package/dist/playkit-bookmark-service.js.map +1 -0
  6. package/dist/playkit-ott-provider.js +2 -0
  7. package/dist/playkit-ott-provider.js.map +1 -0
  8. package/dist/playkit-ovp-provider.js +2 -0
  9. package/dist/playkit-ovp-provider.js.map +1 -0
  10. package/dist/playkit-stats-service.js +2 -0
  11. package/dist/playkit-stats-service.js.map +1 -0
  12. package/package.json +1 -1
  13. package/.babelrc +0 -22
  14. package/.editorconfig +0 -10
  15. package/.eslintignore +0 -3
  16. package/.eslintrc.json +0 -26
  17. package/.flowconfig +0 -5
  18. package/.github/ISSUE_TEMPLATE.md +0 -28
  19. package/.github/PULL_REQUEST_TEMPLATE.md +0 -12
  20. package/.github/workflows/run_canary_full_flow.yaml +0 -28
  21. package/.github/workflows/run_prod.yaml +0 -24
  22. package/.github/workflows/run_tests.yaml +0 -24
  23. package/.prettierignore +0 -7
  24. package/.prettierrc +0 -12
  25. package/docs/configuration.md +0 -225
  26. package/karma.conf.js +0 -42
  27. package/src/entities/bumper.js +0 -23
  28. package/src/entities/drm.js +0 -46
  29. package/src/entities/entry-list.js +0 -15
  30. package/src/entities/image-source.js +0 -37
  31. package/src/entities/media-entry.js +0 -96
  32. package/src/entities/media-format.js +0 -46
  33. package/src/entities/media-source.js +0 -70
  34. package/src/entities/media-sources.js +0 -79
  35. package/src/entities/playlist.js +0 -37
  36. package/src/index.html +0 -11
  37. package/src/k-provider/common/base-provider-parser.js +0 -0
  38. package/src/k-provider/common/base-provider.js +0 -110
  39. package/src/k-provider/common/base-service-result.js +0 -57
  40. package/src/k-provider/common/data-loader-manager.js +0 -115
  41. package/src/k-provider/common/multi-request-builder.js +0 -112
  42. package/src/k-provider/common/response-types/kaltura-access-control-message.js +0 -22
  43. package/src/k-provider/common/response-types/kaltura-drm-playback-plugin-data.js +0 -39
  44. package/src/k-provider/ott/config.js +0 -22
  45. package/src/k-provider/ott/index.js +0 -15
  46. package/src/k-provider/ott/loaders/asset-list-loader.js +0 -68
  47. package/src/k-provider/ott/loaders/asset-loader.js +0 -69
  48. package/src/k-provider/ott/loaders/data-loader-manager.js +0 -15
  49. package/src/k-provider/ott/loaders/session-loader.js +0 -62
  50. package/src/k-provider/ott/provider-parser.js +0 -282
  51. package/src/k-provider/ott/provider.js +0 -242
  52. package/src/k-provider/ott/response-types/kaltura-asset.js +0 -79
  53. package/src/k-provider/ott/response-types/kaltura-bumper-playback-plugin-data.js +0 -28
  54. package/src/k-provider/ott/response-types/kaltura-playback-context.js +0 -74
  55. package/src/k-provider/ott/response-types/kaltura-playback-source.js +0 -63
  56. package/src/k-provider/ott/response-types/kaltura-rule-action.js +0 -26
  57. package/src/k-provider/ott/services/asset-service.js +0 -50
  58. package/src/k-provider/ott/services/bookmark/bookmark-service.js +0 -49
  59. package/src/k-provider/ott/services/bookmark/index.js +0 -12
  60. package/src/k-provider/ott/services/ott-service.js +0 -34
  61. package/src/k-provider/ott/services/user-service.js +0 -32
  62. package/src/k-provider/ovp/config.js +0 -28
  63. package/src/k-provider/ovp/external-captions-builder.js +0 -38
  64. package/src/k-provider/ovp/index.js +0 -13
  65. package/src/k-provider/ovp/loaders/data-loader-manager.js +0 -17
  66. package/src/k-provider/ovp/loaders/entry-list-loader.js +0 -69
  67. package/src/k-provider/ovp/loaders/media-entry-loader.js +0 -84
  68. package/src/k-provider/ovp/loaders/playlist-loader.js +0 -66
  69. package/src/k-provider/ovp/loaders/session-loader.js +0 -62
  70. package/src/k-provider/ovp/loaders/ui-config-loader.js +0 -71
  71. package/src/k-provider/ovp/play-source-url-builder.js +0 -60
  72. package/src/k-provider/ovp/provider-parser.js +0 -451
  73. package/src/k-provider/ovp/provider.js +0 -344
  74. package/src/k-provider/ovp/regex-action-handler.js +0 -147
  75. package/src/k-provider/ovp/request-params/base-entry-response-profile.js +0 -29
  76. package/src/k-provider/ovp/response-types/index.js +0 -18
  77. package/src/k-provider/ovp/response-types/kaltura-access-control-modify-request-host-regex-action.js +0 -36
  78. package/src/k-provider/ovp/response-types/kaltura-base-entry-list-response.js +0 -31
  79. package/src/k-provider/ovp/response-types/kaltura-bumper.js +0 -26
  80. package/src/k-provider/ovp/response-types/kaltura-flavor-asset.js +0 -109
  81. package/src/k-provider/ovp/response-types/kaltura-media-entries.js +0 -23
  82. package/src/k-provider/ovp/response-types/kaltura-media-entry.js +0 -141
  83. package/src/k-provider/ovp/response-types/kaltura-metadata-list-response.js +0 -23
  84. package/src/k-provider/ovp/response-types/kaltura-metadata.js +0 -51
  85. package/src/k-provider/ovp/response-types/kaltura-playback-context.js +0 -96
  86. package/src/k-provider/ovp/response-types/kaltura-playback-source.js +0 -90
  87. package/src/k-provider/ovp/response-types/kaltura-playlist.js +0 -35
  88. package/src/k-provider/ovp/response-types/kaltura-rule-action.js +0 -28
  89. package/src/k-provider/ovp/response-types/kaltura-ui-conf-response.js +0 -90
  90. package/src/k-provider/ovp/services/analytics/analytics-service.js +0 -57
  91. package/src/k-provider/ovp/services/analytics/index.js +0 -12
  92. package/src/k-provider/ovp/services/base-entry-service.js +0 -76
  93. package/src/k-provider/ovp/services/meta-data-service.js +0 -30
  94. package/src/k-provider/ovp/services/ovp-service.js +0 -33
  95. package/src/k-provider/ovp/services/playlist-service.js +0 -63
  96. package/src/k-provider/ovp/services/session-service.js +0 -28
  97. package/src/k-provider/ovp/services/stats/index.js +0 -12
  98. package/src/k-provider/ovp/services/stats/stats-service.js +0 -33
  99. package/src/k-provider/ovp/services/ui-conf-service.js +0 -33
  100. package/src/util/clone.js +0 -23
  101. package/src/util/error/category.js +0 -12
  102. package/src/util/error/code.js +0 -79
  103. package/src/util/error/error.js +0 -48
  104. package/src/util/error/severity.js +0 -23
  105. package/src/util/logger.js +0 -108
  106. package/src/util/param.js +0 -45
  107. package/src/util/request-builder.js +0 -187
  108. package/src/util/xml-parser.js +0 -40
  109. package/test/.eslintrc.json +0 -9
  110. package/test/setup/karma.js +0 -5
  111. package/test/setup/load-specs.js +0 -13
  112. package/test/setup/prepare-test-environment.js +0 -17
  113. package/test/src/k-provider/ott/be-data.js +0 -3306
  114. package/test/src/k-provider/ott/media-config-data.js +0 -793
  115. package/test/src/k-provider/ott/provider-parser.spec.js +0 -30
  116. package/test/src/k-provider/ott/provider.spec.js +0 -384
  117. package/test/src/k-provider/ott/services/bookmark-service.spec.js +0 -38
  118. package/test/src/k-provider/ovp/be-data.js +0 -3932
  119. package/test/src/k-provider/ovp/external-captions-builder.spec.js +0 -59
  120. package/test/src/k-provider/ovp/media-config-data.js +0 -1509
  121. package/test/src/k-provider/ovp/playback-sources-data.js +0 -229
  122. package/test/src/k-provider/ovp/provider-parser-data.js +0 -142
  123. package/test/src/k-provider/ovp/provider-parser.spec.js +0 -96
  124. package/test/src/k-provider/ovp/provider.spec.js +0 -1075
  125. package/test/src/k-provider/ovp/regex-action-handler-data.js +0 -794
  126. package/test/src/k-provider/ovp/regex-action-handler.spec.js +0 -93
  127. package/test/src/k-provider/ovp/services/analytics-service.spec.js +0 -62
  128. package/test/src/k-provider/ovp/services/stats-service.spec.js +0 -37
  129. package/test/src/util/param.spec.js +0 -23
  130. package/webpack.config.js +0 -85
@@ -1,282 +0,0 @@
1
- //@flow
2
- import getLogger from '../../util/logger';
3
- import KalturaPlaybackSource from './response-types/kaltura-playback-source';
4
- import KalturaPlaybackContext from './response-types/kaltura-playback-context';
5
- import KalturaAsset from './response-types/kaltura-asset';
6
- import MediaEntry from '../../entities/media-entry';
7
- import Drm from '../../entities/drm';
8
- import MediaSource from '../../entities/media-source';
9
- import MediaSources from '../../entities/media-sources';
10
- import EntryList from '../../entities/entry-list';
11
- import Bumper from '../../entities/bumper';
12
- import {SupportedStreamFormat, isProgressiveSource} from '../../entities/media-format';
13
- import {KalturaDrmPlaybackPluginData} from '../common/response-types/kaltura-drm-playback-plugin-data';
14
- import KalturaRuleAction from './response-types/kaltura-rule-action';
15
- import {KalturaAccessControlMessage} from '../common/response-types/kaltura-access-control-message';
16
- import type {OTTAssetLoaderResponse} from './loaders/asset-loader';
17
- import KalturaBumpersPlaybackPluginData from './response-types/kaltura-bumper-playback-plugin-data';
18
-
19
- const LIVE_ASST_OBJECT_TYPE: string = 'KalturaLiveAsset';
20
-
21
- const MediaTypeCombinations: {[mediaType: string]: Object} = {
22
- [KalturaAsset.Type.MEDIA]: {
23
- [KalturaPlaybackContext.Type.TRAILER]: () => ({type: MediaEntry.Type.VOD}),
24
- [KalturaPlaybackContext.Type.PLAYBACK]: mediaAssetData => {
25
- if (mediaAssetData.objectType === LIVE_ASST_OBJECT_TYPE) {
26
- return {type: MediaEntry.Type.LIVE, dvrStatus: mediaAssetData.enableTrickPlay ? MediaEntry.DvrStatus.ON : MediaEntry.DvrStatus.OFF};
27
- } else if (parseInt(mediaAssetData.externalIds) > 0) {
28
- return {type: MediaEntry.Type.LIVE, dvrStatus: MediaEntry.DvrStatus.OFF};
29
- }
30
- return {type: MediaEntry.Type.VOD};
31
- }
32
- },
33
- [KalturaAsset.Type.EPG]: {
34
- [KalturaPlaybackContext.Type.CATCHUP]: () => ({type: MediaEntry.Type.VOD}),
35
- [KalturaPlaybackContext.Type.START_OVER]: () => ({type: MediaEntry.Type.LIVE, dvrStatus: MediaEntry.DvrStatus.ON})
36
- },
37
- [KalturaAsset.Type.RECORDING]: {
38
- [KalturaPlaybackContext.Type.PLAYBACK]: () => ({type: MediaEntry.Type.VOD})
39
- }
40
- };
41
-
42
- export default class OTTProviderParser {
43
- static _logger = getLogger('OTTProviderParser');
44
-
45
- /**
46
- * Returns parsed media entry by given OTT response objects.
47
- * @function getMediaEntry
48
- * @param {any} assetResponse - The asset response.
49
- * @param {Object} requestData - The request data object.
50
- * @returns {MediaEntry} - The media entry
51
- * @static
52
- * @public
53
- */
54
- static getMediaEntry(assetResponse: any, requestData: Object): MediaEntry {
55
- const mediaEntry = new MediaEntry();
56
- OTTProviderParser._fillBaseData(mediaEntry, assetResponse, requestData);
57
- const playbackContext = assetResponse.playBackContextResult;
58
- const mediaAsset = assetResponse.mediaDataResult;
59
- const kalturaSources = playbackContext.sources;
60
- const filteredKalturaSources = OTTProviderParser._filterSourcesByFormats(kalturaSources, requestData.formats);
61
- mediaEntry.sources = OTTProviderParser._getParsedSources(filteredKalturaSources);
62
- const typeData = OTTProviderParser._getMediaType(mediaAsset.data, requestData.mediaType, requestData.contextType);
63
- mediaEntry.type = typeData.type;
64
- mediaEntry.dvrStatus = typeData.dvrStatus;
65
- mediaEntry.duration = Math.max.apply(
66
- Math,
67
- kalturaSources.map(source => source.duration)
68
- );
69
- return mediaEntry;
70
- }
71
-
72
- /**
73
- * Returns parsed entry list by given OTT response objects
74
- * @function getEntryList
75
- * @param {any} playlistResponse - response
76
- * @param {Array<ProviderMediaInfoObject>} requestEntries - entries list
77
- * @returns {Playlist} - The entry list
78
- * @static
79
- * @public
80
- */
81
- static getEntryList(playlistResponse: any, requestEntries: Array<ProviderMediaInfoObject>): EntryList {
82
- const entryList = new EntryList();
83
- const playlistItems = playlistResponse.playlistItems.entries;
84
- playlistItems.forEach(entry => {
85
- const mediaEntry = new MediaEntry();
86
- const requestData = requestEntries.find(requestEntry => requestEntry.entryId === entry.mediaDataResult.id);
87
- OTTProviderParser._fillBaseData(mediaEntry, entry, requestData);
88
- entryList.items.push(mediaEntry);
89
- });
90
- return entryList;
91
- }
92
-
93
- /**
94
- * Returns parsed bumper by given OTT response objects.
95
- * @function getBumper
96
- * @param {any} assetResponse - The asset response.
97
- * @returns {?Bumper} - The bumper
98
- * @static
99
- * @public
100
- */
101
- static getBumper(assetResponse: any): ?Bumper {
102
- const playbackContext = assetResponse.playBackContextResult;
103
- const progressiveBumper = playbackContext.plugins.find(
104
- bumper => bumper.streamertype === KalturaBumpersPlaybackPluginData.StreamerType.PROGRESSIVE
105
- );
106
- if (progressiveBumper) {
107
- return new Bumper(progressiveBumper);
108
- }
109
- }
110
-
111
- static _fillBaseData(mediaEntry: MediaEntry, assetResponse: any, requestData: any) {
112
- const mediaAsset = assetResponse.mediaDataResult;
113
- const metaData = OTTProviderParser.reconstructMetadata(mediaAsset);
114
- metaData.description = mediaAsset.description;
115
- metaData.name = mediaAsset.name;
116
- if (mediaAsset.data.entryId) metaData.entryId = mediaAsset.data.entryId;
117
- if (mediaAsset.data.epgId) metaData.epgId = mediaAsset.data.epgId;
118
- if (mediaAsset.data.recordingId) metaData.recordingId = mediaAsset.data.recordingId;
119
- if (requestData && requestData.mediaType) metaData.mediaType = requestData.mediaType;
120
- if (requestData && requestData.contextType) metaData.contextType = requestData.contextType;
121
- mediaEntry.metadata = metaData;
122
- mediaEntry.poster = OTTProviderParser._getPoster(mediaAsset.pictures);
123
- mediaEntry.id = mediaAsset.id;
124
- return mediaEntry;
125
- }
126
-
127
- /**
128
- * reconstruct the metadata
129
- * @param {Object} mediaAsset the mediaAsset that contains the response with the metadata.
130
- * @returns {Object} reconstructed metadata object
131
- */
132
- static reconstructMetadata(mediaAsset: Object): Object {
133
- const metadata = {
134
- metas: OTTProviderParser.addToMetaObject(mediaAsset.metas),
135
- tags: OTTProviderParser.addToMetaObject(mediaAsset.tags)
136
- };
137
- return metadata;
138
- }
139
-
140
- /**
141
- * transform an array of [{key: value},{key: value}...] to an object
142
- * @param {Array<Object>} list a list of objects
143
- * @returns {Object} an mapped object of the arrayed list.
144
- */
145
- static addToMetaObject(list: Array<Object>): Object {
146
- let categoryObj = {};
147
- if (list) {
148
- list.forEach(item => {
149
- categoryObj[item.key] = item.value;
150
- });
151
- }
152
- return categoryObj;
153
- }
154
-
155
- /**
156
- * Gets the poster url without width and height.
157
- * @param {Array<Object>} pictures - Media pictures.
158
- * @returns {string | Array<Object>} - Poster base url or array of poster candidates.
159
- * @private
160
- */
161
- static _getPoster(pictures: Array<Object>): string | Array<Object> {
162
- if (pictures && pictures.length > 0) {
163
- const picObj = pictures[0];
164
- const url = picObj.url;
165
- // Search for thumbnail service
166
- const regex = /.*\/thumbnail\/.*(?:width|height)\/\d+\/(?:height|width)\/\d+/;
167
- if (regex.test(url)) {
168
- return url;
169
- }
170
- return pictures.map(pic => ({url: pic.url, width: pic.width, height: pic.height}));
171
- }
172
- return '';
173
- }
174
-
175
- /**
176
- * Gets the media type (LIVE/VOD)
177
- * @param {Object} mediaAssetData - The media asset data.
178
- * @param {string} mediaType - The asset media type.
179
- * @param {string} contextType - The asset context type.
180
- * @returns {Object} - The type data object.
181
- * @private
182
- */
183
- static _getMediaType(mediaAssetData: Object, mediaType: string, contextType: string): Object {
184
- let typeData = {type: MediaEntry.Type.UNKNOWN};
185
- if (MediaTypeCombinations[mediaType] && MediaTypeCombinations[mediaType][contextType]) {
186
- typeData = MediaTypeCombinations[mediaType][contextType](mediaAssetData);
187
- }
188
- return typeData;
189
- }
190
-
191
- /**
192
- * Filtered the kalturaSources array by device type.
193
- * @param {Array<KalturaPlaybackSource>} kalturaSources - The kaltura sources.
194
- * @param {Array<string>} formats - Partner device formats.
195
- * @returns {Array<KalturaPlaybackSource>} - Filtered kalturaSources array.
196
- * @private
197
- */
198
- static _filterSourcesByFormats(kalturaSources: Array<KalturaPlaybackSource>, formats: Array<string>): Array<KalturaPlaybackSource> {
199
- if (formats.length > 0) {
200
- kalturaSources = kalturaSources.filter(source => formats.includes(source.type));
201
- }
202
- return kalturaSources;
203
- }
204
-
205
- /**
206
- * Returns the parsed sources
207
- * @function _getParsedSources
208
- * @param {Array<KalturaPlaybackSource>} kalturaSources - The kaltura sources
209
- * @param {Object} playbackContext - The playback context
210
- * @return {MediaSources} - A media sources
211
- * @static
212
- * @private
213
- */
214
- static _getParsedSources(kalturaSources: Array<KalturaPlaybackSource>): MediaSources {
215
- const sources = new MediaSources();
216
- const addAdaptiveSource = (source: KalturaPlaybackSource) => {
217
- const parsedSource = OTTProviderParser._parseAdaptiveSource(source);
218
- if (parsedSource) {
219
- const sourceFormat = SupportedStreamFormat.get(source.format);
220
- sources.map(parsedSource, sourceFormat);
221
- }
222
- };
223
- const parseAdaptiveSources = () => {
224
- kalturaSources.filter(source => !isProgressiveSource(source.format)).forEach(addAdaptiveSource);
225
- };
226
- const parseProgressiveSources = () => {
227
- kalturaSources.filter(source => isProgressiveSource(source.format)).forEach(addAdaptiveSource);
228
- };
229
- if (kalturaSources && kalturaSources.length > 0) {
230
- parseAdaptiveSources();
231
- parseProgressiveSources();
232
- }
233
- return sources;
234
- }
235
-
236
- /**
237
- * Returns a parsed adaptive source
238
- * @function _parseAdaptiveSource
239
- * @param {KalturaPlaybackSource} kalturaSource - A kaltura source
240
- * @returns {?MediaSource} - The parsed adaptive kalturaSource
241
- * @static
242
- * @private
243
- */
244
- static _parseAdaptiveSource(kalturaSource: ?KalturaPlaybackSource): ?MediaSource {
245
- const mediaSource = new MediaSource();
246
- if (kalturaSource) {
247
- const playUrl = kalturaSource.url;
248
- const mediaFormat = SupportedStreamFormat.get(kalturaSource.format);
249
- if (mediaFormat) {
250
- mediaSource.mimetype = mediaFormat.mimeType;
251
- }
252
- if (!playUrl) {
253
- OTTProviderParser._logger.error(
254
- `failed to create play url from source, discarding source: (${kalturaSource.fileId}), ${kalturaSource.format}.`
255
- );
256
- return null;
257
- }
258
- mediaSource.url = playUrl;
259
- mediaSource.id = kalturaSource.fileId + ',' + kalturaSource.format;
260
- if (kalturaSource.hasDrmData()) {
261
- const drmParams: Array<Drm> = [];
262
- kalturaSource.drm.forEach(drm => {
263
- drmParams.push(new Drm(drm.licenseURL, KalturaDrmPlaybackPluginData.Scheme[drm.scheme], drm.certificate));
264
- });
265
- mediaSource.drmData = drmParams;
266
- }
267
- }
268
- return mediaSource;
269
- }
270
-
271
- static hasBlockAction(response: OTTAssetLoaderResponse): boolean {
272
- return response.playBackContextResult.hasBlockAction();
273
- }
274
-
275
- static getBlockAction(response: OTTAssetLoaderResponse): ?KalturaRuleAction {
276
- return response.playBackContextResult.getBlockAction();
277
- }
278
-
279
- static getErrorMessages(response: OTTAssetLoaderResponse): Array<KalturaAccessControlMessage> {
280
- return response.playBackContextResult.getErrorMessages();
281
- }
282
- }
@@ -1,242 +0,0 @@
1
- // @flow
2
- import BaseProvider from '../common/base-provider';
3
- import getLogger from '../../util/logger';
4
- import OTTConfiguration from './config';
5
- import OTTDataLoaderManager from './loaders/data-loader-manager';
6
- import OTTSessionLoader from './loaders/session-loader';
7
- import OTTAssetLoader from './loaders/asset-loader';
8
- import OTTAssetListLoader from './loaders/asset-list-loader';
9
- import OTTProviderParser from './provider-parser';
10
- import KalturaAsset from './response-types/kaltura-asset';
11
- import KalturaPlaybackContext from './response-types/kaltura-playback-context';
12
- import MediaEntry from '../../entities/media-entry';
13
- import Error from '../../util/error/error';
14
-
15
- export default class OTTProvider extends BaseProvider<OTTProviderMediaInfoObject> {
16
- /**
17
- * @constructor
18
- * @param {ProviderOptionsObject} options - provider options
19
- * @param {string} playerVersion - player version
20
- */
21
- constructor(options: ProviderOptionsObject, playerVersion: string) {
22
- super(options, playerVersion);
23
- this._logger = getLogger('OTTProvider');
24
- OTTConfiguration.set(options.env);
25
- this._networkRetryConfig = Object.assign(this._networkRetryConfig, options.networkRetryParameters);
26
- }
27
-
28
- get env() {
29
- return OTTConfiguration.get();
30
- }
31
-
32
- /**
33
- * Gets the backend media config.
34
- * @param {OTTProviderMediaInfoObject} mediaInfo - ott media info
35
- * @returns {Promise<ProviderMediaConfigObject>} - The provider media config
36
- */
37
- getMediaConfig(mediaInfo: OTTProviderMediaInfoObject): Promise<ProviderMediaConfigObject> {
38
- if (mediaInfo.ks) {
39
- this.ks = mediaInfo.ks;
40
- this._isAnonymous = false;
41
- }
42
- this._dataLoader = new OTTDataLoaderManager(this.partnerId, this.ks, this._networkRetryConfig);
43
- return new Promise((resolve, reject) => {
44
- const entryId = mediaInfo.entryId;
45
- if (entryId) {
46
- let ks: string = this.ks;
47
- if (!ks) {
48
- ks = '{1:result:ks}';
49
- this._dataLoader.add(OTTSessionLoader, {partnerId: this.partnerId});
50
- }
51
- const contextType = mediaInfo.contextType || KalturaPlaybackContext.Type.PLAYBACK;
52
- const mediaType = mediaInfo.mediaType || KalturaAsset.Type.MEDIA;
53
- const assetReferenceType = mediaInfo.assetReferenceType || KalturaAsset.AssetReferenceType.MEDIA;
54
- const playbackContext: ProviderPlaybackContextOptions = {
55
- mediaProtocol: mediaInfo.protocol,
56
- assetFileIds: mediaInfo.fileIds,
57
- context: contextType
58
- };
59
- if (mediaInfo.streamerType) {
60
- playbackContext.streamerType = mediaInfo.streamerType;
61
- }
62
- if (mediaInfo.urlType) {
63
- playbackContext.urlType = mediaInfo.urlType;
64
- }
65
- if (mediaInfo.adapterData) {
66
- playbackContext.adapterData = mediaInfo.adapterData;
67
- }
68
- this._dataLoader.add(OTTAssetLoader, {
69
- entryId: entryId,
70
- ks: ks,
71
- type: mediaType,
72
- playbackContext: playbackContext,
73
- assetReferenceType: assetReferenceType
74
- });
75
- const requestData = {
76
- contextType: contextType,
77
- mediaType: mediaType,
78
- formats: mediaInfo.formats || []
79
- };
80
- return this._dataLoader.fetchData().then(
81
- response => {
82
- try {
83
- resolve(this._parseDataFromResponse(response, requestData));
84
- } catch (err) {
85
- reject(err);
86
- }
87
- },
88
- err => {
89
- reject(err);
90
- }
91
- );
92
- } else {
93
- reject(new Error(Error.Severity.CRITICAL, Error.Category.PROVIDER, Error.Code.MISSING_MANDATORY_PARAMS, {message: 'missing entry id'}));
94
- }
95
- });
96
- }
97
-
98
- _parseDataFromResponse(data: Map<string, Function>, requestData: Object): ProviderMediaConfigObject {
99
- this._logger.debug('Data parsing started');
100
- const mediaConfig: ProviderMediaConfigObject = {
101
- session: {
102
- isAnonymous: this._isAnonymous,
103
- partnerId: this.partnerId
104
- },
105
- sources: this._getDefaultSourcesObject(),
106
- plugins: {}
107
- };
108
- if (this.uiConfId) {
109
- mediaConfig.session.uiConfId = this.uiConfId;
110
- }
111
- if (data) {
112
- if (data.has(OTTSessionLoader.id)) {
113
- const sessionLoader = data.get(OTTSessionLoader.id);
114
- if (sessionLoader && sessionLoader.response) {
115
- mediaConfig.session.ks = sessionLoader.response;
116
- }
117
- } else {
118
- mediaConfig.session.ks = this.ks;
119
- }
120
- if (data.has(OTTAssetLoader.id)) {
121
- const assetLoader = data.get(OTTAssetLoader.id);
122
- if (assetLoader && assetLoader.response && Object.keys(assetLoader.response).length) {
123
- const response = (assetLoader: OTTAssetLoader).response;
124
- if (OTTProviderParser.hasBlockAction(response)) {
125
- throw new Error(Error.Severity.CRITICAL, Error.Category.SERVICE, Error.Code.BLOCK_ACTION, {
126
- action: OTTProviderParser.getBlockAction(response),
127
- messages: OTTProviderParser.getErrorMessages(response)
128
- });
129
- }
130
- const mediaEntry = OTTProviderParser.getMediaEntry(response, requestData);
131
- Object.assign(mediaConfig.sources, this._getSourcesObject(mediaEntry));
132
- this._verifyHasSources(mediaConfig.sources);
133
- const bumper = OTTProviderParser.getBumper(response);
134
- if (bumper) {
135
- Object.assign(mediaConfig.plugins, {bumper});
136
- }
137
- }
138
- }
139
- }
140
- this._logger.debug('Data parsing finished', mediaConfig);
141
- return mediaConfig;
142
- }
143
-
144
- /**
145
- * Gets playlist config from entry list.
146
- * @param {ProviderEntryListObject} entryListInfo - ott entry list info
147
- * @returns {Promise<ProviderPlaylistObject>} - The provider playlist config
148
- */
149
- getEntryListConfig(entryListInfo: ProviderEntryListObject): Promise<ProviderPlaylistObject> {
150
- if (entryListInfo.ks) {
151
- this.ks = entryListInfo.ks;
152
- this._isAnonymous = false;
153
- }
154
- this._dataLoader = new OTTDataLoaderManager(this.partnerId, this.ks, this._networkRetryConfig);
155
- return new Promise((resolve, reject) => {
156
- const entries = entryListInfo.entries;
157
- if (entries && entries.length) {
158
- let ks: string = this.ks;
159
- if (!ks) {
160
- ks = '{1:result:ks}';
161
- this._dataLoader.add(OTTSessionLoader, {partnerId: this.partnerId});
162
- }
163
- this._dataLoader.add(OTTAssetListLoader, {entries, ks});
164
- this._dataLoader.fetchData(false).then(
165
- response => {
166
- resolve(this._parseEntryListDataFromResponse(response, entries));
167
- },
168
- err => {
169
- reject(err);
170
- }
171
- );
172
- } else {
173
- reject({success: false, data: 'Missing mandatory parameter'});
174
- }
175
- });
176
- }
177
-
178
- _parseEntryListDataFromResponse(data: Map<string, Function>, requestEntries: Array<ProviderMediaInfoObject>): ProviderPlaylistObject {
179
- this._logger.debug('Data parsing started');
180
- const playlistConfig: ProviderPlaylistObject = {
181
- id: '',
182
- metadata: {
183
- name: '',
184
- description: ''
185
- },
186
- poster: '',
187
- items: []
188
- };
189
- if (data && data.has(OTTAssetListLoader.id)) {
190
- const playlistLoader = data.get(OTTAssetListLoader.id);
191
- if (playlistLoader && playlistLoader.response) {
192
- const entryList = OTTProviderParser.getEntryList(playlistLoader.response, requestEntries);
193
- entryList.items.forEach(i => playlistConfig.items.push({sources: this._getSourcesObject(i)}));
194
- }
195
- }
196
- this._logger.debug('Data parsing finished', playlistConfig);
197
- return playlistConfig;
198
- }
199
-
200
- _getDefaultSourcesObject(): ProviderMediaConfigSourcesObject {
201
- return {
202
- hls: [],
203
- dash: [],
204
- progressive: [],
205
- image: [],
206
- id: '',
207
- duration: 0,
208
- type: MediaEntry.Type.UNKNOWN,
209
- poster: '',
210
- dvr: false,
211
- vr: null,
212
- metadata: {
213
- name: '',
214
- description: '',
215
- tags: ''
216
- }
217
- };
218
- }
219
-
220
- _getSourcesObject(mediaEntry: MediaEntry) {
221
- const sourcesObject: ProviderMediaConfigSourcesObject = this._getDefaultSourcesObject();
222
- const mediaSources = mediaEntry.sources.toJSON();
223
- sourcesObject.hls = mediaSources.hls;
224
- sourcesObject.dash = mediaSources.dash;
225
- sourcesObject.progressive = mediaSources.progressive;
226
- sourcesObject.id = mediaEntry.id;
227
- sourcesObject.duration = mediaEntry.duration;
228
- sourcesObject.type = mediaEntry.type;
229
- sourcesObject.dvr = !!mediaEntry.dvrStatus;
230
- sourcesObject.poster = mediaEntry.poster;
231
- if (
232
- mediaEntry.metadata &&
233
- mediaEntry.metadata.metas &&
234
- typeof mediaEntry.metadata.metas.tags === 'string' &&
235
- mediaEntry.metadata.metas.tags.indexOf('360') > -1
236
- ) {
237
- sourcesObject.vr = {};
238
- }
239
- Object.assign(sourcesObject.metadata, mediaEntry.metadata);
240
- return sourcesObject;
241
- }
242
- }
@@ -1,79 +0,0 @@
1
- //@flow
2
- import ServiceResult from '../../common/base-service-result';
3
-
4
- export default class KalturaAsset extends ServiceResult {
5
- static Type: {[type: string]: string} = {
6
- MEDIA: 'media',
7
- RECORDING: 'recording',
8
- EPG: 'epg'
9
- };
10
-
11
- static AssetReferenceType: {[type: string]: string} = {
12
- MEDIA: 'media',
13
- EPG_INTERNAL: 'epg_internal',
14
- EPG_EXTERNAL: 'epg_external',
15
- NPVR: 'nPVR'
16
- };
17
- /**
18
- * @member - The asset id
19
- * @type {number}
20
- */
21
- id: number;
22
- /**
23
- * @member - The asset name
24
- * @type {string}
25
- */
26
- name: string = '';
27
- /**
28
- * @member - The asset name description
29
- * @type {string}
30
- */
31
- description: string = '';
32
- /**
33
- * @member - The asset tags
34
- * @type {Array<Object>}
35
- */
36
- tags: Array<Object> = [];
37
- /**
38
- * @member - The asset metas
39
- * @type {Array<Object>}
40
- */
41
- metas: Array<Object> = [];
42
- /**
43
- * @member - The asset images
44
- * @type {Array<any>}
45
- */
46
- pictures: Array<any> = [];
47
-
48
- /**
49
- * @constructor
50
- * @param {Object} response The response
51
- */
52
- constructor(response: Object) {
53
- super(response);
54
- if (!this.hasError) {
55
- this.id = response.id;
56
- this.name = response.name;
57
- this.description = response.description;
58
- this.metas = this._formatTagsMetas(response.metas);
59
- this.tags = this._formatTagsMetas(response.tags);
60
- this.pictures = response.images;
61
- }
62
- }
63
-
64
- _formatTagsMetas(objectToParse: any): Array<Object> {
65
- const parsed = [];
66
- Object.keys(objectToParse).forEach(function (key) {
67
- if (objectToParse[key].objects) {
68
- let value = '';
69
- objectToParse[key].objects.forEach(function (object) {
70
- value += object.value + '|';
71
- });
72
- parsed.push({key: key, value: value});
73
- } else {
74
- parsed.push({key: key, value: objectToParse[key].value});
75
- }
76
- });
77
- return parsed;
78
- }
79
- }
@@ -1,28 +0,0 @@
1
- //@flow
2
- export default class KalturaBumpersPlaybackPluginData {
3
- static StreamerType: {[type: string]: string} = {
4
- HLS: 'hls',
5
- DASH: 'dash',
6
- PROGRESSIVE: 'progressive'
7
- };
8
-
9
- /**
10
- * @member - The streamer type
11
- * @type {string}
12
- */
13
- streamertype: string;
14
- /**
15
- * @member - The url
16
- * @type {string}
17
- */
18
- url: string;
19
-
20
- /**
21
- * @constructor
22
- * @param {Object} data - The response
23
- */
24
- constructor(data: Object) {
25
- this.streamertype = data.streamertype;
26
- this.url = data.url;
27
- }
28
- }