service-api.service.ts 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import { Injectable } from '@angular/core';
  2. import { HttpClient } from '@angular/common/http';
  3. import { firstValueFrom, map } from 'rxjs';
  4. import { HttpCheckData, ServiceCheckData } from '../../../../common/lib/http-check-data.module';
  5. import { environment } from 'src/environments/environment';
  6. @Injectable({
  7. providedIn: 'root'
  8. })
  9. export class ServiceApiService {
  10. constructor(private http: HttpClient) {}
  11. public loadServiceChecks(serverID: number): Promise<HttpCheckConfig[]> {
  12. return firstValueFrom(this.http.get<HttpCheckConfig[]>(`${environment.apiBaseUrl}services/${serverID}`));
  13. }
  14. public getServiceCheck(serverID: number, serviceID: number) {
  15. return firstValueFrom(this.http.get<HttpCheckConfig>(`${environment.apiBaseUrl}services/${serverID}/${serviceID}`));
  16. }
  17. public saveServiceCheck(serverId: number, checkConfig: HttpCheckConfig): Promise<HttpCheckConfig> {
  18. return firstValueFrom(this.http.put<HttpCheckConfig>(`${environment.apiBaseUrl}services/${serverId}`, checkConfig));
  19. }
  20. public deleteServiceCheck(serverID: number, serviceID: number): Promise<boolean> {
  21. return firstValueFrom(this.http.delete<any>(`${environment.apiBaseUrl}services/${serverID}/${serviceID}`).pipe(map(() => true)));
  22. }
  23. public queryServiceData(serverID: number, serviceID: number, start: Date, end: Date) {
  24. return firstValueFrom(
  25. this.http
  26. .get<QueryResponse<ServiceCheckData[]>>(`${environment.apiBaseUrl}services/${serverID}/${serviceID}/data`, {
  27. params: { start: start.toISOString(), end: end.toISOString() }
  28. })
  29. .pipe(map(resp => resp.data.map(data => ({ ...data, time: new Date(data.time) })) as ServiceCheckData[]))
  30. );
  31. }
  32. public queryServiceLog(serverID: number, serviceID: number, start: Date, end: Date) {
  33. return firstValueFrom(
  34. this.http
  35. .get<QueryResponse<ServiceCheckData[]>>(`${environment.apiBaseUrl}services/${serverID}/${serviceID}/logs`, {
  36. params: { start: start.toISOString(), end: end.toISOString() }
  37. })
  38. .pipe(map(resp => resp.data.map(data => ({ ...data, time: new Date(data.time) })) as ServiceCheckData[]))
  39. );
  40. }
  41. public testServiceCheck(checkConfig: HttpCheckConfig): Promise<HttpCheckData[]> {
  42. return firstValueFrom(
  43. this.http
  44. .post<HttpCheckData[]>(`${environment.apiBaseUrl}services/test`, checkConfig)
  45. .pipe(map(resp => resp.map(data => ({ ...data, time: new Date(data.time) }))))
  46. );
  47. }
  48. }