diff options
author | Chocobozzz <florian.bigard@gmail.com> | 2017-10-30 10:16:27 +0100 |
---|---|---|
committer | Chocobozzz <florian.bigard@gmail.com> | 2017-10-30 10:16:27 +0100 |
commit | 9567011bf01f36c7f796ac1e0f1fb12c71635e53 (patch) | |
tree | bec3ed173767cff031ed0a84231d6dd50e792569 /server/controllers/api/videos | |
parent | 757f0da370a992cf07afd20d3829b2748c76cc15 (diff) | |
download | PeerTube-9567011bf01f36c7f796ac1e0f1fb12c71635e53.tar.gz PeerTube-9567011bf01f36c7f796ac1e0f1fb12c71635e53.tar.zst PeerTube-9567011bf01f36c7f796ac1e0f1fb12c71635e53.zip |
Add lazy description on server
Diffstat (limited to 'server/controllers/api/videos')
-rw-r--r-- | server/controllers/api/videos/index.ts | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/server/controllers/api/videos/index.ts b/server/controllers/api/videos/index.ts index 9e233a8cc..49f0e4630 100644 --- a/server/controllers/api/videos/index.ts +++ b/server/controllers/api/videos/index.ts | |||
@@ -16,7 +16,8 @@ import { | |||
16 | quickAndDirtyUpdateVideoToFriends, | 16 | quickAndDirtyUpdateVideoToFriends, |
17 | addVideoToFriends, | 17 | addVideoToFriends, |
18 | updateVideoToFriends, | 18 | updateVideoToFriends, |
19 | JobScheduler | 19 | JobScheduler, |
20 | fetchRemoteDescription | ||
20 | } from '../../../lib' | 21 | } from '../../../lib' |
21 | import { | 22 | import { |
22 | authenticate, | 23 | authenticate, |
@@ -102,6 +103,11 @@ videosRouter.post('/upload', | |||
102 | videosAddValidator, | 103 | videosAddValidator, |
103 | asyncMiddleware(addVideoRetryWrapper) | 104 | asyncMiddleware(addVideoRetryWrapper) |
104 | ) | 105 | ) |
106 | |||
107 | videosRouter.get('/:id/description', | ||
108 | videosGetValidator, | ||
109 | asyncMiddleware(getVideoDescription) | ||
110 | ) | ||
105 | videosRouter.get('/:id', | 111 | videosRouter.get('/:id', |
106 | videosGetValidator, | 112 | videosGetValidator, |
107 | getVideo | 113 | getVideo |
@@ -328,6 +334,19 @@ function getVideo (req: express.Request, res: express.Response) { | |||
328 | return res.json(videoInstance.toFormattedDetailsJSON()) | 334 | return res.json(videoInstance.toFormattedDetailsJSON()) |
329 | } | 335 | } |
330 | 336 | ||
337 | async function getVideoDescription (req: express.Request, res: express.Response) { | ||
338 | const videoInstance = res.locals.video | ||
339 | let description = '' | ||
340 | |||
341 | if (videoInstance.isOwned()) { | ||
342 | description = videoInstance.description | ||
343 | } else { | ||
344 | description = await fetchRemoteDescription(videoInstance) | ||
345 | } | ||
346 | |||
347 | return res.json({ description }) | ||
348 | } | ||
349 | |||
331 | async function listVideos (req: express.Request, res: express.Response, next: express.NextFunction) { | 350 | async function listVideos (req: express.Request, res: express.Response, next: express.NextFunction) { |
332 | const resultList = await db.Video.listForApi(req.query.start, req.query.count, req.query.sort) | 351 | const resultList = await db.Video.listForApi(req.query.start, req.query.count, req.query.sort) |
333 | 352 | ||