From 9ac7af00a5b3a7d6e7584f74456759b8c72d217f Mon Sep 17 00:00:00 2001 From: douglasacost Date: Wed, 3 Jun 2026 09:25:13 -0400 Subject: [PATCH 1/2] fix(fetchZyfiSponsored): enhance error handling and logging Updated the fetchZyfiSponsored function to improve error handling by logging the response status and body when a fetch fails. This change provides clearer insights into the failure reasons. Additionally, adjusted the response parsing to use a single await for the response body, ensuring consistency in handling the response data. --- clk-gateway/src/helpers.ts | 9 +++++++-- clk-gateway/src/routes/names.ts | 12 ++++++++++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/clk-gateway/src/helpers.ts b/clk-gateway/src/helpers.ts index 394679f0..0cc5cee0 100644 --- a/clk-gateway/src/helpers.ts +++ b/clk-gateway/src/helpers.ts @@ -205,10 +205,15 @@ export async function fetchZyfiSponsored( body: JSON.stringify(request), }); + const responseBody = await response.json(); if (!response.ok) { - throw new Error(`Failed to fetch zyfi sponsored`); + console.error( + `Failed to fetch zyfi sponsored: ${response.statusText}`, + responseBody, + ); + throw new Error(`Failed to fetch zyfi sponsored: ${responseBody.message}`); } - const sponsoredResponse = (await response.json()) as ZyfiSponsoredResponse; + const sponsoredResponse = responseBody as ZyfiSponsoredResponse; return sponsoredResponse; } diff --git a/clk-gateway/src/routes/names.ts b/clk-gateway/src/routes/names.ts index 55a3030c..9d27d9bc 100644 --- a/clk-gateway/src/routes/names.ts +++ b/clk-gateway/src/routes/names.ts @@ -126,8 +126,11 @@ router.post( let response; if (zyfiSponsoredUrl) { const zyfiRequest = buildZyfiRegisterRequest(owner, name, sub); + console.log(`ZyFi request [register]: ${JSON.stringify(zyfiRequest)}`); const zyfiResponse = await fetchZyfiSponsored(zyfiRequest); - console.log(`ZyFi response: ${JSON.stringify(zyfiResponse)}`); + console.log( + `ZyFi sponsored response [register]: ${JSON.stringify(zyfiResponse)}`, + ); // await admin.auth().revokeRefreshTokens(decodedToken.uid); @@ -268,8 +271,13 @@ router.post( data.key, data.value, ); + console.log( + `ZyFi request [set-text-record]: ${JSON.stringify(zyfiRequest)}`, + ); const zyfiResponse = await fetchZyfiSponsored(zyfiRequest); - console.log(`ZyFi response: ${JSON.stringify(zyfiResponse)}`); + console.log( + `ZyFi sponsored response [set-text-record]: ${JSON.stringify(zyfiResponse)}`, + ); response = await l2Wallet.sendTransaction(zyfiResponse.txData); } else { From be2b8f640f66b85efafc386713fda6c6a3ab86c7 Mon Sep 17 00:00:00 2001 From: Alex Sedighi Date: Thu, 9 Jul 2026 10:50:58 +1200 Subject: [PATCH 2/2] refactor(fetchZyfiSponsored): centralize ZyFi request/response logging Move operation-tagged logging into fetchZyfiSponsored so all call sites (register, set-text-record, legacy index route) share the same format and error output includes HTTP status plus response body. Co-authored-by: Cursor --- clk-gateway/src/helpers.ts | 18 ++++++++++++------ clk-gateway/src/index.ts | 3 +-- clk-gateway/src/routes/names.ts | 15 ++++----------- 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/clk-gateway/src/helpers.ts b/clk-gateway/src/helpers.ts index 0cc5cee0..b5a84a0d 100644 --- a/clk-gateway/src/helpers.ts +++ b/clk-gateway/src/helpers.ts @@ -193,9 +193,10 @@ export async function getBatchInfo(batchNumber: number): Promise { } export async function fetchZyfiSponsored( - request: ZyfiSponsoredRequest + request: ZyfiSponsoredRequest, + operation = "unknown", ): Promise { - console.log(`zyfiSponsoredUrl: ${zyfiSponsoredUrl}`); + console.log(`ZyFi request [${operation}]: ${JSON.stringify(request)}`); const response = await fetch(zyfiSponsoredUrl!, { method: "POST", headers: { @@ -208,14 +209,19 @@ export async function fetchZyfiSponsored( const responseBody = await response.json(); if (!response.ok) { console.error( - `Failed to fetch zyfi sponsored: ${response.statusText}`, + `ZyFi error [${operation}] ${response.status} ${response.statusText}:`, responseBody, ); - throw new Error(`Failed to fetch zyfi sponsored: ${responseBody.message}`); + const detail = + (responseBody as { message?: string }).message ?? + JSON.stringify(responseBody); + throw new Error(`Failed to fetch zyfi sponsored [${operation}]: ${detail}`); } - const sponsoredResponse = responseBody as ZyfiSponsoredResponse; - return sponsoredResponse; + console.log( + `ZyFi response [${operation}]: ${JSON.stringify(responseBody)}`, + ); + return responseBody as ZyfiSponsoredResponse; } function decodeCommitData(commitData: string) { diff --git a/clk-gateway/src/index.ts b/clk-gateway/src/index.ts index 5b3807be..c568ebec 100644 --- a/clk-gateway/src/index.ts +++ b/clk-gateway/src/index.ts @@ -481,8 +481,7 @@ app.post( let response; if (zyfiSponsoredUrl) { const zyfiRequest = buildZyfiRegisterRequest(owner, name, sub); - const zyfiResponse = await fetchZyfiSponsored(zyfiRequest); - console.log(`ZyFi response: ${JSON.stringify(zyfiResponse)}`); + const zyfiResponse = await fetchZyfiSponsored(zyfiRequest, "register"); await admin.auth().revokeRefreshTokens(decodedToken.uid); diff --git a/clk-gateway/src/routes/names.ts b/clk-gateway/src/routes/names.ts index 9d27d9bc..d66b15d0 100644 --- a/clk-gateway/src/routes/names.ts +++ b/clk-gateway/src/routes/names.ts @@ -126,11 +126,7 @@ router.post( let response; if (zyfiSponsoredUrl) { const zyfiRequest = buildZyfiRegisterRequest(owner, name, sub); - console.log(`ZyFi request [register]: ${JSON.stringify(zyfiRequest)}`); - const zyfiResponse = await fetchZyfiSponsored(zyfiRequest); - console.log( - `ZyFi sponsored response [register]: ${JSON.stringify(zyfiResponse)}`, - ); + const zyfiResponse = await fetchZyfiSponsored(zyfiRequest, "register"); // await admin.auth().revokeRefreshTokens(decodedToken.uid); @@ -271,12 +267,9 @@ router.post( data.key, data.value, ); - console.log( - `ZyFi request [set-text-record]: ${JSON.stringify(zyfiRequest)}`, - ); - const zyfiResponse = await fetchZyfiSponsored(zyfiRequest); - console.log( - `ZyFi sponsored response [set-text-record]: ${JSON.stringify(zyfiResponse)}`, + const zyfiResponse = await fetchZyfiSponsored( + zyfiRequest, + "set-text-record", ); response = await l2Wallet.sendTransaction(zyfiResponse.txData);