diff --git a/meet-ce/backend/src/controllers/recording.controller.ts b/meet-ce/backend/src/controllers/recording.controller.ts index 1dbcde9e..074dc8df 100644 --- a/meet-ce/backend/src/controllers/recording.controller.ts +++ b/meet-ce/backend/src/controllers/recording.controller.ts @@ -5,13 +5,11 @@ import { container } from '../config/dependency-injector.config.js'; import { INTERNAL_CONFIG } from '../config/internal-config.js'; import { RecordingHelper } from '../helpers/recording.helper.js'; import { - errorRecordingNotFound, errorRecordingsNotFromSameRoom, handleError, internalError, rejectRequestFromMeetError } from '../models/error.model.js'; -import { RecordingRepository } from '../repositories/recording.repository.js'; import { LoggerService } from '../services/logger.service.js'; import { RecordingService } from '../services/recording.service.js'; import { RequestSessionService } from '../services/request-session.service.js'; @@ -230,20 +228,14 @@ export const getRecordingMedia = async (req: Request, res: Response) => { export const getRecordingUrl = async (req: Request, res: Response) => { const logger = container.get(LoggerService); + const recordingService = container.get(RecordingService); const recordingId = req.params.recordingId; const privateAccess = req.query.privateAccess === 'true'; logger.info(`Getting URL for recording '${recordingId}'`); try { - const recordingRepository = container.get(RecordingRepository); - const recordingSecrets = await recordingRepository.findAccessSecretsByRecordingId(recordingId); - - if (!recordingSecrets) { - const error = errorRecordingNotFound(recordingId); - return rejectRequestFromMeetError(res, error); - } - + const recordingSecrets = await recordingService.getRecordingAccessSecrets(recordingId); const secret = privateAccess ? recordingSecrets.privateAccessSecret : recordingSecrets.publicAccessSecret; const recordingUrl = `${getBaseUrl()}/recording/${recordingId}?secret=${secret}`; diff --git a/meet-ce/backend/src/middlewares/recording.middleware.ts b/meet-ce/backend/src/middlewares/recording.middleware.ts index 062c0714..3d12dcb4 100644 --- a/meet-ce/backend/src/middlewares/recording.middleware.ts +++ b/meet-ce/backend/src/middlewares/recording.middleware.ts @@ -6,12 +6,11 @@ import { errorInsufficientPermissions, errorInvalidRecordingSecret, errorRecordingDisabled, - errorRecordingNotFound, handleError, rejectRequestFromMeetError } from '../models/error.model.js'; -import { RecordingRepository } from '../repositories/recording.repository.js'; import { LoggerService } from '../services/logger.service.js'; +import { RecordingService } from '../services/recording.service.js'; import { RequestSessionService } from '../services/request-session.service.js'; import { RoomService } from '../services/room.service.js'; import { @@ -141,13 +140,8 @@ export const configureRecordingAuth = async (req: Request, res: Response, next: try { const recordingId = req.params.recordingId as string; - const recordingRepository = container.get(RecordingRepository); - const recordingSecrets = await recordingRepository.findAccessSecretsByRecordingId(recordingId); - - if (!recordingSecrets) { - const error = errorRecordingNotFound(recordingId); - return rejectRequestFromMeetError(res, error); - } + const recordingService = container.get(RecordingService); + const recordingSecrets = await recordingService.getRecordingAccessSecrets(recordingId); const authValidators = []; diff --git a/meet-ce/backend/src/services/recording.service.ts b/meet-ce/backend/src/services/recording.service.ts index c85be2e7..fed66b1f 100644 --- a/meet-ce/backend/src/services/recording.service.ts +++ b/meet-ce/backend/src/services/recording.service.ts @@ -461,6 +461,25 @@ export class RecordingService { return UtilsHelper.filterObjectFields(recordingInfo, fields) as MeetRecordingInfo; } + /** + * Retrieves the access secrets for a specific recording. + * + * @param recordingId - The unique identifier of the recording + * @returns A promise that resolves to an object containing the public and private access secrets + * @throws Will throw an error if the recording is not found + */ + async getRecordingAccessSecrets( + recordingId: string + ): Promise<{ publicAccessSecret: string; privateAccessSecret: string }> { + const recordingSecrets = await this.recordingRepository.findAccessSecretsByRecordingId(recordingId); + + if (!recordingSecrets) { + throw errorRecordingNotFound(recordingId); + } + + return recordingSecrets; + } + /** * Retrieves a paginated list of all recordings stored in MongoDB. *