openvidu-call: Fixed recordings feature

This commit is contained in:
csantosm 2022-06-28 12:34:23 +02:00
parent 78eb7c51ab
commit bdf63e2e78
8 changed files with 5 additions and 32 deletions

View File

@ -138,11 +138,8 @@ app.delete('/delete/:recordingId', async (req: Request, res: Response) => {
});
export const proxyGETRecording = createProxyMiddleware({
target: `${OPENVIDU_URL}/openvidu/recordings/`,
target: `${OPENVIDU_URL}/openvidu/`,
secure: CALL_OPENVIDU_CERTTYPE !== 'selfsigned',
pathRewrite: (path, req) => {
return `${req.params.recordingId}/${req.params.recordingId}.mp4`;
},
onProxyReq: (proxyReq, req: Request, res: Response) => {
const isAdminDashboard = openviduService.adminTokens.includes(req['session'].token);
const sessionId = openviduService.getSessionIdFromCookie(req.cookies);
@ -153,7 +150,6 @@ export const proxyGETRecording = createProxyMiddleware({
} else {
proxyReq.setHeader('Connection', 'keep-alive');
proxyReq.setHeader('Authorization', openviduService.getBasicAuth());
proxyReq.setHeader('Range', 'bytes=0-');
}
} else {
return res.status(403).send(JSON.stringify({ message: 'Permissions denied to drive recording' }));

View File

@ -24,7 +24,7 @@ app.post('/', async (req: Request, res: Response) => {
const hasValidToken = openviduService.isValidToken(sessionId, req.cookies);
const isSessionCreator = hasValidToken || sessionCreated.activeConnections.length === 0;
const role: OpenViduRole = isSessionCreator && IS_RECORDING_ENABLED ? OpenViduRole.MODERATOR : OpenViduRole.PUBLISHER;
const response = {cameraToken : '', screenToken: '', recordingEnabled: IS_RECORDING_ENABLED};
const response = {cameraToken : '', screenToken: '', recordingEnabled: IS_RECORDING_ENABLED, recordings: []};
const cameraConnection = await openviduService.createConnection(sessionCreated, nickname, role);
const screenConnection = await openviduService.createConnection(sessionCreated, nickname, role);
response.cameraToken = cameraConnection.token;
@ -51,7 +51,7 @@ app.post('/', async (req: Request, res: Response) => {
if(IS_RECORDING_ENABLED){
date = date || openviduService.getDateFromCookie(req.cookies);
response['recordings'] = await openviduService.listRecordingsBySessionIdAndDate(sessionId, date);
response.recordings = await openviduService.listRecordingsBySessionIdAndDate(sessionId, date);
}
res.status(200).send(JSON.stringify(response));

View File

@ -61,9 +61,9 @@ export class OpenViduService {
return sessionId === cookieSessionId && cookieToken === storedToken && cookieDate === storedDate;
}
return false;
} catch (error) {
console.log(error)
return false;
}
}

View File

@ -5,6 +5,5 @@
[recordingsList]="recordings"
(onLogoutClicked)="onLogoutClicked()"
(onRefreshRecordingsClicked)="onRefreshRecordingsClicked()"
(onDownloadRecordingClicked)="onDownloadRecordingClicked($event)"
(onDeleteRecordingClicked)="onDeleteRecordingClicked($event)"
></ov-admin-dashboard>

View File

@ -42,15 +42,6 @@ export class AdminDashboardComponent implements OnInit {
}
}
async onDownloadRecordingClicked(recordingId: string) {
try {
const file = await this.restService.downloadRecording(recordingId);
this.recordingService.downloadRecording(recordingId, file);
} catch (error) {
console.error(error);
}
}
async onDeleteRecordingClicked(recordingId: string) {
try {
this.recordings = await this.restService.deleteRecording(recordingId);

View File

@ -7,7 +7,6 @@
(onActivitiesPanelStartRecordingClicked)="onStartRecordingClicked()"
(onToolbarStopRecordingClicked)="onStopRecordingClicked()"
(onActivitiesPanelStopRecordingClicked)="onStopRecordingClicked()"
(onActivitiesPanelDownloadRecordingClicked)="onDownloadRecordingClicked($event)"
(onActivitiesPanelDeleteRecordingClicked)="onDeleteRecordingClicked($event)"
[activitiesPanelRecordingActivity]="recordingEnabled"
[toolbarRecordingButton]="recordingEnabled"

View File

@ -77,12 +77,4 @@ export class CallComponent implements OnInit {
this.recordingError = error;
}
}
async onDownloadRecordingClicked(recordingId: string) {
try {
const file = await this.restService.downloadRecording(recordingId);
this.recordingService.downloadRecording(recordingId, file);
} catch (error) {
this.recordingError = error;
}
}
}

View File

@ -15,7 +15,7 @@ export class RestService {
async getTokens(
sessionId: string,
nickname?: string
): Promise<{ cameraToken: string; screenToken: string, recordingEnabled: boolean, recordings?: RecordingInfo[] }> {
): Promise<{ cameraToken: string, screenToken: string, recordingEnabled: boolean, recordings?: RecordingInfo[] }> {
return this.postRequest('sessions', { sessionId, nickname });
}
login(password: string): Promise<any[]> {
@ -37,10 +37,6 @@ export class RestService {
return this.postRequest('recordings/stop', { sessionId });
}
downloadRecording(recordingId: string): Promise<Blob> {
return this.getRequest(`recordings/${recordingId}`, 'blob');
}
deleteRecording(recordingId: string): Promise<RecordingInfo[]> {
return this.deleteRequest(`recordings/delete/${recordingId}`);
}