openvidu/openvidu-testapp/src/app/services/openvidu-rest.service.ts

56 lines
1.8 KiB
TypeScript
Raw Normal View History

2017-09-26 18:13:00 +02:00
import { Injectable } from '@angular/core';
import {
OpenVidu as OpenViduAPI,
Session as SessionAPI,
TokenOptions as TokenOptionsAPI,
OpenViduRole as OpenViduRoleAPI
} from 'openvidu-node-client';
import { environment } from '../../environments/environment';
@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() { }
2017-09-27 16:24:39 +02:00
getSessionId(openviduURL: string, openviduSecret: string): Promise<string> {
const OV = new OpenViduAPI(openviduURL, openviduSecret);
2017-09-26 18:13:00 +02:00
const session = OV.createSession();
return new Promise(resolve => {
session.getSessionId((sessionId) => {
2017-09-27 16:24:39 +02:00
this.sessionIdSession.set(sessionId, session);
this.sessionIdTokenOpenViduRole.set(sessionId, new Map());
2017-09-26 18:13:00 +02:00
resolve(sessionId);
});
});
}
2017-09-27 16:24:39 +02:00
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];
2017-09-26 18:13:00 +02:00
return new Promise(resolve => {
2017-09-27 16:24:39 +02:00
const tokenOptions: TokenOptionsAPI = new TokenOptionsAPI.Builder()
.role(OVRole)
.data(serverData)
.build();
session.generateToken(tokenOptions, (token) => {
this.sessionIdTokenOpenViduRole.get(sessionId).set(token, OVRole);
2017-09-26 18:13:00 +02:00
resolve(token);
});
});
}
2017-09-27 16:24:39 +02:00
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;
}
2017-09-26 18:13:00 +02:00
}