import { HttpClient , HttpHeaders, HttpParams } from '@angular/common/http'; import { TokenService, TokenProvider } from './login/token.service' import 'rxjs/Rx'; declare var X2JS: any; export class RestBase { xml2jsonOBJ: any; static get parameters() { return [HttpClient, TokenService] } constructor(public http : HttpClient, public tokenService : TokenService) { this.xml2jsonOBJ = new X2JS(); } /* */ protocol: string = "http"; hostname: string = "dl043.madgik.di.uoa.gr"; port: number = 8080; webappname: string = ""; restpath: string = ""; /* protocol: string = "http"; hostname: string = "dl010.madgik.di.uoa.gr"; port: number = 8080; webappname: string = "dmp-backend"; restpath: string = "rest"; */ loginPath : string = this.protocol+"://"+this.hostname+":"+this.port+"/"+this.webappname+"/login/"; restPath: string = this.protocol+"://"+this.hostname+":"+this.port+"/"+this.webappname+"/"+this.restpath+"/"; public login(path : string, data : any){ let options = { headers: new HttpHeaders().set('Content-Type', 'application/json') }; return this.http.post(this.loginPath + path, JSON.stringify(data), options); } public get(path : string, params? : any){ var options = this.createOptions(params); return this.http.get(this.restPath + path, options); } public post(path : string, data : any, params? : any){ var options = this.createOptions(params); return this.http.post(this.restPath + path, JSON.stringify(data), options); } private createOptions(parameters : any){ var token = this.tokenService.getToken(); var provider: TokenProvider = this.tokenService.getProvider(); var csrfToken : string = this.tokenService.getCSRFToken(); var params = new HttpParams(); if(parameters != null){ Object.entries(parameters).forEach( entry => { params = params.set(entry[0], entry[1]); }); } var headers; if(provider == TokenProvider.google) headers = new HttpHeaders().set('Content-Type', 'application/json').set('X-CSRF-Token', csrfToken).set("google-token", token); if(provider == TokenProvider.native) headers = new HttpHeaders().set('Content-Type', 'application/json').set('X-CSRF-Token', csrfToken).set("native-token", token); let options = { params: params, headers: headers }; return options; } }