diff options
Diffstat (limited to 'server/controllers/download.ts')
-rw-r--r-- | server/controllers/download.ts | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/server/controllers/download.ts b/server/controllers/download.ts index ddacc1b68..ffe40d57e 100644 --- a/server/controllers/download.ts +++ b/server/controllers/download.ts | |||
@@ -3,9 +3,9 @@ import * as express from 'express' | |||
3 | import { logger } from '@server/helpers/logger' | 3 | import { logger } from '@server/helpers/logger' |
4 | import { VideosTorrentCache } from '@server/lib/files-cache/videos-torrent-cache' | 4 | import { VideosTorrentCache } from '@server/lib/files-cache/videos-torrent-cache' |
5 | import { Hooks } from '@server/lib/plugins/hooks' | 5 | import { Hooks } from '@server/lib/plugins/hooks' |
6 | import { getVideoFilePath } from '@server/lib/video-paths' | 6 | import { VideoPathManager } from '@server/lib/video-path-manager' |
7 | import { MStreamingPlaylist, MVideo, MVideoFile, MVideoFullLight } from '@server/types/models' | 7 | import { MStreamingPlaylist, MVideo, MVideoFile, MVideoFullLight } from '@server/types/models' |
8 | import { HttpStatusCode, VideoStreamingPlaylistType } from '@shared/models' | 8 | import { HttpStatusCode, VideoStorage, VideoStreamingPlaylistType } from '@shared/models' |
9 | import { STATIC_DOWNLOAD_PATHS } from '../initializers/constants' | 9 | import { STATIC_DOWNLOAD_PATHS } from '../initializers/constants' |
10 | import { asyncMiddleware, videosDownloadValidator } from '../middlewares' | 10 | import { asyncMiddleware, videosDownloadValidator } from '../middlewares' |
11 | 11 | ||
@@ -81,7 +81,15 @@ async function downloadVideoFile (req: express.Request, res: express.Response) { | |||
81 | 81 | ||
82 | if (!checkAllowResult(res, allowParameters, allowedResult)) return | 82 | if (!checkAllowResult(res, allowParameters, allowedResult)) return |
83 | 83 | ||
84 | return res.download(getVideoFilePath(video, videoFile), `${video.name}-${videoFile.resolution}p${videoFile.extname}`) | 84 | if (videoFile.storage === VideoStorage.OBJECT_STORAGE) { |
85 | return res.redirect(videoFile.getObjectStorageUrl()) | ||
86 | } | ||
87 | |||
88 | await VideoPathManager.Instance.makeAvailableVideoFile(video, videoFile, path => { | ||
89 | const filename = `${video.name}-${videoFile.resolution}p${videoFile.extname}` | ||
90 | |||
91 | return res.download(path, filename) | ||
92 | }) | ||
85 | } | 93 | } |
86 | 94 | ||
87 | async function downloadHLSVideoFile (req: express.Request, res: express.Response) { | 95 | async function downloadHLSVideoFile (req: express.Request, res: express.Response) { |
@@ -107,8 +115,15 @@ async function downloadHLSVideoFile (req: express.Request, res: express.Response | |||
107 | 115 | ||
108 | if (!checkAllowResult(res, allowParameters, allowedResult)) return | 116 | if (!checkAllowResult(res, allowParameters, allowedResult)) return |
109 | 117 | ||
110 | const filename = `${video.name}-${videoFile.resolution}p-${streamingPlaylist.getStringType()}${videoFile.extname}` | 118 | if (videoFile.storage === VideoStorage.OBJECT_STORAGE) { |
111 | return res.download(getVideoFilePath(streamingPlaylist, videoFile), filename) | 119 | return res.redirect(videoFile.getObjectStorageUrl()) |
120 | } | ||
121 | |||
122 | await VideoPathManager.Instance.makeAvailableVideoFile(streamingPlaylist, videoFile, path => { | ||
123 | const filename = `${video.name}-${videoFile.resolution}p-${streamingPlaylist.getStringType()}${videoFile.extname}` | ||
124 | |||
125 | return res.download(path, filename) | ||
126 | }) | ||
112 | } | 127 | } |
113 | 128 | ||
114 | function getVideoFile (req: express.Request, files: MVideoFile[]) { | 129 | function getVideoFile (req: express.Request, files: MVideoFile[]) { |