]>
Commit | Line | Data |
---|---|---|
57c36b27 | 1 | import * as express from 'express' |
d525fc39 | 2 | import { buildNSFWFilter } from '../../helpers/express-utils' |
57c36b27 C |
3 | import { getFormattedObjects } from '../../helpers/utils' |
4 | import { VideoModel } from '../../models/video/video' | |
5 | import { | |
6 | asyncMiddleware, | |
d525fc39 | 7 | commonVideosFiltersValidator, |
57c36b27 C |
8 | optionalAuthenticate, |
9 | paginationValidator, | |
10 | searchValidator, | |
11 | setDefaultPagination, | |
12 | setDefaultSearchSort, | |
13 | videosSearchSortValidator | |
14 | } from '../../middlewares' | |
d525fc39 | 15 | import { VideosSearchQuery } from '../../../shared/models/search' |
57c36b27 C |
16 | |
17 | const searchRouter = express.Router() | |
18 | ||
19 | searchRouter.get('/videos', | |
20 | paginationValidator, | |
21 | setDefaultPagination, | |
22 | videosSearchSortValidator, | |
23 | setDefaultSearchSort, | |
24 | optionalAuthenticate, | |
d525fc39 | 25 | commonVideosFiltersValidator, |
57c36b27 C |
26 | searchValidator, |
27 | asyncMiddleware(searchVideos) | |
28 | ) | |
29 | ||
30 | // --------------------------------------------------------------------------- | |
31 | ||
32 | export { searchRouter } | |
33 | ||
34 | // --------------------------------------------------------------------------- | |
35 | ||
36 | async function searchVideos (req: express.Request, res: express.Response) { | |
d525fc39 C |
37 | const query: VideosSearchQuery = req.query |
38 | ||
39 | const options = Object.assign(query, { nsfw: buildNSFWFilter(res, query.nsfw) }) | |
40 | const resultList = await VideoModel.searchAndPopulateAccountAndServer(options) | |
57c36b27 C |
41 | |
42 | return res.json(getFormattedObjects(resultList.data, resultList.total)) | |
43 | } |