oblecto 0.2.8 → 0.3.1

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 (167) hide show
  1. package/Oblecto-Web/dist/web/index.html +24 -3
  2. package/Oblecto-Web/dist/web/static/index-C-JsqHHk.css +1 -0
  3. package/Oblecto-Web/dist/web/static/index-DSZgpOOu.js +576 -0
  4. package/README.md +43 -7
  5. package/dist/bin/oblecto.js +12468 -61
  6. package/dist/index.js +10676 -6
  7. package/package.json +68 -36
  8. package/res/AGENTS.md +8 -0
  9. package/res/config.json +34 -7
  10. package/Oblecto-Web/LICENSE +0 -674
  11. package/Oblecto-Web/README.md +0 -20
  12. package/Oblecto-Web/dist/web/static/css/app.921835f8c2878caee6d1085d9982fa86.css +0 -1
  13. package/Oblecto-Web/dist/web/static/css/app.921835f8c2878caee6d1085d9982fa86.css.map +0 -1
  14. package/Oblecto-Web/dist/web/static/js/app.758b833f6395444695b6.js +0 -6896
  15. package/Oblecto-Web/dist/web/static/js/app.758b833f6395444695b6.js.map +0 -1
  16. package/Oblecto-Web/dist/web/static/js/manifest.d327d604ee57c29a75d0.js +0 -154
  17. package/Oblecto-Web/dist/web/static/js/manifest.d327d604ee57c29a75d0.js.map +0 -1
  18. package/Oblecto-Web/dist/web/static/js/vendor.84f1e8002f100f63d6ef.js +0 -32455
  19. package/Oblecto-Web/dist/web/static/js/vendor.84f1e8002f100f63d6ef.js.map +0 -1
  20. package/Oblecto-Web/package.json +0 -118
  21. package/dist/bin/cliManager.js +0 -102
  22. package/dist/bin/scripts/adduser.js +0 -50
  23. package/dist/bin/scripts/changepassword.js +0 -48
  24. package/dist/bin/scripts/deluser.js +0 -34
  25. package/dist/bin/scripts/helpers/argumentError.js +0 -12
  26. package/dist/bin/scripts/helpers/generateAssetDirectories.js +0 -37
  27. package/dist/bin/scripts/init/assets.js +0 -24
  28. package/dist/bin/scripts/init/database.js +0 -21
  29. package/dist/bin/scripts/init/general.js +0 -54
  30. package/dist/bin/scripts/init/index.js +0 -26
  31. package/dist/bin/scripts/removepassword.js +0 -42
  32. package/dist/config.js +0 -45
  33. package/dist/core/graphical.js +0 -179
  34. package/dist/core/index.js +0 -24
  35. package/dist/lib/artwork/ArtworkScaler.js +0 -31
  36. package/dist/lib/artwork/ArtworkUtils.js +0 -35
  37. package/dist/lib/artwork/movies/AggregateMovieArtworkRetriever.js +0 -58
  38. package/dist/lib/artwork/movies/MovieArtworkCollector.js +0 -93
  39. package/dist/lib/artwork/movies/MovieArtworkDownloader.js +0 -65
  40. package/dist/lib/artwork/movies/artworkRetrievers/FanarttvMovieArtworkRetriever.js +0 -57
  41. package/dist/lib/artwork/movies/artworkRetrievers/TmdbMovieArtworkRetriever.js +0 -47
  42. package/dist/lib/artwork/series/AggregateSeriesArtworkRetriever.js +0 -58
  43. package/dist/lib/artwork/series/SeriesArtworkCollector.js +0 -95
  44. package/dist/lib/artwork/series/SeriesArtworkDownloader.js +0 -62
  45. package/dist/lib/artwork/series/artworkRetrievers/FanarttvSeriesArtworkRetriever.js +0 -44
  46. package/dist/lib/artwork/series/artworkRetrievers/TmdbSeriesArtworkRetriever.js +0 -64
  47. package/dist/lib/artwork/series/artworkRetrievers/TvdbSeriesArtworkRetriever.js +0 -51
  48. package/dist/lib/cleaners/FileCleaner.js +0 -56
  49. package/dist/lib/cleaners/MovieCleaner.js +0 -42
  50. package/dist/lib/cleaners/SeriesCleaner.js +0 -70
  51. package/dist/lib/common/AggregateIdentifier.js +0 -53
  52. package/dist/lib/common/AggregateUpdateRetriever.js +0 -43
  53. package/dist/lib/downloader/index.js +0 -59
  54. package/dist/lib/errors/DebugExtendableError.js +0 -20
  55. package/dist/lib/errors/ExtendableError.js +0 -22
  56. package/dist/lib/errors/FileExistsError.js +0 -14
  57. package/dist/lib/errors/IdentificationError.js +0 -14
  58. package/dist/lib/errors/InfoExtendableError.js +0 -20
  59. package/dist/lib/errors/VideoAnalysisError.js +0 -14
  60. package/dist/lib/errors/VideoIdentificationError.js +0 -14
  61. package/dist/lib/errors/WarnExtendableError.js +0 -20
  62. package/dist/lib/federation/client/FederationClient.js +0 -127
  63. package/dist/lib/federation/client/FederationClientController.js +0 -45
  64. package/dist/lib/federation/client/FederationDataClient.js +0 -56
  65. package/dist/lib/federation/client/FederationMediaClient.js +0 -70
  66. package/dist/lib/federation/server/FederationController.js +0 -32
  67. package/dist/lib/federation/server/FederationDataServer.js +0 -22
  68. package/dist/lib/federation/server/FederationDataServerConnection.js +0 -96
  69. package/dist/lib/federation/server/FederationMediaServer.js +0 -22
  70. package/dist/lib/federation/server/FederationMediaServerConnection.js +0 -83
  71. package/dist/lib/federation/server/FederationServer.js +0 -40
  72. package/dist/lib/federation/server/FederationServerConnection.js +0 -97
  73. package/dist/lib/federationindexer/FederationEpisodeIndexer.js +0 -65
  74. package/dist/lib/federationindexer/FederationMovieIndexer.js +0 -48
  75. package/dist/lib/indexers/MediaIdentifier.js +0 -15
  76. package/dist/lib/indexers/files/FileIndexer.js +0 -103
  77. package/dist/lib/indexers/files/cleaner.js +0 -43
  78. package/dist/lib/indexers/movies/AggregateMovieIdentifier.js +0 -45
  79. package/dist/lib/indexers/movies/MovieCollector.js +0 -65
  80. package/dist/lib/indexers/movies/MovieIdentifier.js +0 -22
  81. package/dist/lib/indexers/movies/MovieIndexer.js +0 -47
  82. package/dist/lib/indexers/movies/identifiers/TmdbMovieidentifier.js +0 -50
  83. package/dist/lib/indexers/series/AggregateEpisodeIdentifier.js +0 -46
  84. package/dist/lib/indexers/series/AggregateSeriesIdentifier.js +0 -46
  85. package/dist/lib/indexers/series/EpisodeIdentifier.js +0 -24
  86. package/dist/lib/indexers/series/SeriesCollector.js +0 -65
  87. package/dist/lib/indexers/series/SeriesIdentifer.js +0 -23
  88. package/dist/lib/indexers/series/SeriesIndexer.js +0 -134
  89. package/dist/lib/indexers/series/identifiers/TmdbEpisodeIdentifier.js +0 -38
  90. package/dist/lib/indexers/series/identifiers/TmdbSeriesIdentifier.js +0 -66
  91. package/dist/lib/indexers/series/identifiers/TvdbEpisodeIdentifier.js +0 -71
  92. package/dist/lib/indexers/series/identifiers/TvdbSeriesIdentifier.js +0 -82
  93. package/dist/lib/oblecto/index.js +0 -125
  94. package/dist/lib/queue/index.js +0 -82
  95. package/dist/lib/realtime/RealtimeClient.js +0 -137
  96. package/dist/lib/realtime/RealtimeController.js +0 -50
  97. package/dist/lib/sets/tv/MovieSetCollector.js +0 -49
  98. package/dist/lib/streamSessions/StreamSession.js +0 -148
  99. package/dist/lib/streamSessions/StreamSessionController.js +0 -78
  100. package/dist/lib/streamSessions/StreamSessionTypes/DirectHttpStreamSession.js +0 -105
  101. package/dist/lib/streamSessions/StreamSessionTypes/DirectStreamSession.js +0 -47
  102. package/dist/lib/streamSessions/StreamSessionTypes/HLSStreamer.js +0 -126
  103. package/dist/lib/streamSessions/StreamSessionTypes/RecodeFederationStreamSession.js +0 -72
  104. package/dist/lib/streamSessions/StreamSessionTypes/RecodeStreamSession.js +0 -65
  105. package/dist/lib/updaters/files/FileUpdateCollector.js +0 -44
  106. package/dist/lib/updaters/files/FileUpdater.js +0 -194
  107. package/dist/lib/updaters/movies/AggregateMovieUpdateRetriever.js +0 -44
  108. package/dist/lib/updaters/movies/MovieUpdateCollector.js +0 -48
  109. package/dist/lib/updaters/movies/MovieUpdater.js +0 -38
  110. package/dist/lib/updaters/movies/informationRetrievers/TmdbMovieRetriever.js +0 -42
  111. package/dist/lib/updaters/series/AggregateEpisodeUpdateRetriever.js +0 -41
  112. package/dist/lib/updaters/series/AggregateSeriesUpdateRetriever.js +0 -44
  113. package/dist/lib/updaters/series/SeriesUpdateCollector.js +0 -79
  114. package/dist/lib/updaters/series/SeriesUpdater.js +0 -84
  115. package/dist/lib/updaters/series/informationRetrievers/TmdbEpisodeRetriever.js +0 -66
  116. package/dist/lib/updaters/series/informationRetrievers/TmdbSeriesRetriever.js +0 -63
  117. package/dist/lib/updaters/series/informationRetrievers/TvdbEpisodeRetriever.js +0 -38
  118. package/dist/lib/updaters/series/informationRetrievers/TvdbSeriesRetriever.js +0 -50
  119. package/dist/models/episode.js +0 -62
  120. package/dist/models/episodeFiles.js +0 -14
  121. package/dist/models/file.js +0 -32
  122. package/dist/models/movie.js +0 -35
  123. package/dist/models/movieFiles.js +0 -14
  124. package/dist/models/movieSet.js +0 -26
  125. package/dist/models/series.js +0 -55
  126. package/dist/models/seriesSet.js +0 -17
  127. package/dist/models/stream.js +0 -81
  128. package/dist/models/trackEpisode.js +0 -17
  129. package/dist/models/trackEpisodes.js +0 -8
  130. package/dist/models/trackMovie.js +0 -17
  131. package/dist/models/trackMovies.js +0 -8
  132. package/dist/models/tvshow.js +0 -46
  133. package/dist/models/tvshowSet.js +0 -8
  134. package/dist/models/user.js +0 -26
  135. package/dist/submodules/REST/index.js +0 -59
  136. package/dist/submodules/REST/middleware/auth.js +0 -28
  137. package/dist/submodules/REST/routes/auth.js +0 -48
  138. package/dist/submodules/REST/routes/clients.js +0 -54
  139. package/dist/submodules/REST/routes/episodes.js +0 -275
  140. package/dist/submodules/REST/routes/files.js +0 -92
  141. package/dist/submodules/REST/routes/index.js +0 -48
  142. package/dist/submodules/REST/routes/movies.js +0 -305
  143. package/dist/submodules/REST/routes/sets.js +0 -35
  144. package/dist/submodules/REST/routes/settings/index.js +0 -22
  145. package/dist/submodules/REST/routes/settings/maintenance.js +0 -87
  146. package/dist/submodules/REST/routes/settings/misc.js +0 -38
  147. package/dist/submodules/REST/routes/settings/sources.js +0 -61
  148. package/dist/submodules/REST/routes/tvshows.js +0 -140
  149. package/dist/submodules/REST/routes/users.js +0 -107
  150. package/dist/submodules/REST/routes/web.js +0 -43
  151. package/dist/submodules/axiosTimeout.js +0 -30
  152. package/dist/submodules/database.js +0 -180
  153. package/dist/submodules/ffmpeg.js +0 -23
  154. package/dist/submodules/ffprobe.js +0 -22
  155. package/dist/submodules/guessit.js +0 -48
  156. package/dist/submodules/handlers/DirectStreamer.js +0 -68
  157. package/dist/submodules/handlers/FFMPEGHandlers/DvdStreamer.js +0 -52
  158. package/dist/submodules/handlers/FFMPEGHandlers/RemuxStreamer.js +0 -33
  159. package/dist/submodules/handlers/FFMPEGHandlers/TranscodeStreamer.js +0 -33
  160. package/dist/submodules/handlers/FFMPEGStreamer.js +0 -56
  161. package/dist/submodules/handlers/FederationStreamer.js +0 -23
  162. package/dist/submodules/handlers/HLSSessionHandler.js +0 -141
  163. package/dist/submodules/logger/index.js +0 -43
  164. package/dist/submodules/promiseTimeout.js +0 -28
  165. package/dist/submodules/zeroconf.js +0 -19
  166. package/dist/transcoders/dvd.js +0 -26
  167. package/dist/transcoders/index.js +0 -42
@@ -1,275 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _sequelize = _interopRequireDefault(require("sequelize"));
9
-
10
- var _fs = _interopRequireDefault(require("fs"));
11
-
12
- var _restifyErrors = _interopRequireDefault(require("restify-errors"));
13
-
14
- var _sharp = _interopRequireDefault(require("sharp"));
15
-
16
- var _auth = _interopRequireDefault(require("../middleware/auth"));
17
-
18
- var _episode = require("../../../models/episode");
19
-
20
- var _series = require("../../../models/series");
21
-
22
- var _trackEpisode = require("../../../models/trackEpisode");
23
-
24
- var _file = require("../../../models/file");
25
-
26
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
-
28
- const Op = _sequelize.default.Op;
29
-
30
- var _default = (server, oblecto) => {
31
- // Endpoint to get a list of episodes from all series
32
- server.get('/episodes/list/:sorting', _auth.default.requiresAuth, async function (req, res, next) {
33
- let limit = 20;
34
- let page = 0;
35
- let AllowedOrders = ['desc', 'asc'];
36
- if (AllowedOrders.indexOf(req.params.order.toLowerCase()) === -1) return next(new _restifyErrors.default.BadRequestError('Sorting order is invalid'));
37
- if (!(req.params.sorting in _episode.Episode.rawAttributes)) return next(new _restifyErrors.default.BadRequestError('Sorting method is invalid'));
38
- if (req.params.count && Number.isInteger(req.params.count)) limit = parseInt(req.params.count);
39
- if (req.params.page && Number.isInteger(req.params.page)) page = parseInt(req.params.page);
40
- let results = await _episode.Episode.findAll({
41
- include: [_series.Series, {
42
- model: _trackEpisode.TrackEpisode,
43
- required: false,
44
- where: {
45
- userId: req.authorization.user.id
46
- }
47
- }],
48
- order: [[req.params.sorting, req.params.order]],
49
- limit,
50
- offset: limit * page
51
- });
52
- res.send(results);
53
- }); // Endpoint to get a banner image for an episode based on the local episode ID
54
-
55
- server.get('/episode/:id/banner', async function (req, res, next) {
56
- // Get episode data
57
- let episode;
58
-
59
- try {
60
- episode = await _episode.Episode.findByPk(req.params.id, {
61
- include: [_file.File]
62
- });
63
- } catch (e) {
64
- return next(new _restifyErrors.default.NotFoundError('Episode not found'));
65
- }
66
-
67
- let imagePath = oblecto.artworkUtils.episodeBannerPath(episode, req.params.size || 'medium');
68
-
69
- _fs.default.createReadStream(imagePath).on('error', () => {
70
- return next(new _restifyErrors.default.NotFoundError('No banner found'));
71
- }).pipe(res);
72
- });
73
- server.put('/episode/:id/banner', _auth.default.requiresAuth, async function (req, res, next) {
74
- let episode = await _episode.Episode.findByPk(req.params.id, {
75
- include: [_file.File]
76
- });
77
-
78
- if (!episode) {
79
- return next(new _restifyErrors.default.NotFoundError('Episode does not exist'));
80
- }
81
-
82
- let thumbnailPath = this.oblecto.artworkUtils.episodeBannerPath(episode);
83
-
84
- if (req.files.length < 1) {
85
- return next(new _restifyErrors.default.MissingParameter('Image file is missing'));
86
- }
87
-
88
- let uploadPath = req.files[Object.keys(req.files)[0]].path;
89
-
90
- try {
91
- let image = await (0, _sharp.default)(uploadPath);
92
- let metadata = await image.metadata();
93
- let ratio = metadata.height / metadata.width;
94
-
95
- if (!(1 <= ratio <= 2)) {
96
- return next(new _restifyErrors.default.InvalidContent('Image aspect ratio is incorrect'));
97
- }
98
- } catch (e) {
99
- return next(new _restifyErrors.default.InvalidContent('File is not an image'));
100
- }
101
-
102
- try {
103
- _fs.default.copyFile(uploadPath, thumbnailPath, err => {
104
- if (err) throw err;
105
-
106
- for (let size of Object.keys(this.oblecto.config.artwork.poster)) {
107
- this.oblecto.queue.pushJob('rescaleImage', {
108
- from: this.oblecto.artworkUtils.episodeBannerPath(episode),
109
- to: this.oblecto.artworkUtils.episodeBannerPath(episode, size),
110
- width: this.oblecto.config.artwork.poster[size]
111
- });
112
- }
113
-
114
- res.send(['success']);
115
- });
116
- } catch (e) {
117
- console.log(e);
118
- return next(new _restifyErrors.default.Internal('An error has occured during upload of banner'));
119
- }
120
-
121
- next();
122
- }); // Endpoint to list all stored files for the specific episode
123
-
124
- server.get('/episode/:id/files', _auth.default.requiresAuth, async function (req, res) {
125
- let episode = await _episode.Episode.findByPk(req.params.id, {
126
- include: [_file.File]
127
- });
128
- res.send(episode.files);
129
- }); // Endpoint to send episode video file to the client
130
- // TODO: move this to the file route and use file id to play, abstracting this from episodes
131
-
132
- server.get('/episode/:id/play', async function (req, res, next) {
133
- // search for attributes
134
- let episode = await _episode.Episode.findByPk(req.params.id, {
135
- include: [_file.File]
136
- });
137
- let file = episode.files[0];
138
- res.redirect(`/stream/${file.id}`, next);
139
- }); // Endpoint to retrieve episode details based on the local episode ID
140
-
141
- server.get('/episode/:id/info', _auth.default.requiresAuth, async function (req, res) {
142
- // search for attributes
143
- let episode = await _episode.Episode.findByPk(req.params.id, {
144
- include: [_file.File, _series.Series, {
145
- model: _trackEpisode.TrackEpisode,
146
- required: false,
147
- where: {
148
- userId: req.authorization.user.id
149
- }
150
- }]
151
- });
152
- res.send(episode);
153
- }); // Endpoint to retrieve the episode next in series based on the local episode ID
154
-
155
- server.get('/episode/:id/next', _auth.default.requiresAuth, async function (req, res) {
156
- // search for attributes
157
- let results = await _episode.Episode.findByPk(req.params.id);
158
- let episode = await _episode.Episode.findOne({
159
- where: {
160
- SeriesId: results.SeriesId,
161
- [Op.or]: [{
162
- [Op.and]: [{
163
- airedEpisodeNumber: {
164
- [Op.gt]: results.airedEpisodeNumber
165
- }
166
- }, {
167
- airedSeason: {
168
- [Op.gte]: results.airedSeason
169
- }
170
- }]
171
- }, {
172
- [Op.and]: [{
173
- airedSeason: {
174
- [Op.gt]: results.airedSeason
175
- }
176
- }]
177
- }]
178
- },
179
- order: [['airedSeason', 'ASC'], ['airedEpisodeNumber', 'ASC']]
180
- });
181
- res.send(episode);
182
- });
183
- server.get('/episodes/search/:name', _auth.default.requiresAuth, async function (req, res) {
184
- // search for attributes
185
- let episode = await _episode.Episode.findAll({
186
- where: {
187
- episodeName: {
188
- [Op.like]: '%' + req.params.name + '%'
189
- }
190
- },
191
- include: [_file.File, _series.Series, {
192
- model: _trackEpisode.TrackEpisode,
193
- required: false,
194
- where: {
195
- userId: req.authorization.user.id
196
- }
197
- }]
198
- });
199
- res.send(episode);
200
- }); // Endpoint to get the episodes currently being watched
201
-
202
- server.get('/episodes/watching', _auth.default.requiresAuth, async function (req, res) {
203
- // search for attributes
204
- let watching = await _episode.Episode.findAll({
205
- include: [_series.Series, {
206
- model: _trackEpisode.TrackEpisode,
207
- required: true,
208
- where: {
209
- userId: req.authorization.user.id,
210
- progress: {
211
- [_sequelize.default.Op.lt]: 0.9
212
- },
213
- updatedAt: {
214
- [_sequelize.default.Op.gt]: new Date() - 1000 * 60 * 60 * 24 * 7
215
- }
216
- }
217
- }],
218
- order: [['updatedAt', 'DESC']]
219
- }); // We are only interested in the episode objects, so extract all the episode object from
220
- // each track object and send the final mapped array to the client
221
-
222
- res.send(watching);
223
- });
224
- server.get('/episodes/next', _auth.default.requiresAuth, async function (req, res, next) {
225
- // Next episodes currently doesn't work on sqlite as the LPAD function doesn't exist
226
- // Todo: Fix next episodes endpoint to support sqlite
227
- if (oblecto.config.database.dialect === 'sqlite') return next(new _restifyErrors.default.NotImplementedError('Next episode is not supported when using sqlite (yet)')); // search for attributes
228
-
229
- let latestWatched = await _episode.Episode.findAll({
230
- attributes: {
231
- include: [[_sequelize.default.fn('MAX', _sequelize.default.col('absoluteNumber')), 'absoluteNumber'], [_sequelize.default.fn('MAX', _sequelize.default.fn('concat', _sequelize.default.fn('LPAD', _sequelize.default.col('airedSeason'), 2, '0'), _sequelize.default.fn('LPAD', _sequelize.default.col('airedEpisodeNumber'), 2, '0'))), 'seasonepisode'], [_sequelize.default.fn('MAX', _sequelize.default.col('firstAired')), 'firstAired']]
232
- },
233
- include: [{
234
- model: _trackEpisode.TrackEpisode,
235
- required: true,
236
- where: {
237
- userId: req.authorization.user.id,
238
- progress: {
239
- [_sequelize.default.Op.gt]: 0.9
240
- },
241
- updatedAt: {
242
- [_sequelize.default.Op.gt]: new Date() - 1000 * 60 * 60 * 24 * 7
243
- }
244
- }
245
- }],
246
- group: ['SeriesId']
247
- });
248
- let nextUp = [];
249
-
250
- for (let latest of latestWatched) {
251
- latest = latest.toJSON();
252
- let next = await _episode.Episode.findOne({
253
- attributes: {
254
- include: [[_sequelize.default.fn('concat', _sequelize.default.fn('LPAD', _sequelize.default.col('airedSeason'), 2, '0'), _sequelize.default.fn('LPAD', _sequelize.default.col('airedEpisodeNumber'), 2, '0')), 'seasonepisode']]
255
- },
256
- include: [_series.Series, {
257
- model: _trackEpisode.TrackEpisode,
258
- where: {
259
- userId: req.authorization.user.id
260
- }
261
- }],
262
- where: _sequelize.default.and(_sequelize.default.where(_sequelize.default.col('SeriesId'), '=', latest.SeriesId), _sequelize.default.where(_sequelize.default.fn('concat', _sequelize.default.fn('LPAD', _sequelize.default.col('airedSeason'), 2, '0'), _sequelize.default.fn('LPAD', _sequelize.default.col('airedEpisodeNumber'), 2, '0')), '>', latest.seasonepisode)),
263
- order: [_sequelize.default.col('seasonepisode')]
264
- });
265
-
266
- if (next) {
267
- nextUp.push(next);
268
- }
269
- }
270
-
271
- res.send(nextUp);
272
- });
273
- };
274
-
275
- exports.default = _default;
@@ -1,92 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _restifyErrors = _interopRequireDefault(require("restify-errors"));
9
-
10
- var _auth = _interopRequireDefault(require("../middleware/auth"));
11
-
12
- var _file = require("../../../models/file");
13
-
14
- var _DirectHttpStreamSession = _interopRequireDefault(require("../../../lib/streamSessions/StreamSessionTypes/DirectHttpStreamSession"));
15
-
16
- var _HLSStreamer = _interopRequireDefault(require("../../../lib/streamSessions/StreamSessionTypes/HLSStreamer"));
17
-
18
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
-
20
- /**
21
- *
22
- * @param {Server} server
23
- * @param {Oblecto} oblecto
24
- */
25
- var _default = (server, oblecto) => {
26
- server.get('/HLS/:sessionId/segment/:id', async function (req, res, next) {
27
- if (!oblecto.streamSessionController.sessionExists(req.params.sessionId)) {
28
- return next(new _restifyErrors.default.InvalidCredentialsError('Stream session token does not exist'));
29
- }
30
-
31
- let streamSession = oblecto.streamSessionController.sessions[req.params.sessionId]; // TODO: Send approriate error if session is not a HLS stream session
32
-
33
- if (!(streamSession instanceof _HLSStreamer.default)) return next();
34
- let segmentId = parseInt(req.params.id);
35
- streamSession.streamSegment(req, res, segmentId);
36
- });
37
- server.get('/HLS/:sessionId/playlist', async function (req, res, next) {
38
- if (!oblecto.streamSessionController.sessionExists(req.params.sessionId)) {
39
- return next(new _restifyErrors.default.InvalidCredentialsError('Stream session token does not exist'));
40
- }
41
-
42
- let streamSession = oblecto.streamSessionController.sessions[req.params.sessionId]; // TODO: Send approriate error if session is not a HLS stream session
43
-
44
- if (!(streamSession instanceof _HLSStreamer.default)) return next(new _restifyErrors.default.InvalidContentError('Not a HLS stream'));
45
- streamSession.sendPlaylistFile(res);
46
- });
47
- server.get('/session/create/:id', _auth.default.requiresAuth, async function (req, res, next) {
48
- let file;
49
-
50
- try {
51
- file = await _file.File.findByPk(req.params.id);
52
- } catch (ex) {
53
- return next(new _restifyErrors.default.NotFoundError('File does not exist'));
54
- }
55
-
56
- if (!file) return next(new _restifyErrors.default.NotFoundError('File does not exist'));
57
- let streamType = 'recode';
58
- if (req.params.type in ['recode', 'directhttp', 'hls']) streamType = req.params.type;
59
- if (req.params.noremux) streamType = 'directhttp';
60
- let streamSession = oblecto.streamSessionController.newSession(file, {
61
- streamType,
62
- target: {
63
- formats: (req.params.format || 'mp4').split(','),
64
- videoCodecs: (req.params.videoCodec || 'h264').split(','),
65
- audioCodecs: (req.params.audioCodec || 'aac').split(',')
66
- },
67
- offset: req.params.offset || 0
68
- });
69
- res.send({
70
- sessionId: streamSession.sessionId,
71
- seeking: streamSession instanceof _DirectHttpStreamSession.default ? 'client' : 'server'
72
- });
73
- });
74
- server.get('/session/stream/:sessionId', async function (req, res, next) {
75
- if (!oblecto.streamSessionController.sessionExists(req.params.sessionId)) {
76
- return next(new _restifyErrors.default.InvalidCredentialsError('Stream session token does not exist'));
77
- }
78
-
79
- return next();
80
- }, async function (req, res, next) {
81
- oblecto.streamSessionController.sessions[req.params.sessionId].offset = req.params.offset || 0;
82
- await oblecto.streamSessionController.sessions[req.params.sessionId].addDestination({
83
- request: req,
84
- stream: res,
85
- type: 'http'
86
- });
87
- if (req.params.nostart) return;
88
- await oblecto.streamSessionController.sessions[req.params.sessionId].startStream();
89
- });
90
- };
91
-
92
- exports.default = _default;
@@ -1,48 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _auth = _interopRequireDefault(require("./auth"));
9
-
10
- var _episodes = _interopRequireDefault(require("./episodes"));
11
-
12
- var _files = _interopRequireDefault(require("./files"));
13
-
14
- var _movies = _interopRequireDefault(require("./movies"));
15
-
16
- var _tvshows = _interopRequireDefault(require("./tvshows"));
17
-
18
- var _settings = _interopRequireDefault(require("./settings"));
19
-
20
- var _users = _interopRequireDefault(require("./users"));
21
-
22
- var _web = _interopRequireDefault(require("./web"));
23
-
24
- var _sets = _interopRequireDefault(require("./sets"));
25
-
26
- var _clients = _interopRequireDefault(require("./clients"));
27
-
28
- var _config = _interopRequireDefault(require("../../../config"));
29
-
30
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
-
32
- var _default = (server, oblecto) => {
33
- if (_config.default.web.enabled) {
34
- (0, _web.default)(server, oblecto);
35
- }
36
-
37
- (0, _auth.default)(server, oblecto);
38
- (0, _episodes.default)(server, oblecto);
39
- (0, _files.default)(server, oblecto);
40
- (0, _movies.default)(server, oblecto);
41
- (0, _tvshows.default)(server, oblecto);
42
- (0, _settings.default)(server, oblecto);
43
- (0, _users.default)(server, oblecto);
44
- (0, _sets.default)(server, oblecto);
45
- (0, _clients.default)(server, oblecto);
46
- };
47
-
48
- exports.default = _default;