import { Injectable } from '@angular/core'; import { Requestor } from '@openid/appauth'; import { HttpClient, HttpHeaders } from '@angular/common/http'; import { XhrSettings } from 'ionic-appauth/lib/cordova'; import { firstValueFrom } from 'rxjs'; @Injectable({ providedIn: 'root', }) export class NgHttpService implements Requestor { constructor(private http: HttpClient) {} public async xhr(settings: XhrSettings): Promise { if (!settings.method) { settings.method = 'GET'; } switch (settings.method) { case 'GET': return firstValueFrom(this.http.get(settings.url, { headers: this.getHeaders(settings.headers) })); case 'POST': return firstValueFrom(this.http.post(settings.url, settings.data, { headers: this.getHeaders(settings.headers) })); case 'PUT': return firstValueFrom(this.http.put(settings.url, settings.data, { headers: this.getHeaders(settings.headers) })); case 'DELETE': return firstValueFrom(this.http.delete(settings.url, { headers: this.getHeaders(settings.headers) })); } } private getHeaders(headers: any): HttpHeaders { let httpHeaders: HttpHeaders = new HttpHeaders(); if (headers !== undefined) { Object.keys(headers).forEach(key => { httpHeaders = httpHeaders.append(key, headers[key]); }); } return httpHeaders; } }