openvidu-components: Removed rest service from library

The library will receive tokens and it does not generate them
pull/707/head
csantosm 2022-02-04 10:54:17 +01:00
parent 00087a7dc7
commit 055e370669
6 changed files with 75 additions and 183 deletions

View File

@ -8,7 +8,6 @@ import { ChatService } from '../../services/chat/chat.service';
import { LoggerService } from '../../services/logger/logger.service'; import { LoggerService } from '../../services/logger/logger.service';
import { WebrtcService } from '../../services/webrtc/webrtc.service'; import { WebrtcService } from '../../services/webrtc/webrtc.service';
import { TokenService } from '../../services/token/token.service'; import { TokenService } from '../../services/token/token.service';
import { PlatformService } from '../../services/platform/platform.service';
import { ActionService } from '../../services/action/action.service'; import { ActionService } from '../../services/action/action.service';
import { Signal } from '../../models/signal.model'; import { Signal } from '../../models/signal.model';
import { ParticipantService } from '../../services/participant/participant.service'; import { ParticipantService } from '../../services/participant/participant.service';
@ -60,8 +59,6 @@ export class SessionComponent implements OnInit {
protected tokenService: TokenService, protected tokenService: TokenService,
protected layoutService: LayoutService, protected layoutService: LayoutService,
protected menuService: SidenavMenuService, protected menuService: SidenavMenuService,
protected platformService: PlatformService
) { ) {
this.log = this.loggerSrv.get('SessionComponent'); this.log = this.loggerSrv.get('SessionComponent');
} }

View File

@ -1,5 +1,4 @@
import { Component, ContentChild, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core'; import { Component, ContentChild, EventEmitter, Input, OnInit, Output, TemplateRef } from '@angular/core';
import { RestService } from '../../services/rest/rest.service';
@Component({ @Component({
selector: 'ov-videoconference', selector: 'ov-videoconference',
@ -16,9 +15,9 @@ export class VideoconferenceComponent implements OnInit {
@Input() sessionName: string; @Input() sessionName: string;
@Input() userName: string; @Input() userName: string;
@Input() openviduServerUrl: string;
@Input() openviduSecret: string; // @Input() openviduServerUrl: string;
@Input() tokens: { webcam: string; screen: string }; // @Input() openviduSecret: string;
@Output() onJoinClicked = new EventEmitter<any>(); @Output() onJoinClicked = new EventEmitter<any>();
@Output() onCloseClicked = new EventEmitter<any>(); @Output() onCloseClicked = new EventEmitter<any>();
@ -30,44 +29,31 @@ export class VideoconferenceComponent implements OnInit {
error: boolean = false; error: boolean = false;
errorMessage: string = ''; errorMessage: string = '';
constructor(private restService: RestService) {} constructor() {}
ngOnInit() {} ngOnInit() {}
@Input()
set tokens(tokens: { webcam: string; screen: string }) {
if (!tokens || (!tokens.webcam && !tokens.screen)) {
//No tokens received
// throw new Error('No tokens received');
console.warn('No tokens received');
} else {
if (tokens.webcam || tokens.screen) {
this._tokens = {
webcam: tokens.webcam,
screen: tokens.screen
};
this.joinSessionClicked = true;
this.isSessionAlive = true;
}
}
}
async _onJoinClicked() { async _onJoinClicked() {
this.onJoinClicked.emit(); this.onJoinClicked.emit();
// if (!this.tokens || (!this.tokens?.webcam && !this.tokens?.screen)) {
// //No tokens received
// if (!!this.sessionName && !!this.openviduServerUrl && !!this.openviduSecret) {
// // Generate tokens
// this._tokens = {
// webcam: await this.restService.getToken(this.sessionName, this.openviduServerUrl, this.openviduSecret),
// screen: await this.restService.getToken(this.sessionName, this.openviduServerUrl, this.openviduSecret)
// };
// } else {
// // No tokens received and can't generate them
// this.error = true;
// this.errorMessage = `Cannot access to OpenVidu Server with url '${this.openviduServerUrl}' to genere tokens for session '${this.sessionName}'`;
// throw this.errorMessage;
// }
// } else if (!this.tokens?.webcam || !this.tokens?.screen) {
// // 1 token received
// const aditionalToken = await this.restService.getToken(this.sessionName, this.openviduServerUrl, this.openviduSecret);
// this._tokens = {
// webcam: !!this.tokens.webcam ? this.tokens.webcam : aditionalToken,
// screen: !!this.tokens.screen ? this.tokens.screen : aditionalToken
// };
// } else {
// // 2 tokens received.
// this._tokens = {
// webcam: this.tokens.webcam,
// screen: this.tokens.screen
// };
// }
this.joinSessionClicked = true;
this.isSessionAlive = true;
} }
onLeaveSessionClicked() { onLeaveSessionClicked() {
this.isSessionAlive = false; this.isSessionAlive = false;

View File

@ -1,16 +0,0 @@
import { TestBed } from '@angular/core/testing';
import { RestService } from './rest.service';
describe('RestService', () => {
let service: RestService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(RestService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});

View File

@ -1,75 +0,0 @@
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { catchError, throwError } from 'rxjs';
import { Buffer} from 'buffer';
@Injectable({
providedIn: 'root'
})
export class RestService {
constructor(private http: HttpClient) {}
async getToken(sessionId: string, openviduServerUrl: string, openviduSecret: string): Promise<string> {
if (!!openviduServerUrl && !!openviduSecret) {
const _sessionId = await this.createSession(sessionId, openviduServerUrl, openviduSecret);
return await this.createToken(_sessionId, openviduServerUrl, openviduSecret);
} else {
return Promise.reject(`Error requesting a token to ${openviduServerUrl} with session id: ${sessionId}`);
}
}
private createSession(sessionId: string, openviduServerUrl: string, openviduSecret: string): Promise<string> {
return new Promise((resolve, reject) => {
const body = JSON.stringify({ customSessionId: sessionId });
const options = {
headers: new HttpHeaders({
Authorization: 'Basic ' + this.btoa('OPENVIDUAPP:' + openviduSecret),
'Content-Type': 'application/json'
})
};
return this.http
.post<any>(openviduServerUrl + '/openvidu/api/sessions', body, options)
.pipe(
catchError((error) => {
if (error.status === 409) {
resolve(sessionId);
}
if (error.statusText === 'Unknown Error') {
reject({ status: 401, message: 'ERR_CERT_AUTHORITY_INVALID' });
}
return throwError(() => new Error(error));
})
)
.subscribe((response) => {
resolve(response.id);
});
});
}
private createToken(sessionId: string, openviduServerUrl: string, openviduSecret: string): Promise<string> {
return new Promise((resolve, reject) => {
const body = JSON.stringify({});
const options = {
headers: new HttpHeaders({
Authorization: 'Basic ' + this.btoa('OPENVIDUAPP:' + openviduSecret),
'Content-Type': 'application/json'
})
};
return this.http
.post<any>(openviduServerUrl + '/openvidu/api/sessions/' + sessionId + '/connection', body, options)
.pipe(
catchError((error) => {
reject(error);
return throwError(() => new Error(error));
})
)
.subscribe((response) => {
resolve(response.token);
});
});
}
private btoa(str: string): string {
return Buffer.from(str).toString('base64');
}
}

View File

@ -27,8 +27,8 @@ export class CallComponent implements OnInit {
screen: await this.restService.getToken(this.sessionId) screen: await this.restService.getToken(this.sessionId)
}; };
this.joinSessionClicked = true; // this.joinSessionClicked = true;
this.isSessionAlive = true; // this.isSessionAlive = true;
} }
onCloseClicked() { onCloseClicked() {
this.closeClicked = true; this.closeClicked = true;

View File

@ -27,54 +27,54 @@ export class RestService {
} }
} }
private createSession(sessionId: string, openviduServerUrl: string, openviduSecret: string): Promise<string> { // private createSession(sessionId: string, openviduServerUrl: string, openviduSecret: string): Promise<string> {
return new Promise((resolve, reject) => { // return new Promise((resolve, reject) => {
const body = JSON.stringify({ customSessionId: sessionId }); // const body = JSON.stringify({ customSessionId: sessionId });
const options = { // const options = {
headers: new HttpHeaders({ // headers: new HttpHeaders({
Authorization: 'Basic ' + btoa('OPENVIDUAPP:' + openviduSecret), // Authorization: 'Basic ' + btoa('OPENVIDUAPP:' + openviduSecret),
'Content-Type': 'application/json' // 'Content-Type': 'application/json'
}) // })
}; // };
return this.http // return this.http
.post<any>(openviduServerUrl + '/openvidu/api/sessions', body, options) // .post<any>(openviduServerUrl + '/openvidu/api/sessions', body, options)
.pipe( // .pipe(
catchError((error) => { // catchError((error) => {
if (error.status === 409) { // if (error.status === 409) {
resolve(sessionId); // resolve(sessionId);
} // }
if (error.statusText === 'Unknown Error') { // if (error.statusText === 'Unknown Error') {
reject({ status: 401, message: 'ERR_CERT_AUTHORITY_INVALID' }); // reject({ status: 401, message: 'ERR_CERT_AUTHORITY_INVALID' });
} // }
return observableThrowError(error); // return observableThrowError(error);
}) // })
) // )
.subscribe((response) => { // .subscribe((response) => {
resolve(response.id); // resolve(response.id);
}); // });
}); // });
} // }
private createToken(sessionId: string, openviduServerUrl: string, openviduSecret: string): Promise<string> { // private createToken(sessionId: string, openviduServerUrl: string, openviduSecret: string): Promise<string> {
return new Promise((resolve, reject) => { // return new Promise((resolve, reject) => {
const body = JSON.stringify({}); // const body = JSON.stringify({});
const options = { // const options = {
headers: new HttpHeaders({ // headers: new HttpHeaders({
Authorization: 'Basic ' + btoa('OPENVIDUAPP:' + openviduSecret), // Authorization: 'Basic ' + btoa('OPENVIDUAPP:' + openviduSecret),
'Content-Type': 'application/json' // 'Content-Type': 'application/json'
}) // })
}; // };
return this.http // return this.http
.post<any>(openviduServerUrl + '/openvidu/api/sessions/' + sessionId + '/connection', body, options) // .post<any>(openviduServerUrl + '/openvidu/api/sessions/' + sessionId + '/connection', body, options)
.pipe( // .pipe(
catchError((error) => { // catchError((error) => {
reject(error); // reject(error);
return observableThrowError(error); // return observableThrowError(error);
}) // })
) // )
.subscribe((response) => { // .subscribe((response) => {
resolve(response.token); // resolve(response.token);
}); // });
}); // });
} // }
} }