Files
cloudflare-domain-manager/apps/api/src/lib/cf-client.ts
T
Denozordec 3f6f402872
quality / commitlint (push) Skipped
CD / update-wiki (push) Failing after 8s
quality / changes (push) Successful in 5s
quality / docker-check (push) Skipped
quality / web (push) Successful in 50s
quality / api (push) Successful in 41s
CD / quality (push) Successful in 1m40s
CD / publish (push) Successful in 1m33s
feat(health-checks): enhance health check functionality and add new routes
- Introduced origin health check routes and integrated them into the application.
- Updated health check configuration to include success recovery thresholds.
- Expanded error handling with new error codes for health check failures.
- Added new service routes for managing health checks, including creation and listing.
- Improved health check service logic to track consecutive successes and failures.

This commit enhances the health check capabilities, providing better monitoring and management of service health.
2026-08-19 12:26:12 +07:00

85 lines
2.3 KiB
TypeScript

import type {
CfDnsRecord,
CfHealthCheck,
CfZone,
CreateDnsRecordPayload,
PatchDnsRecordPayload,
} from "@cfdm/shared";
import { createDnsAdapter } from "./cloudflare/dns-service.js";
import { createHealthCheckAdapter, type CfHealthCheckPayload } from "./cloudflare/healthcheck-service.js";
import { createZoneAdapter } from "./cloudflare/zone-service.js";
export type { CfHealthCheckPayload };
export class CloudflareClient {
private readonly zones;
private readonly dns;
private readonly healthchecks;
constructor(token: string) {
this.zones = createZoneAdapter(token);
this.dns = createDnsAdapter(token);
this.healthchecks = createHealthCheckAdapter(token);
}
listZones(): Promise<CfZone[]> {
return this.zones.listZones();
}
getZone(zoneId: string): Promise<CfZone> {
return this.zones.getZone(zoneId);
}
listDnsRecords(zoneId: string): Promise<CfDnsRecord[]> {
return this.dns.listDnsRecords(zoneId);
}
createDnsRecord(zoneId: string, payload: CreateDnsRecordPayload): Promise<CfDnsRecord> {
return this.dns.createDnsRecord(zoneId, payload);
}
updateDnsRecord(
zoneId: string,
recordId: string,
payload: CreateDnsRecordPayload,
): Promise<CfDnsRecord> {
return this.dns.updateDnsRecord(zoneId, recordId, payload);
}
patchDnsRecord(
zoneId: string,
recordId: string,
payload: PatchDnsRecordPayload,
): Promise<CfDnsRecord> {
return this.dns.patchDnsRecord(zoneId, recordId, payload);
}
deleteDnsRecord(zoneId: string, recordId: string): Promise<void> {
return this.dns.deleteDnsRecord(zoneId, recordId);
}
listHealthChecks(zoneId: string): Promise<CfHealthCheck[]> {
return this.healthchecks.listHealthChecks(zoneId);
}
getHealthCheck(zoneId: string, id: string): Promise<CfHealthCheck> {
return this.healthchecks.getHealthCheck(zoneId, id);
}
createHealthCheck(zoneId: string, payload: CfHealthCheckPayload): Promise<CfHealthCheck> {
return this.healthchecks.createHealthCheck(zoneId, payload);
}
updateHealthCheck(
zoneId: string,
id: string,
payload: CfHealthCheckPayload,
): Promise<CfHealthCheck> {
return this.healthchecks.updateHealthCheck(zoneId, id, payload);
}
deleteHealthCheck(zoneId: string, id: string): Promise<void> {
return this.healthchecks.deleteHealthCheck(zoneId, id);
}
}