]>
Commit | Line | Data |
---|---|---|
b46cf4b9 C |
1 | import express from 'express' |
2 | import toInt from 'validator/lib/toInt' | |
3 | import { logger, loggerTagsFactory } from '@server/helpers/logger' | |
4 | import { federateVideoIfNeeded } from '@server/lib/activitypub/videos' | |
5 | import { VideoFileModel } from '@server/models/video/video-file' | |
ad5db104 | 6 | import { HttpStatusCode, UserRight } from '@shared/models' |
b46cf4b9 C |
7 | import { |
8 | asyncMiddleware, | |
9 | authenticate, | |
ad5db104 | 10 | ensureUserHasRight, |
b46cf4b9 C |
11 | videoFileMetadataGetValidator, |
12 | videoFilesDeleteHLSValidator, | |
13 | videoFilesDeleteWebTorrentValidator | |
14 | } from '../../../middlewares' | |
15 | ||
16 | const lTags = loggerTagsFactory('api', 'video') | |
17 | const filesRouter = express.Router() | |
18 | ||
19 | filesRouter.get('/:id/metadata/:videoFileId', | |
20 | asyncMiddleware(videoFileMetadataGetValidator), | |
21 | asyncMiddleware(getVideoFileMetadata) | |
22 | ) | |
23 | ||
24 | filesRouter.delete('/:id/hls', | |
25 | authenticate, | |
ad5db104 | 26 | ensureUserHasRight(UserRight.MANAGE_VIDEO_FILES), |
b46cf4b9 C |
27 | asyncMiddleware(videoFilesDeleteHLSValidator), |
28 | asyncMiddleware(removeHLSPlaylist) | |
29 | ) | |
30 | ||
31 | filesRouter.delete('/:id/webtorrent', | |
32 | authenticate, | |
ad5db104 | 33 | ensureUserHasRight(UserRight.MANAGE_VIDEO_FILES), |
b46cf4b9 C |
34 | asyncMiddleware(videoFilesDeleteWebTorrentValidator), |
35 | asyncMiddleware(removeWebTorrentFiles) | |
36 | ) | |
37 | ||
38 | // --------------------------------------------------------------------------- | |
39 | ||
40 | export { | |
41 | filesRouter | |
42 | } | |
43 | ||
44 | // --------------------------------------------------------------------------- | |
45 | ||
46 | async function getVideoFileMetadata (req: express.Request, res: express.Response) { | |
47 | const videoFile = await VideoFileModel.loadWithMetadata(toInt(req.params.videoFileId)) | |
48 | ||
49 | return res.json(videoFile.metadata) | |
50 | } | |
51 | ||
52 | async function removeHLSPlaylist (req: express.Request, res: express.Response) { | |
53 | const video = res.locals.videoAll | |
54 | ||
55 | logger.info('Deleting HLS playlist of %s.', video.url, lTags(video.uuid)) | |
56 | ||
57 | const hls = video.getHLSPlaylist() | |
58 | await video.removeStreamingPlaylistFiles(hls) | |
59 | await hls.destroy() | |
60 | ||
61 | video.VideoStreamingPlaylists = video.VideoStreamingPlaylists.filter(p => p.id !== hls.id) | |
62 | ||
63 | await federateVideoIfNeeded(video, false, undefined) | |
64 | ||
65 | return res.sendStatus(HttpStatusCode.NO_CONTENT_204) | |
66 | } | |
67 | ||
68 | async function removeWebTorrentFiles (req: express.Request, res: express.Response) { | |
69 | const video = res.locals.videoAll | |
70 | ||
71 | logger.info('Deleting WebTorrent files of %s.', video.url, lTags(video.uuid)) | |
72 | ||
73 | for (const file of video.VideoFiles) { | |
74 | await video.removeWebTorrentFileAndTorrent(file) | |
75 | await file.destroy() | |
76 | } | |
77 | ||
78 | video.VideoFiles = [] | |
79 | await federateVideoIfNeeded(video, false, undefined) | |
80 | ||
81 | return res.sendStatus(HttpStatusCode.NO_CONTENT_204) | |
82 | } |