2017-09-26 18:13:00 +02:00
|
|
|
import { Injectable } from '@angular/core';
|
|
|
|
import {
|
|
|
|
OpenVidu as OpenViduAPI,
|
|
|
|
Session as SessionAPI,
|
2018-04-17 15:08:02 +02:00
|
|
|
OpenViduRole as OpenViduRoleAPI,
|
|
|
|
SessionProperties as SessionPropertiesAPI
|
2017-09-26 18:13:00 +02:00
|
|
|
} from 'openvidu-node-client';
|
|
|
|
|
|
|
|
@Injectable()
|
|
|
|
export class OpenviduRestService {
|
|
|
|
|
2017-09-27 16:24:39 +02:00
|
|
|
sessionIdSession: Map<string, SessionAPI> = new Map();
|
|
|
|
sessionIdTokenOpenViduRole: Map<string, Map<string, OpenViduRoleAPI>> = new Map();
|
|
|
|
|
2017-09-26 18:13:00 +02:00
|
|
|
constructor() { }
|
|
|
|
|
2018-04-17 15:08:02 +02:00
|
|
|
getSessionId(openviduURL: string, openviduSecret: string, sessionProperties: SessionPropertiesAPI): Promise<string> {
|
2018-04-18 10:56:28 +02:00
|
|
|
return new Promise((resolve, reject) => {
|
2018-04-26 13:01:59 +02:00
|
|
|
const OV = new OpenViduAPI(openviduURL, openviduSecret);
|
|
|
|
OV.createSession(sessionProperties)
|
|
|
|
.then(session => {
|
|
|
|
this.sessionIdSession.set(session.getSessionId(), session);
|
|
|
|
this.sessionIdTokenOpenViduRole.set(session.getSessionId(), new Map());
|
|
|
|
resolve(session.getSessionId());
|
|
|
|
})
|
|
|
|
.catch(error => {
|
2018-04-18 10:56:28 +02:00
|
|
|
reject(error);
|
|
|
|
});
|
2017-09-26 18:13:00 +02:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2020-10-20 22:23:08 +02:00
|
|
|
getToken(sessionId: string, role: string, serverData: string): Promise<string> {
|
2017-09-27 16:24:39 +02:00
|
|
|
const session: SessionAPI = this.sessionIdSession.get(sessionId);
|
|
|
|
const OVRole: OpenViduRoleAPI = OpenViduRoleAPI[role];
|
2017-09-26 18:13:00 +02:00
|
|
|
|
2018-04-18 10:56:28 +02:00
|
|
|
return new Promise((resolve, reject) => {
|
2018-04-23 11:08:07 +02:00
|
|
|
session.generateToken({
|
|
|
|
role: OVRole,
|
|
|
|
data: serverData
|
|
|
|
})
|
2018-04-18 10:56:28 +02:00
|
|
|
.then(token => {
|
|
|
|
this.sessionIdTokenOpenViduRole.get(sessionId).set(token, OVRole);
|
|
|
|
resolve(token);
|
|
|
|
}).catch(error => {
|
|
|
|
reject(error);
|
|
|
|
});
|
2017-09-26 18:13:00 +02:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2017-09-27 16:24:39 +02:00
|
|
|
getAvailableParams(): Map<string, string[]> {
|
|
|
|
const params = new Map<string, string[]>();
|
2021-02-18 16:02:03 +01:00
|
|
|
this.sessionIdSession.forEach((sessionApi, sessionId) => {
|
2017-09-27 16:24:39 +02:00
|
|
|
params.set(sessionId, Array.from(this.sessionIdTokenOpenViduRole.get(sessionId).keys()));
|
|
|
|
});
|
|
|
|
return params;
|
|
|
|
}
|
|
|
|
|
2017-09-26 18:13:00 +02:00
|
|
|
}
|