oblecto 0.2.9 → 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 (273) 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 +67 -39
  8. package/res/AGENTS.md +8 -0
  9. package/res/config.json +29 -7
  10. package/Oblecto-Web/dist/web/static/css/app.ef5965dbd50e69a7544e200a3f21fbaf.css +0 -1
  11. package/Oblecto-Web/dist/web/static/css/app.ef5965dbd50e69a7544e200a3f21fbaf.css.map +0 -1
  12. package/Oblecto-Web/dist/web/static/js/app.1352bf3c311f0e7ab716.js +0 -7150
  13. package/Oblecto-Web/dist/web/static/js/app.1352bf3c311f0e7ab716.js.map +0 -1
  14. package/Oblecto-Web/dist/web/static/js/manifest.b8404c3e329d75bb51fd.js +0 -154
  15. package/Oblecto-Web/dist/web/static/js/manifest.b8404c3e329d75bb51fd.js.map +0 -1
  16. package/Oblecto-Web/dist/web/static/js/vendor.521641a02e42750ba5a7.js +0 -32455
  17. package/Oblecto-Web/dist/web/static/js/vendor.521641a02e42750ba5a7.js.map +0 -1
  18. package/dist/bin/oblecto.d.ts +0 -2
  19. package/dist/bin/scripts/adduser.d.ts +0 -2
  20. package/dist/bin/scripts/adduser.js +0 -50
  21. package/dist/bin/scripts/changepassword.d.ts +0 -2
  22. package/dist/bin/scripts/changepassword.js +0 -48
  23. package/dist/bin/scripts/deluser.d.ts +0 -2
  24. package/dist/bin/scripts/deluser.js +0 -34
  25. package/dist/bin/scripts/helpers/argumentError.d.ts +0 -2
  26. package/dist/bin/scripts/helpers/argumentError.js +0 -12
  27. package/dist/bin/scripts/helpers/generateAssetDirectories.d.ts +0 -1
  28. package/dist/bin/scripts/helpers/generateAssetDirectories.js +0 -37
  29. package/dist/bin/scripts/init/assets.d.ts +0 -2
  30. package/dist/bin/scripts/init/assets.js +0 -24
  31. package/dist/bin/scripts/init/database.d.ts +0 -2
  32. package/dist/bin/scripts/init/database.js +0 -21
  33. package/dist/bin/scripts/init/general.d.ts +0 -2
  34. package/dist/bin/scripts/init/general.js +0 -54
  35. package/dist/bin/scripts/init/index.d.ts +0 -2
  36. package/dist/bin/scripts/init/index.js +0 -26
  37. package/dist/bin/scripts/removepassword.d.ts +0 -2
  38. package/dist/bin/scripts/removepassword.js +0 -42
  39. package/dist/config.d.ts +0 -7
  40. package/dist/config.js +0 -45
  41. package/dist/core/graphical.d.ts +0 -17
  42. package/dist/core/graphical.js +0 -179
  43. package/dist/core/index.d.ts +0 -9
  44. package/dist/core/index.js +0 -24
  45. package/dist/index.d.ts +0 -1
  46. package/dist/lib/artwork/ArtworkScaler.d.ts +0 -5
  47. package/dist/lib/artwork/ArtworkScaler.js +0 -31
  48. package/dist/lib/artwork/ArtworkUtils.d.ts +0 -8
  49. package/dist/lib/artwork/ArtworkUtils.js +0 -35
  50. package/dist/lib/artwork/movies/AggregateMovieArtworkRetriever.d.ts +0 -8
  51. package/dist/lib/artwork/movies/AggregateMovieArtworkRetriever.js +0 -58
  52. package/dist/lib/artwork/movies/MovieArtworkCollector.d.ts +0 -35
  53. package/dist/lib/artwork/movies/MovieArtworkCollector.js +0 -93
  54. package/dist/lib/artwork/movies/MovieArtworkDownloader.d.ts +0 -8
  55. package/dist/lib/artwork/movies/MovieArtworkDownloader.js +0 -65
  56. package/dist/lib/artwork/movies/artworkRetrievers/FanarttvMovieArtworkRetriever.d.ts +0 -6
  57. package/dist/lib/artwork/movies/artworkRetrievers/FanarttvMovieArtworkRetriever.js +0 -57
  58. package/dist/lib/artwork/movies/artworkRetrievers/TmdbMovieArtworkRetriever.d.ts +0 -6
  59. package/dist/lib/artwork/movies/artworkRetrievers/TmdbMovieArtworkRetriever.js +0 -47
  60. package/dist/lib/artwork/series/AggregateSeriesArtworkRetriever.d.ts +0 -8
  61. package/dist/lib/artwork/series/AggregateSeriesArtworkRetriever.js +0 -58
  62. package/dist/lib/artwork/series/SeriesArtworkCollector.d.ts +0 -37
  63. package/dist/lib/artwork/series/SeriesArtworkCollector.js +0 -95
  64. package/dist/lib/artwork/series/SeriesArtworkDownloader.d.ts +0 -8
  65. package/dist/lib/artwork/series/SeriesArtworkDownloader.js +0 -62
  66. package/dist/lib/artwork/series/artworkRetrievers/FanarttvSeriesArtworkRetriever.d.ts +0 -6
  67. package/dist/lib/artwork/series/artworkRetrievers/FanarttvSeriesArtworkRetriever.js +0 -44
  68. package/dist/lib/artwork/series/artworkRetrievers/TmdbSeriesArtworkRetriever.d.ts +0 -16
  69. package/dist/lib/artwork/series/artworkRetrievers/TmdbSeriesArtworkRetriever.js +0 -64
  70. package/dist/lib/artwork/series/artworkRetrievers/TvdbSeriesArtworkRetriever.d.ts +0 -16
  71. package/dist/lib/artwork/series/artworkRetrievers/TvdbSeriesArtworkRetriever.js +0 -51
  72. package/dist/lib/cleaners/FileCleaner.d.ts +0 -6
  73. package/dist/lib/cleaners/FileCleaner.js +0 -68
  74. package/dist/lib/cleaners/MovieCleaner.d.ts +0 -8
  75. package/dist/lib/cleaners/MovieCleaner.js +0 -48
  76. package/dist/lib/cleaners/SeriesCleaner.d.ts +0 -10
  77. package/dist/lib/cleaners/SeriesCleaner.js +0 -88
  78. package/dist/lib/common/AggregateIdentifier.d.ts +0 -9
  79. package/dist/lib/common/AggregateIdentifier.js +0 -57
  80. package/dist/lib/common/AggregateUpdateRetriever.d.ts +0 -5
  81. package/dist/lib/common/AggregateUpdateRetriever.js +0 -46
  82. package/dist/lib/downloader/index.d.ts +0 -6
  83. package/dist/lib/downloader/index.js +0 -83
  84. package/dist/lib/errors/DebugExtendableError.d.ts +0 -5
  85. package/dist/lib/errors/DebugExtendableError.js +0 -20
  86. package/dist/lib/errors/ExtendableError.d.ts +0 -3
  87. package/dist/lib/errors/ExtendableError.js +0 -22
  88. package/dist/lib/errors/FileExistsError.d.ts +0 -4
  89. package/dist/lib/errors/FileExistsError.js +0 -14
  90. package/dist/lib/errors/IdentificationError.d.ts +0 -4
  91. package/dist/lib/errors/IdentificationError.js +0 -14
  92. package/dist/lib/errors/InfoExtendableError.d.ts +0 -5
  93. package/dist/lib/errors/InfoExtendableError.js +0 -20
  94. package/dist/lib/errors/VideoAnalysisError.d.ts +0 -4
  95. package/dist/lib/errors/VideoAnalysisError.js +0 -14
  96. package/dist/lib/errors/VideoIdentificationError.d.ts +0 -4
  97. package/dist/lib/errors/VideoIdentificationError.js +0 -9
  98. package/dist/lib/errors/WarnExtendableError.d.ts +0 -5
  99. package/dist/lib/errors/WarnExtendableError.js +0 -20
  100. package/dist/lib/federation/client/FederationClient.d.ts +0 -31
  101. package/dist/lib/federation/client/FederationClient.js +0 -127
  102. package/dist/lib/federation/client/FederationClientController.d.ts +0 -9
  103. package/dist/lib/federation/client/FederationClientController.js +0 -45
  104. package/dist/lib/federation/client/FederationDataClient.d.ts +0 -11
  105. package/dist/lib/federation/client/FederationDataClient.js +0 -56
  106. package/dist/lib/federation/client/FederationMediaClient.d.ts +0 -12
  107. package/dist/lib/federation/client/FederationMediaClient.js +0 -70
  108. package/dist/lib/federation/server/FederationController.d.ts +0 -10
  109. package/dist/lib/federation/server/FederationController.js +0 -32
  110. package/dist/lib/federation/server/FederationDataServer.d.ts +0 -4
  111. package/dist/lib/federation/server/FederationDataServer.js +0 -22
  112. package/dist/lib/federation/server/FederationDataServerConnection.d.ts +0 -8
  113. package/dist/lib/federation/server/FederationDataServerConnection.js +0 -96
  114. package/dist/lib/federation/server/FederationMediaServer.d.ts +0 -4
  115. package/dist/lib/federation/server/FederationMediaServer.js +0 -22
  116. package/dist/lib/federation/server/FederationMediaServerConnection.d.ts +0 -11
  117. package/dist/lib/federation/server/FederationMediaServerConnection.js +0 -83
  118. package/dist/lib/federation/server/FederationServer.d.ts +0 -11
  119. package/dist/lib/federation/server/FederationServer.js +0 -40
  120. package/dist/lib/federation/server/FederationServerConnection.d.ts +0 -18
  121. package/dist/lib/federation/server/FederationServerConnection.js +0 -97
  122. package/dist/lib/federationindexer/FederationEpisodeIndexer.d.ts +0 -5
  123. package/dist/lib/federationindexer/FederationEpisodeIndexer.js +0 -65
  124. package/dist/lib/federationindexer/FederationMovieIndexer.d.ts +0 -5
  125. package/dist/lib/federationindexer/FederationMovieIndexer.js +0 -48
  126. package/dist/lib/federationv2/federationController/index.js +0 -13
  127. package/dist/lib/indexers/MediaIdentifier.d.ts +0 -5
  128. package/dist/lib/indexers/MediaIdentifier.js +0 -15
  129. package/dist/lib/indexers/files/FileIndexer.d.ts +0 -10
  130. package/dist/lib/indexers/files/FileIndexer.js +0 -103
  131. package/dist/lib/indexers/movies/MovieCollector.d.ts +0 -25
  132. package/dist/lib/indexers/movies/MovieCollector.js +0 -65
  133. package/dist/lib/indexers/movies/MovieIdentifier.d.ts +0 -10
  134. package/dist/lib/indexers/movies/MovieIdentifier.js +0 -22
  135. package/dist/lib/indexers/movies/MovieIndexer.d.ts +0 -11
  136. package/dist/lib/indexers/movies/MovieIndexer.js +0 -64
  137. package/dist/lib/indexers/movies/identifiers/TmdbMovieidentifier.d.ts +0 -4
  138. package/dist/lib/indexers/movies/identifiers/TmdbMovieidentifier.js +0 -52
  139. package/dist/lib/indexers/series/EpisodeIdentifier.d.ts +0 -12
  140. package/dist/lib/indexers/series/EpisodeIdentifier.js +0 -25
  141. package/dist/lib/indexers/series/SeriesCollector.d.ts +0 -25
  142. package/dist/lib/indexers/series/SeriesCollector.js +0 -69
  143. package/dist/lib/indexers/series/SeriesIdentifer.d.ts +0 -11
  144. package/dist/lib/indexers/series/SeriesIdentifer.js +0 -24
  145. package/dist/lib/indexers/series/SeriesIndexer.d.ts +0 -11
  146. package/dist/lib/indexers/series/SeriesIndexer.js +0 -140
  147. package/dist/lib/indexers/series/identifiers/TmdbEpisodeIdentifier.d.ts +0 -4
  148. package/dist/lib/indexers/series/identifiers/TmdbEpisodeIdentifier.js +0 -48
  149. package/dist/lib/indexers/series/identifiers/TmdbSeriesIdentifier.d.ts +0 -6
  150. package/dist/lib/indexers/series/identifiers/TmdbSeriesIdentifier.js +0 -90
  151. package/dist/lib/indexers/series/identifiers/TvdbEpisodeIdentifier.d.ts +0 -7
  152. package/dist/lib/indexers/series/identifiers/TvdbEpisodeIdentifier.js +0 -87
  153. package/dist/lib/indexers/series/identifiers/TvdbSeriesIdentifier.d.ts +0 -10
  154. package/dist/lib/indexers/series/identifiers/TvdbSeriesIdentifier.js +0 -82
  155. package/dist/lib/oblecto/index.d.ts +0 -68
  156. package/dist/lib/oblecto/index.js +0 -125
  157. package/dist/lib/queue/index.d.ts +0 -32
  158. package/dist/lib/queue/index.js +0 -96
  159. package/dist/lib/realtime/RealtimeClient.d.ts +0 -27
  160. package/dist/lib/realtime/RealtimeClient.js +0 -137
  161. package/dist/lib/realtime/RealtimeController.d.ts +0 -12
  162. package/dist/lib/realtime/RealtimeController.js +0 -50
  163. package/dist/lib/redisQueue/index.js +0 -109
  164. package/dist/lib/sets/tv/MovieSetCollector.d.ts +0 -6
  165. package/dist/lib/sets/tv/MovieSetCollector.js +0 -49
  166. package/dist/lib/streamSessions/StreamSession.d.ts +0 -41
  167. package/dist/lib/streamSessions/StreamSession.js +0 -146
  168. package/dist/lib/streamSessions/StreamSessionController.d.ts +0 -19
  169. package/dist/lib/streamSessions/StreamSessionController.js +0 -78
  170. package/dist/lib/streamSessions/StreamSessionTypes/DirectHttpStreamSession.d.ts +0 -5
  171. package/dist/lib/streamSessions/StreamSessionTypes/DirectHttpStreamSession.js +0 -116
  172. package/dist/lib/streamSessions/StreamSessionTypes/DirectStreamSession.d.ts +0 -5
  173. package/dist/lib/streamSessions/StreamSessionTypes/DirectStreamSession.js +0 -41
  174. package/dist/lib/streamSessions/StreamSessionTypes/HLSStreamer.d.ts +0 -15
  175. package/dist/lib/streamSessions/StreamSessionTypes/HLSStreamer.js +0 -148
  176. package/dist/lib/streamSessions/StreamSessionTypes/RecodeFederationStreamSession.d.ts +0 -9
  177. package/dist/lib/streamSessions/StreamSessionTypes/RecodeFederationStreamSession.js +0 -72
  178. package/dist/lib/streamSessions/StreamSessionTypes/RecodeStreamSession.d.ts +0 -6
  179. package/dist/lib/streamSessions/StreamSessionTypes/RecodeStreamSession.js +0 -96
  180. package/dist/lib/updaters/files/FileUpdateCollector.d.ts +0 -20
  181. package/dist/lib/updaters/files/FileUpdateCollector.js +0 -44
  182. package/dist/lib/updaters/files/FileUpdater.d.ts +0 -49
  183. package/dist/lib/updaters/files/FileUpdater.js +0 -194
  184. package/dist/lib/updaters/movies/MovieUpdateCollector.d.ts +0 -20
  185. package/dist/lib/updaters/movies/MovieUpdateCollector.js +0 -48
  186. package/dist/lib/updaters/movies/MovieUpdater.d.ts +0 -12
  187. package/dist/lib/updaters/movies/MovieUpdater.js +0 -49
  188. package/dist/lib/updaters/movies/informationRetrievers/TmdbMovieRetriever.d.ts +0 -20
  189. package/dist/lib/updaters/movies/informationRetrievers/TmdbMovieRetriever.js +0 -45
  190. package/dist/lib/updaters/series/SeriesUpdateCollector.d.ts +0 -37
  191. package/dist/lib/updaters/series/SeriesUpdateCollector.js +0 -79
  192. package/dist/lib/updaters/series/SeriesUpdater.d.ts +0 -22
  193. package/dist/lib/updaters/series/SeriesUpdater.js +0 -84
  194. package/dist/lib/updaters/series/informationRetrievers/TmdbEpisodeRetriever.d.ts +0 -11
  195. package/dist/lib/updaters/series/informationRetrievers/TmdbEpisodeRetriever.js +0 -70
  196. package/dist/lib/updaters/series/informationRetrievers/TmdbSeriesRetriever.d.ts +0 -21
  197. package/dist/lib/updaters/series/informationRetrievers/TmdbSeriesRetriever.js +0 -68
  198. package/dist/lib/updaters/series/informationRetrievers/TvdbEpisodeRetriever.d.ts +0 -5
  199. package/dist/lib/updaters/series/informationRetrievers/TvdbEpisodeRetriever.js +0 -38
  200. package/dist/lib/updaters/series/informationRetrievers/TvdbSeriesRetriever.d.ts +0 -21
  201. package/dist/lib/updaters/series/informationRetrievers/TvdbSeriesRetriever.js +0 -50
  202. package/dist/models/episode.d.ts +0 -76
  203. package/dist/models/episode.js +0 -62
  204. package/dist/models/episodeFiles.d.ts +0 -5
  205. package/dist/models/episodeFiles.js +0 -14
  206. package/dist/models/file.d.ts +0 -26
  207. package/dist/models/file.js +0 -32
  208. package/dist/models/movie.d.ts +0 -30
  209. package/dist/models/movie.js +0 -36
  210. package/dist/models/movieFiles.d.ts +0 -5
  211. package/dist/models/movieFiles.js +0 -14
  212. package/dist/models/movieSet.d.ts +0 -20
  213. package/dist/models/movieSet.js +0 -26
  214. package/dist/models/series.d.ts +0 -59
  215. package/dist/models/series.js +0 -50
  216. package/dist/models/seriesSet.d.ts +0 -9
  217. package/dist/models/seriesSet.js +0 -17
  218. package/dist/models/stream.d.ts +0 -73
  219. package/dist/models/stream.js +0 -81
  220. package/dist/models/trackEpisode.d.ts +0 -9
  221. package/dist/models/trackEpisode.js +0 -17
  222. package/dist/models/trackMovie.d.ts +0 -9
  223. package/dist/models/trackMovie.js +0 -17
  224. package/dist/models/user.d.ts +0 -19
  225. package/dist/models/user.js +0 -26
  226. package/dist/submodules/REST/index.d.ts +0 -9
  227. package/dist/submodules/REST/index.js +0 -59
  228. package/dist/submodules/REST/middleware/auth.d.ts +0 -5
  229. package/dist/submodules/REST/middleware/auth.js +0 -28
  230. package/dist/submodules/REST/routes/auth.d.ts +0 -2
  231. package/dist/submodules/REST/routes/auth.js +0 -48
  232. package/dist/submodules/REST/routes/clients.d.ts +0 -2
  233. package/dist/submodules/REST/routes/clients.js +0 -54
  234. package/dist/submodules/REST/routes/episodes.d.ts +0 -2
  235. package/dist/submodules/REST/routes/episodes.js +0 -275
  236. package/dist/submodules/REST/routes/files.d.ts +0 -2
  237. package/dist/submodules/REST/routes/files.js +0 -53
  238. package/dist/submodules/REST/routes/index.d.ts +0 -2
  239. package/dist/submodules/REST/routes/index.js +0 -49
  240. package/dist/submodules/REST/routes/movies.d.ts +0 -2
  241. package/dist/submodules/REST/routes/movies.js +0 -303
  242. package/dist/submodules/REST/routes/sets.d.ts +0 -2
  243. package/dist/submodules/REST/routes/sets.js +0 -35
  244. package/dist/submodules/REST/routes/settings/index.d.ts +0 -2
  245. package/dist/submodules/REST/routes/settings/index.js +0 -22
  246. package/dist/submodules/REST/routes/settings/maintenance.d.ts +0 -2
  247. package/dist/submodules/REST/routes/settings/maintenance.js +0 -87
  248. package/dist/submodules/REST/routes/settings/misc.d.ts +0 -2
  249. package/dist/submodules/REST/routes/settings/misc.js +0 -38
  250. package/dist/submodules/REST/routes/settings/sources.d.ts +0 -2
  251. package/dist/submodules/REST/routes/settings/sources.js +0 -61
  252. package/dist/submodules/REST/routes/streaming.js +0 -91
  253. package/dist/submodules/REST/routes/tvshows.d.ts +0 -2
  254. package/dist/submodules/REST/routes/tvshows.js +0 -137
  255. package/dist/submodules/REST/routes/users.d.ts +0 -2
  256. package/dist/submodules/REST/routes/users.js +0 -107
  257. package/dist/submodules/REST/routes/web.d.ts +0 -2
  258. package/dist/submodules/REST/routes/web.js +0 -43
  259. package/dist/submodules/axiosTimeout.d.ts +0 -1
  260. package/dist/submodules/axiosTimeout.js +0 -31
  261. package/dist/submodules/database.d.ts +0 -1
  262. package/dist/submodules/database.js +0 -180
  263. package/dist/submodules/ffmpeg.d.ts +0 -1
  264. package/dist/submodules/ffmpeg.js +0 -23
  265. package/dist/submodules/ffprobe.d.ts +0 -1
  266. package/dist/submodules/ffprobe.js +0 -22
  267. package/dist/submodules/guessit.d.ts +0 -5
  268. package/dist/submodules/guessit.js +0 -48
  269. package/dist/submodules/logger/index.d.ts +0 -7
  270. package/dist/submodules/logger/index.js +0 -43
  271. package/dist/submodules/promiseTimeout.d.ts +0 -1
  272. package/dist/submodules/promiseTimeout.js +0 -28
  273. package/dist/submodules/zeroconf.js +0 -19
@@ -1,28 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _jsonwebtoken = _interopRequireDefault(require("jsonwebtoken"));
9
-
10
- var _restifyErrors = _interopRequireDefault(require("restify-errors"));
11
-
12
- var _config = _interopRequireDefault(require("../../../config"));
13
-
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
- var _default = {
17
- requiresAuth(req, res, next) {
18
- if (req.authorization === undefined) return next(new _restifyErrors.default.UnauthorizedError('Session is not authenticated'));
19
-
20
- _jsonwebtoken.default.verify(req.authorization.credentials || req.params.auth, _config.default.authentication.secret, function (err, decoded) {
21
- if (err) return next(new _restifyErrors.default.UnauthorizedError('An error has occurred during session authentication'));
22
- req.authorization.user = decoded;
23
- next();
24
- });
25
- }
26
-
27
- };
28
- exports.default = _default;
@@ -1,2 +0,0 @@
1
- declare function _default(server: any, oblecto: any): void;
2
- export 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 _jsonwebtoken = _interopRequireDefault(require("jsonwebtoken"));
9
-
10
- var _restifyErrors = _interopRequireDefault(require("restify-errors"));
11
-
12
- var _bcrypt = _interopRequireDefault(require("bcrypt"));
13
-
14
- var _user = require("../../../models/user");
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
- var _default = (server, oblecto) => {
19
- server.post('/auth/login', async function (req, res, next) {
20
- if (!req.params.username) return next(new _restifyErrors.default.BadRequestError('Username is missing'));
21
- if (!req.params.password && !oblecto.config.authentication.allowPasswordlessLogin) return next(new _restifyErrors.default.BadRequestError('Password is missing'));
22
- let user = await _user.User.findOne({
23
- where: {
24
- username: req.params.username
25
- },
26
- attributes: ['username', 'name', 'email', 'password', 'id']
27
- }); // Don't send a token if the user doesn't exist
28
-
29
- if (!user) return next(new _restifyErrors.default.UnauthorizedError('Username is incorrect'));
30
- let allowLogin = oblecto.config.authentication.allowPasswordlessLogin;
31
- if (user.password) allowLogin = await _bcrypt.default.compare(req.params.password, user.password);
32
- if (!allowLogin) return next(new _restifyErrors.default.UnauthorizedError('Password is incorrect'));
33
- let tokenPayload = {
34
- id: user.id,
35
- username: user.username,
36
- name: user.name,
37
- email: user.email
38
- };
39
-
40
- let accessToken = _jsonwebtoken.default.sign(tokenPayload, oblecto.config.authentication.secret);
41
-
42
- res.send({
43
- accessToken
44
- });
45
- });
46
- };
47
-
48
- exports.default = _default;
@@ -1,2 +0,0 @@
1
- declare function _default(server: any, oblecto: any): void;
2
- export default _default;
@@ -1,54 +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("../middleware/auth"));
9
-
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
- /**
13
- *
14
- * @param {Server} server
15
- * @param {Oblecto} oblecto
16
- */
17
- var _default = (server, oblecto) => {
18
- server.get('/clients', _auth.default.requiresAuth, async function (req, res, next) {
19
- let clients = [];
20
-
21
- for (let clientId in oblecto.realTimeController.clients) {
22
- let client = oblecto.realTimeController.clients[clientId];
23
-
24
- if (client.user.id === req.authorization.user.id) {
25
- clients.push({
26
- clientId,
27
- clientName: client.clientName
28
- });
29
- }
30
- }
31
-
32
- res.send(clients);
33
- return next();
34
- });
35
- server.post('/client/:clientId/playback', _auth.default.requiresAuth, async function (req, res, next) {
36
- let type = req.params.type;
37
- let client = oblecto.realTimeController.clients[req.params.clientId];
38
-
39
- switch (type) {
40
- case 'episode':
41
- client.playEpisode(req.params.id);
42
- break;
43
-
44
- case 'movie':
45
- client.playMovie(req.params.id);
46
- break;
47
- }
48
-
49
- res.send();
50
- return next();
51
- });
52
- };
53
-
54
- exports.default = _default;
@@ -1,2 +0,0 @@
1
- declare function _default(server: any, oblecto: any): void;
2
- export default _default;
@@ -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,2 +0,0 @@
1
- declare function _default(server: any, oblecto: any): void;
2
- export default _default;
@@ -1,53 +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 _sequelize = _interopRequireDefault(require("sequelize"));
15
-
16
- var _episode = require("../../../models/episode");
17
-
18
- var _movie = require("../../../models/movie");
19
-
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
-
22
- /**
23
- *
24
- * @param {Server} server
25
- * @param {Oblecto} oblecto
26
- */
27
- var _default = (server, oblecto) => {
28
- server.get('/files/duplicates', _auth.default.requiresAuth, async function (req, res, next) {
29
- const fileHashCounts = await _file.File.findAll({
30
- attributes: ['hash', [_sequelize.default.fn('COUNT', _sequelize.default.col('hash')), 'count']],
31
- group: ['hash'],
32
- order: [[_sequelize.default.fn('COUNT', _sequelize.default.col('hash')), 'DESC']]
33
- });
34
- let duplicates = [];
35
-
36
- for (const fileHashCount of fileHashCounts) {
37
- // The list of file hashes with counts is sorted descending,
38
- // which means that once we have reached an item with a duplicate count of less then 2,
39
- // no files be any duplicates anymore.
40
- if (fileHashCount.toJSON().count <= 1) break;
41
- duplicates.push(await _file.File.findAll({
42
- where: {
43
- hash: fileHashCount.hash
44
- },
45
- include: [_episode.Episode, _movie.Movie]
46
- }));
47
- }
48
-
49
- res.send(duplicates);
50
- });
51
- };
52
-
53
- exports.default = _default;
@@ -1,2 +0,0 @@
1
- declare function _default(server: any, oblecto: any): void;
2
- export default _default;
@@ -1,49 +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 _streaming = _interopRequireDefault(require("./streaming"));
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 _files = _interopRequireDefault(require("./files"));
29
-
30
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
-
32
- var _default = (server, oblecto) => {
33
- if (oblecto.config.web.enabled) {
34
- (0, _web.default)(server, oblecto);
35
- }
36
-
37
- (0, _auth.default)(server, oblecto);
38
- (0, _episodes.default)(server, oblecto);
39
- (0, _streaming.default)(server, oblecto);
40
- (0, _files.default)(server, oblecto);
41
- (0, _movies.default)(server, oblecto);
42
- (0, _tvshows.default)(server, oblecto);
43
- (0, _settings.default)(server, oblecto);
44
- (0, _users.default)(server, oblecto);
45
- (0, _sets.default)(server, oblecto);
46
- (0, _clients.default)(server, oblecto);
47
- };
48
-
49
- exports.default = _default;
@@ -1,2 +0,0 @@
1
- declare function _default(server: any, oblecto: any): void;
2
- export default _default;