From 2d137473e61654e6a0df7aebc4127bd3bb08c7b0 Mon Sep 17 00:00:00 2001 From: Viren070 Date: Fri, 19 Sep 2025 00:45:09 +0100 Subject: [PATCH] fix(builtins/znab): improve error handling --- packages/core/src/builtins/base/nab/api.ts | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/packages/core/src/builtins/base/nab/api.ts b/packages/core/src/builtins/base/nab/api.ts index 302a5cfe..3b7e5847 100644 --- a/packages/core/src/builtins/base/nab/api.ts +++ b/packages/core/src/builtins/base/nab/api.ts @@ -294,25 +294,32 @@ export class BaseNabApi { headers: this.getHeaders(), timeout: timeout ?? Env.BUILTIN_NAB_SEARCH_TIMEOUT, }); + const data = await response.text(); - let result: any; + + let result: any | null = null; + let parseError: Error | null = null; try { result = await this.xmlParser.parseStringPromise(data); } catch (error) { - this.logger.verbose(`Unexpected XML response: ${data}`); - throw error; + parseError = error as Error; } this.xmlParser.reset(); - if (result.error) { + if (result && result.error) { const code = parseInt(result.error.$.code, 10); const description = result.error.$.description; throw new NabApiError(code, description); } if (!response.ok) { + throw new Error(`${response.status} - ${response.statusText}`); + } + + if (parseError || !result) { + this.logger.error(`Unexpected XML response: ${data}`); throw new Error( - `${response.status} - ${response.statusText}${data ? `: ${data}` : ''}` + `Failed to parse XML response: ${parseError?.message ?? 'Unknown error'}` ); }