From bb54cd6c8e97e4a9596342f9c500eb05d0c05231 Mon Sep 17 00:00:00 2001 From: Carlos Santos <4a.santos@gmail.com> Date: Mon, 7 Apr 2025 18:28:58 +0200 Subject: [PATCH] backend: Rename streamRecording to getRecordingContent and update route for streaming recordings --- backend/src/controllers/recording.controller.ts | 13 +++++++++++-- backend/src/routes/recording.routes.ts | 11 +++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/backend/src/controllers/recording.controller.ts b/backend/src/controllers/recording.controller.ts index df5f5b7..8209efd 100644 --- a/backend/src/controllers/recording.controller.ts +++ b/backend/src/controllers/recording.controller.ts @@ -126,8 +126,14 @@ export const deleteRecording = async (req: Request, res: Response) => { } }; -// Internal Recording methods -export const streamRecording = async (req: Request, res: Response) => { +/** + * Streams a recording video file to the client with support for range requests. + * + * This controller endpoint retrieves a recording by its ID and streams it as a video/mp4 file. + * It supports HTTP range requests, allowing for features like video seeking and partial downloads. + * + */ +export const getRecordingContent = async (req: Request, res: Response) => { const logger = container.get(LoggerService); const recordingId = req.params.recordingId; @@ -172,3 +178,6 @@ export const streamRecording = async (req: Request, res: Response) => { return res.status(500).json({ name: 'Recording Error', message: 'Unexpected error streaming recording' }); } }; + + +// Internal Recording methods diff --git a/backend/src/routes/recording.routes.ts b/backend/src/routes/recording.routes.ts index fb6d653..a944487 100644 --- a/backend/src/routes/recording.routes.ts +++ b/backend/src/routes/recording.routes.ts @@ -61,14 +61,21 @@ recordingRouter.delete( recordingCtrl.bulkDeleteRecordings ); +recordingRouter.get( + '/:recordingId/content', + withAuth(apiKeyValidator, tokenAndRoleValidator(UserRole.ADMIN)), + withValidRecordingId, + recordingCtrl.getRecordingContent +); + // Internal Recording Routes export const internalRecordingRouter = Router(); internalRecordingRouter.use(bodyParser.urlencoded({ extended: true })); internalRecordingRouter.use(bodyParser.json()); internalRecordingRouter.get( - '/:recordingId/stream', + '/:recordingId/content', withAuth(tokenAndRoleValidator(UserRole.ADMIN)), withValidRecordingId, - recordingCtrl.streamRecording + recordingCtrl.getRecordingContent );