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;
    }
}