import {Router} from "express"; import {addLogger} from "../middlewares/logger.middleware.js"; import {isTokenValid} from "../middlewares/jwt.middleware.js"; import { del, getByChannel, getById, update, upload, uploadThumbnail, updateVideo, toggleLike, addTags } from "../controllers/video.controller.js"; import { doVideoExists, doVideoExistsParam, isOwner, Video, VideoCreate, VideoThumbnail } from "../middlewares/video.middleware.js"; import {Channel, doChannelExistBody, doChannelExists} from "../middlewares/channel.middleware.js"; import {thumbnailUpload, videoUpload} from "../middlewares/file.middleware.js"; import validator from "../middlewares/error.middleware.js"; const router = Router(); // UPLOAD VIDEO router.post("/", [videoUpload.single('file'), addLogger, isTokenValid, VideoCreate.title, VideoCreate.description, VideoCreate.visibility, VideoCreate.channel, validator, doChannelExistBody, isOwner], upload); // UPLOAD/UPDATE THUMBNAIL router.post("/thumbnail", [thumbnailUpload.single('file'), addLogger, isTokenValid, VideoThumbnail.video, Video.channel, validator, doChannelExistBody, isOwner, doVideoExists], uploadThumbnail ) // GET BY ID router.get("/:id", [addLogger, isTokenValid, Video.id, validator, doVideoExistsParam], getById); // GET BY CHANNEL router.get("/channel/:id", [addLogger, isTokenValid, Channel.id, validator, doChannelExists], getByChannel); // UPDATE VIDEO DATA router.put("/:id", [addLogger, isTokenValid, Video.id, VideoCreate.title, VideoCreate.description, VideoCreate.visibility, VideoCreate.channel, validator, doVideoExistsParam, doChannelExistBody, isOwner], update); // UPDATE VIDEO router.put("/:id/video", [videoUpload.single("file"), addLogger, isTokenValid, Video.id, Video.channel, validator, doVideoExistsParam, doChannelExistBody, isOwner ], updateVideo); // DELETE VIDEO router.delete("/:id", [addLogger, isTokenValid, Video.id, Video.channel, validator, doVideoExistsParam, doChannelExistBody, isOwner], del); // SWITCH LIKE router.get("/:id/like", [addLogger, isTokenValid, Video.id, validator, doVideoExistsParam], toggleLike); // UPDATE TAGS router.put("/:id/tags", [addLogger, isTokenValid, Video.id, Video.tags, validator, doVideoExistsParam, isOwner], addTags); export default router;