openvidu-call: Fixed recordings feature
This commit is contained in:
parent
78eb7c51ab
commit
bdf63e2e78
@ -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' }));
|
||||
|
||||
@ -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));
|
||||
|
||||
@ -61,9 +61,9 @@ export class OpenViduService {
|
||||
|
||||
return sessionId === cookieSessionId && cookieToken === storedToken && cookieDate === storedDate;
|
||||
}
|
||||
|
||||
return false;
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,6 +5,5 @@
|
||||
[recordingsList]="recordings"
|
||||
(onLogoutClicked)="onLogoutClicked()"
|
||||
(onRefreshRecordingsClicked)="onRefreshRecordingsClicked()"
|
||||
(onDownloadRecordingClicked)="onDownloadRecordingClicked($event)"
|
||||
(onDeleteRecordingClicked)="onDeleteRecordingClicked($event)"
|
||||
></ov-admin-dashboard>
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -7,7 +7,6 @@
|
||||
(onActivitiesPanelStartRecordingClicked)="onStartRecordingClicked()"
|
||||
(onToolbarStopRecordingClicked)="onStopRecordingClicked()"
|
||||
(onActivitiesPanelStopRecordingClicked)="onStopRecordingClicked()"
|
||||
(onActivitiesPanelDownloadRecordingClicked)="onDownloadRecordingClicked($event)"
|
||||
(onActivitiesPanelDeleteRecordingClicked)="onDeleteRecordingClicked($event)"
|
||||
[activitiesPanelRecordingActivity]="recordingEnabled"
|
||||
[toolbarRecordingButton]="recordingEnabled"
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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}`);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user