FarmMapsLib/projects/common/src/fm/services/healthcheck.service.ts

30 lines
1012 B
TypeScript

import { Injectable } from '@angular/core';
import { Observable,BehaviorSubject,of } from 'rxjs';
import { map, catchError } from 'rxjs/operators';
import { HttpClient, HttpXhrBackend } from "@angular/common/http";
import { AppConfig } from "../shared/app.config";
@Injectable({
providedIn: 'root',
})
export class HealthCheckService {
private httpClient: HttpClient;
constructor(xhrBackend: HttpXhrBackend, public appConfig: AppConfig) {
this.httpClient = new HttpClient(xhrBackend);
}
ApiEndpoint() {
return this.appConfig.getConfig("apiEndPoint");
}
check(interval:number): Observable<boolean> {
const retval = new BehaviorSubject<boolean>(true);
setInterval(() => {
this.httpClient.get(`${this.ApiEndpoint()}/api/v1/healthcheck`).pipe(map(() => true),catchError((error) => of(false))).toPromise().then((status) => {
retval.next(status);
});
},interval);
return retval;
}
}