27 lines
823 B
TypeScript
27 lines
823 B
TypeScript
'use server';
|
|
|
|
import type { IMedipostResponseXMLBase } from '@/packages/shared/src/types/medipost-analysis';
|
|
|
|
import { parseXML } from '../util/xml.service';
|
|
import { MedipostValidationError } from './MedipostValidationError';
|
|
|
|
export async function validateMedipostResponse(
|
|
response: string,
|
|
{ canHaveEmptyCode = false }: { canHaveEmptyCode?: boolean } = {},
|
|
) {
|
|
const parsed: IMedipostResponseXMLBase = await parseXML(response);
|
|
const code = parsed.ANSWER?.CODE;
|
|
if (canHaveEmptyCode) {
|
|
if (code && code !== 0) {
|
|
console.error('Bad response', response);
|
|
throw new MedipostValidationError(response);
|
|
}
|
|
return;
|
|
}
|
|
|
|
if (typeof code !== 'number' || (code !== 0 && !canHaveEmptyCode)) {
|
|
console.error('Bad response', response);
|
|
throw new MedipostValidationError(response);
|
|
}
|
|
}
|