import { parallel } from 'async'
-import express = require('express')
-import fs = require('fs')
+import * as express from 'express'
+import * as fs from 'fs'
import { join } from 'path'
-import expressValidator = require('express-validator')
-// TODO: use .validator when express-validator typing will have validator field
-const validator = expressValidator['validator']
+import * as validator from 'validator'
import { database as db } from '../initializers/database'
import {
STATIC_MAX_AGE
} from '../initializers'
import { root } from '../helpers'
+import { VideoInstance } from '../models'
const clientsRouter = express.Router()
// Do not use a template engine for a so little thing
clientsRouter.use('/videos/watch/:id', generateWatchHtmlPage)
-clientsRouter.use('/videos/embed', function (req, res, next) {
+clientsRouter.use('/videos/embed', function (req: express.Request, res: express.Response, next: express.NextFunction) {
res.sendFile(embedPath)
})
clientsRouter.use('/client', express.static(distPath, { maxAge: STATIC_MAX_AGE }))
// 404 for static files not found
-clientsRouter.use('/client/*', function (req, res, next) {
+clientsRouter.use('/client/*', function (req: express.Request, res: express.Response, next: express.NextFunction) {
res.sendStatus(404)
})
// ---------------------------------------------------------------------------
-function addOpenGraphTags (htmlStringPage, video) {
+function addOpenGraphTags (htmlStringPage: string, video: VideoInstance) {
let basePreviewUrlHttp
if (video.isOwned()) {
return htmlStringPage.replace(opengraphComment, tagsString)
}
-function generateWatchHtmlPage (req, res, next) {
- const videoId = req.params.id
+function generateWatchHtmlPage (req: express.Request, res: express.Response, next: express.NextFunction) {
+ const videoId = '' + req.params.id
// Let Angular application handle errors
if (!validator.isUUID(videoId, 4)) return res.sendFile(indexPath)
video: function (callback) {
db.Video.loadAndPopulateAuthorAndPodAndTags(videoId, callback)
}
- }, function (err, result: any) {
+ }, function (err: Error, result: { file: Buffer, video: VideoInstance }) {
if (err) return next(err)
const html = result.file.toString()