diff --git a/alchemy/src/cloudflare/zone.ts b/alchemy/src/cloudflare/zone.ts index f8ab64f75..1fa437195 100644 --- a/alchemy/src/cloudflare/zone.ts +++ b/alchemy/src/cloudflare/zone.ts @@ -2,6 +2,7 @@ import type { Context } from "../context.ts"; import { Resource } from "../resource.ts"; import { logger } from "../util/logger.ts"; import { handleApiError } from "./api-error.ts"; +import { extractCloudflareResult } from "./api-response.ts"; import { createCloudflareApi, type CloudflareApi, @@ -568,45 +569,12 @@ async function getZoneSettings( export async function getZoneByDomain( api: CloudflareApi, domainName: string, -): Promise { - const response = await api.get( - `/zones?name=${encodeURIComponent(domainName)}`, +): Promise { + const [zone] = await extractCloudflareResult( + `get zone for ${domainName}`, + api.get(`/zones?name=${encodeURIComponent(domainName)}`), ); - - if (!response.ok) { - throw new Error( - `Error fetching zone for '${domainName}': ${response.statusText}`, - ); - } - - const zones = ((await response.json()) as { result: CloudflareZone[] }) - .result; - - if (zones.length === 0) { - return null; - } - - const zoneData = zones[0]; - - // Get zone settings - const settings = await getZoneSettings(api, zoneData.id); - - return { - id: zoneData.id, - name: zoneData.name, - type: zoneData.type, - status: zoneData.status, - paused: zoneData.paused, - accountId: zoneData.account.id, - nameservers: zoneData.name_servers, - originalNameservers: zoneData.original_name_servers, - createdAt: new Date(zoneData.created_on).getTime(), - modifiedAt: new Date(zoneData.modified_on).getTime(), - activatedAt: zoneData.activated_on - ? new Date(zoneData.activated_on).getTime() - : null, - settings, - }; + return zone; } /** diff --git a/alchemy/test/cloudflare/zone.test.ts b/alchemy/test/cloudflare/zone.test.ts index d8aa92d94..3c0ea1360 100644 --- a/alchemy/test/cloudflare/zone.test.ts +++ b/alchemy/test/cloudflare/zone.test.ts @@ -192,21 +192,18 @@ describe.skipIf(!process.env.ALL_TESTS)("Zone Resource", () => { const foundZone = await getZoneByDomain(api, lookupTestDomain); // Verify the lookup returned the correct zone - expect(foundZone).toBeTruthy(); - expect(foundZone!.id).toEqual(zone.id); - expect(foundZone!.name).toEqual(lookupTestDomain); - expect(foundZone!.type).toEqual("full"); - expect(foundZone!.accountId).toEqual(zone.accountId); - expect(foundZone!.nameservers).toEqual(zone.nameservers); - expect(foundZone!.settings.ssl).toEqual("flexible"); - expect(foundZone!.settings.alwaysUseHttps).toEqual("on"); + expect(foundZone).toMatchObject({ + id: zone.id, + name: lookupTestDomain, + type: "full", + }); // Test lookup of non-existent domain const nonExistentZone = await getZoneByDomain( api, `${BRANCH_PREFIX}-non-existent.dev`, ); - expect(nonExistentZone).toBeNull(); + expect(nonExistentZone).toBeUndefined(); } finally { // Always clean up await destroy(scope);