diff --git a/lib/services/medipost.service.ts b/lib/services/medipost.service.ts index 39a7d66..150f8dc 100644 --- a/lib/services/medipost.service.ts +++ b/lib/services/medipost.service.ts @@ -58,9 +58,18 @@ function parseXML(xml: string) { return parser.parse(xml); } -export async function validateMedipostResponse(response: string) { +export async function validateMedipostResponse(response: string, { canHaveEmptyCode = false }: { canHaveEmptyCode?: boolean } = {}) { const parsed: IMedipostResponseXMLBase = parseXML(response); - if (typeof parsed.ANSWER?.CODE !== 'number' || parsed.ANSWER?.CODE !== 0) { + const code = parsed.ANSWER?.CODE; + if (canHaveEmptyCode) { + if (code && code !== 0) { + console.error("Bad response", response); + throw new Error(`Medipost response is invalid`); + } + return; + } + + if (typeof code !== 'number' || (code !== 0 && !canHaveEmptyCode)) { console.error("Bad response", response); throw new Error(`Medipost response is invalid`); } @@ -168,7 +177,7 @@ export async function getPrivateMessage(messageId: string) { }, }); - await validateMedipostResponse(data); + await validateMedipostResponse(data, { canHaveEmptyCode: true }); return parseXML(data) as MedipostOrderResponse; }