Add new filter hooks to /overviews/videos
This change adds new filter hooks `filter:api.overviews.videos.list.params` and `filter:api.overviews.videos.list.params` to /overviews/videos. The motivation is to make a plugin to [use `originallyPublishedAt` in all places where `publishedAt` is used](https://github.com/ahdinosaur/peertube-plugin-originally-published-at).
This commit is contained in:
parent
e19fdf5775
commit
64f9b91de9
|
@ -1,12 +1,13 @@
|
||||||
import * as express from 'express'
|
import * as express from 'express'
|
||||||
import * as memoizee from 'memoizee'
|
import * as memoizee from 'memoizee'
|
||||||
import { logger } from '@server/helpers/logger'
|
import { logger } from '@server/helpers/logger'
|
||||||
|
import { Hooks } from '@server/lib/plugins/hooks'
|
||||||
|
import { VideoModel } from '@server/models/video/video'
|
||||||
import { CategoryOverview, ChannelOverview, TagOverview, VideosOverview } from '../../../shared/models/overviews'
|
import { CategoryOverview, ChannelOverview, TagOverview, VideosOverview } from '../../../shared/models/overviews'
|
||||||
import { buildNSFWFilter } from '../../helpers/express-utils'
|
import { buildNSFWFilter } from '../../helpers/express-utils'
|
||||||
import { MEMOIZE_TTL, OVERVIEWS } from '../../initializers/constants'
|
import { MEMOIZE_TTL, OVERVIEWS } from '../../initializers/constants'
|
||||||
import { asyncMiddleware, optionalAuthenticate, videosOverviewValidator } from '../../middlewares'
|
import { asyncMiddleware, optionalAuthenticate, videosOverviewValidator } from '../../middlewares'
|
||||||
import { TagModel } from '../../models/video/tag'
|
import { TagModel } from '../../models/video/tag'
|
||||||
import { VideoModel } from '../../models/video/video'
|
|
||||||
|
|
||||||
const overviewsRouter = express.Router()
|
const overviewsRouter = express.Router()
|
||||||
|
|
||||||
|
@ -108,7 +109,7 @@ async function getVideos (
|
||||||
res: express.Response,
|
res: express.Response,
|
||||||
where: { videoChannelId?: number, tagsOneOf?: string[], categoryOneOf?: number[] }
|
where: { videoChannelId?: number, tagsOneOf?: string[], categoryOneOf?: number[] }
|
||||||
) {
|
) {
|
||||||
const query = Object.assign({
|
let query = Object.assign({
|
||||||
start: 0,
|
start: 0,
|
||||||
count: 12,
|
count: 12,
|
||||||
sort: '-createdAt',
|
sort: '-createdAt',
|
||||||
|
@ -119,7 +120,13 @@ async function getVideos (
|
||||||
countVideos: false
|
countVideos: false
|
||||||
}, where)
|
}, where)
|
||||||
|
|
||||||
const { data } = await VideoModel.listForApi(query)
|
query = await Hooks.wrapObject(query, 'filter:api.overviews.videos.list.params')
|
||||||
|
|
||||||
|
const { data } = await Hooks.wrapPromiseFun(
|
||||||
|
VideoModel.listForApi,
|
||||||
|
query,
|
||||||
|
'filter:api.overviews.videos.list.result'
|
||||||
|
)
|
||||||
|
|
||||||
return data.map(d => d.toFormattedJSON())
|
return data.map(d => d.toFormattedJSON())
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,10 @@ export const serverFilterHookObject = {
|
||||||
'filter:api.user.me.videos.list.params': true,
|
'filter:api.user.me.videos.list.params': true,
|
||||||
'filter:api.user.me.videos.list.result': true,
|
'filter:api.user.me.videos.list.result': true,
|
||||||
|
|
||||||
|
// Filter params/result used to list overview videos for the REST API
|
||||||
|
'filter:api.overviews.videos.list.params': true,
|
||||||
|
'filter:api.overviews.videos.list.result': true,
|
||||||
|
|
||||||
// Filter params/results to search videos/channels in the DB or on the remote index
|
// Filter params/results to search videos/channels in the DB or on the remote index
|
||||||
'filter:api.search.videos.local.list.params': true,
|
'filter:api.search.videos.local.list.params': true,
|
||||||
'filter:api.search.videos.local.list.result': true,
|
'filter:api.search.videos.local.list.result': true,
|
||||||
|
|
Loading…
Reference in New Issue