openvidu/openvidu-testapp/src/app/components/test-apirest/test-apirest.component.ts

124 lines
3.4 KiB
TypeScript
Raw Normal View History

import { Component, Input, OnInit, OnDestroy } from '@angular/core';
2018-06-04 14:27:37 +02:00
import { Subscription } from 'rxjs';
2017-09-26 18:13:00 +02:00
import { OpenviduRestService } from '../../services/openvidu-rest.service';
import { OpenviduParamsService } from '../../services/openvidu-params.service';
import { SessionProperties, RecordingMode, RecordingLayout, MediaMode } from 'openvidu-node-client';
2017-09-27 16:24:39 +02:00
import * as colormap from 'colormap';
const numColors = 64;
2017-09-26 18:13:00 +02:00
@Component({
selector: 'app-test-apirest',
templateUrl: './test-apirest.component.html',
styleUrls: ['./test-apirest.component.css']
2017-09-26 18:13:00 +02:00
})
export class TestApirestComponent implements OnInit, OnDestroy {
2017-09-26 18:13:00 +02:00
openviduUrl: string;
openviduSecret: string;
paramsSubscription: Subscription;
// API REST params
2017-09-27 16:24:39 +02:00
serverData = 'data_test';
selectedRadioIndex = 0;
2017-09-27 16:24:39 +02:00
openViduRoles = ['SUBSCRIBER', 'PUBLISHER', 'MODERATOR'];
selectedRole = 'PUBLISHER';
recordingModes = ['ALWAYS', 'MANUAL'];
selectedRecordingMode = 'MANUAL';
defaultRecordingLayouts = ['BEST_FIT', 'CUSTOM'];
selectedDefaultRecordingLayout = 'BEST_FIT';
mediaModes = ['ROUTED'];
selectedMediaMode = 'ROUTED';
customLayout = '';
2018-05-03 11:48:57 +02:00
customSessionId = '';
2017-09-27 16:24:39 +02:00
// API REST data collected
data = [];
2017-09-27 16:24:39 +02:00
cg;
constructor(private openviduRestService: OpenviduRestService, private openviduParamsService: OpenviduParamsService) {
2017-09-27 16:24:39 +02:00
const options = {
colormap: [
{ 'index': 0, 'rgb': [135, 196, 213] },
{ 'index': 1, 'rgb': [255, 230, 151] }],
nshades: numColors,
format: 'hex'
};
this.cg = colormap(options);
2017-09-26 18:13:00 +02:00
}
ngOnInit() {
const openviduParams = this.openviduParamsService.getParams();
this.openviduUrl = openviduParams.openviduUrl;
this.openviduSecret = openviduParams.openviduSecret;
2017-09-26 18:13:00 +02:00
this.paramsSubscription = this.openviduParamsService.newParams$.subscribe(
params => {
this.openviduUrl = params.openviduUrl;
this.openviduSecret = params.openviduSecret;
});
2017-09-26 18:13:00 +02:00
}
ngOnDestroy() {
2018-03-01 11:25:25 +01:00
if (!!this.paramsSubscription) { this.paramsSubscription.unsubscribe(); }
}
2017-09-27 18:42:11 +02:00
2018-06-04 14:27:37 +02:00
getSessionId() {
this.openviduRestService.getSessionId(this.openviduUrl, this.openviduSecret,
{
recordingMode: RecordingMode[this.selectedRecordingMode],
defaultRecordingProperties: {
recordingLayout: RecordingLayout[this.selectedDefaultRecordingLayout],
customLayout: this.customLayout
},
2018-05-03 11:48:57 +02:00
mediaMode: MediaMode[this.selectedMediaMode],
customSessionId: this.customSessionId
})
2017-09-26 18:13:00 +02:00
.then((sessionId) => {
2017-09-27 16:24:39 +02:00
this.updateData();
2017-09-26 18:13:00 +02:00
})
.catch((error) => {
console.error('Error getting a sessionId', error);
});
}
2018-06-04 14:27:37 +02:00
getToken() {
2017-09-27 16:24:39 +02:00
const sessionId = this.data[this.selectedRadioIndex][0];
this.openviduRestService.getToken(sessionId, this.selectedRole, this.serverData)
2017-09-26 18:13:00 +02:00
.then((token) => {
2017-09-27 16:24:39 +02:00
this.updateData();
2017-09-26 18:13:00 +02:00
})
.catch((error) => {
console.error('Error getting a token', error);
});
}
2017-09-27 16:24:39 +02:00
2018-06-04 14:27:37 +02:00
updateData() {
2017-09-27 16:24:39 +02:00
this.data = Array.from(this.openviduRestService.getAvailableParams());
}
2018-06-04 14:27:37 +02:00
getTokenDisabled(): boolean {
2017-09-27 16:24:39 +02:00
return ((this.data.length === 0) || this.selectedRadioIndex === undefined);
}
2018-06-04 14:27:37 +02:00
getBackgroundColor(index: number) {
2017-09-27 16:24:39 +02:00
return this.cg[((index + 1) * 15) % numColors];
}
2018-06-04 14:27:37 +02:00
cleanAllSessions() {
2017-09-27 16:24:39 +02:00
this.data = [];
this.openviduRestService.sessionIdSession.clear();
this.openviduRestService.sessionIdTokenOpenViduRole.clear();
}
2017-09-27 18:42:11 +02:00
2017-09-26 18:13:00 +02:00
}