CD / update-wiki (push) Successful in 8s
quality / commitlint (push) Skipped
quality / changes (push) Successful in 5s
quality / docker-check (push) Skipped
quality / web (push) Successful in 54s
quality / api (push) Successful in 46s
CD / quality (push) Successful in 1m49s
CD / publish (push) Successful in 1m40s
Несколько источников проб сразу и правило агрегации на сервисе вместо XOR Local/Cloudflare. Co-authored-by: Cursor <cursoragent@cursor.com>
41 lines
1023 B
TypeScript
41 lines
1023 B
TypeScript
import type { HealthCheckTarget } from "@cfdm/shared";
|
|
import {
|
|
runGlobalpingMeasurement,
|
|
type GlobalpingClientOptions,
|
|
} from "../../lib/globalping-client.js";
|
|
import type { ProbeResult } from "../health-check-service.js";
|
|
|
|
export function globalpingNotConfiguredResult(): ProbeResult {
|
|
return {
|
|
ok: false,
|
|
latencyMs: 0,
|
|
error: "Globalping: токен не задан",
|
|
colo: null,
|
|
};
|
|
}
|
|
|
|
export async function probeWithGlobalping(
|
|
target: HealthCheckTarget,
|
|
options: GlobalpingClientOptions,
|
|
): Promise<ProbeResult> {
|
|
if (!options.token?.trim()) {
|
|
return globalpingNotConfiguredResult();
|
|
}
|
|
try {
|
|
const result = await runGlobalpingMeasurement(target, options);
|
|
return {
|
|
ok: result.ok,
|
|
latencyMs: result.latencyMs,
|
|
error: result.error,
|
|
colo: result.colo,
|
|
};
|
|
} catch (err) {
|
|
return {
|
|
ok: false,
|
|
latencyMs: 0,
|
|
error: err instanceof Error ? err.message : "Globalping: ошибка запроса",
|
|
colo: null,
|
|
};
|
|
}
|
|
}
|