-
Notifications
You must be signed in to change notification settings - Fork 464
/
openvidu-rest.service.ts
58 lines (50 loc) · 1.86 KB
/
openvidu-rest.service.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import { Injectable } from '@angular/core';
import {
OpenVidu as OpenViduAPI,
Session as SessionAPI,
OpenViduRole as OpenViduRoleAPI,
SessionProperties as SessionPropertiesAPI
} from 'openvidu-node-client';
@Injectable()
export class OpenviduRestService {
sessionIdSession: Map<string, SessionAPI> = new Map();
sessionIdTokenOpenViduRole: Map<string, Map<string, OpenViduRoleAPI>> = new Map();
constructor() { }
getSessionId(openviduURL: string, openviduSecret: string, sessionProperties: SessionPropertiesAPI): Promise<string> {
return new Promise((resolve, reject) => {
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 => {
reject(error);
});
});
}
getToken(openviduURL: string, openviduSecret: string, sessionId: string, role: string, serverData: string): Promise<string> {
const session: SessionAPI = this.sessionIdSession.get(sessionId);
const OVRole: OpenViduRoleAPI = OpenViduRoleAPI[role];
return new Promise((resolve, reject) => {
session.generateToken({
role: OVRole,
data: serverData
})
.then(token => {
this.sessionIdTokenOpenViduRole.get(sessionId).set(token, OVRole);
resolve(token);
}).catch(error => {
reject(error);
});
});
}
getAvailableParams(): Map<string, string[]> {
const params = new Map<string, string[]>();
this.sessionIdSession.forEach((sessionApi, sessionId, map) => {
params.set(sessionId, Array.from(this.sessionIdTokenOpenViduRole.get(sessionId).keys()));
});
return params;
}
}