feat(MED-131): fix validation
This commit is contained in:
@@ -58,9 +58,18 @@ function parseXML(xml: string) {
|
|||||||
return parser.parse(xml);
|
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);
|
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);
|
console.error("Bad response", response);
|
||||||
throw new Error(`Medipost response is invalid`);
|
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;
|
return parseXML(data) as MedipostOrderResponse;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user