import express from 'express'
-import toInt from 'validator/lib/toInt'
import { pickCommonVideoQuery } from '@server/helpers/query'
import { doJSONRequest } from '@server/helpers/requests'
import { VideoViews } from '@server/lib/video-views'
paginationValidator,
setDefaultPagination,
setDefaultVideosSort,
- videoFileMetadataGetValidator,
videosCustomGetValidator,
videosGetValidator,
videosRemoveValidator,
videosSortValidator
} from '../../../middlewares'
import { VideoModel } from '../../../models/video/video'
-import { VideoFileModel } from '../../../models/video/video-file'
import { blacklistRouter } from './blacklist'
import { videoCaptionsRouter } from './captions'
import { videoCommentRouter } from './comment'
+import { filesRouter } from './files'
import { videoImportsRouter } from './import'
import { liveRouter } from './live'
import { ownershipVideoRouter } from './ownership'
import { rateVideoRouter } from './rate'
+import { transcodingRouter } from './transcoding'
import { updateRouter } from './update'
import { uploadRouter } from './upload'
import { watchingRouter } from './watching'
videosRouter.use('/', liveRouter)
videosRouter.use('/', uploadRouter)
videosRouter.use('/', updateRouter)
+videosRouter.use('/', filesRouter)
+videosRouter.use('/', transcodingRouter)
videosRouter.get('/categories',
openapiOperationDoc({ operationId: 'getCategories' }),
asyncMiddleware(videosGetValidator),
asyncMiddleware(getVideoDescription)
)
-videosRouter.get('/:id/metadata/:videoFileId',
- asyncMiddleware(videoFileMetadataGetValidator),
- asyncMiddleware(getVideoFileMetadata)
-)
videosRouter.get('/:id',
openapiOperationDoc({ operationId: 'getVideo' }),
optionalAuthenticate,
const serverActor = await getServerActor()
await sendView(serverActor, video, undefined)
- Hooks.runAction('action:api.video.viewed', { video: video, ip })
+ Hooks.runAction('action:api.video.viewed', { video: video, ip, req, res })
}
return res.status(HttpStatusCode.NO_CONTENT_204).end()
return res.json({ description })
}
-async function getVideoFileMetadata (req: express.Request, res: express.Response) {
- const videoFile = await VideoFileModel.loadWithMetadata(toInt(req.params.videoFileId))
-
- return res.json(videoFile.metadata)
-}
-
async function listVideos (req: express.Request, res: express.Response) {
const serverActor = await getServerActor()
return res.json(getFormattedObjects(resultList.data, resultList.total, guessAdditionalAttributesFromQuery(query)))
}
-async function removeVideo (_req: express.Request, res: express.Response) {
+async function removeVideo (req: express.Request, res: express.Response) {
const videoInstance = res.locals.videoAll
await sequelizeTypescript.transaction(async t => {
auditLogger.delete(getAuditIdFromRes(res), new VideoAuditView(videoInstance.toFormattedDetailsJSON()))
logger.info('Video with name %s and uuid %s deleted.', videoInstance.name, videoInstance.uuid)
- Hooks.runAction('action:api.video.deleted', { video: videoInstance })
+ Hooks.runAction('action:api.video.deleted', { video: videoInstance, req, res })
return res.type('json')
.status(HttpStatusCode.NO_CONTENT_204)