feat(MED-131): improve xml response code validation
This commit is contained in:
@@ -19,6 +19,7 @@ import { SyncStatus } from '@/lib/types/audit';
|
||||
import {
|
||||
AnalysisOrderStatus,
|
||||
GetMessageListResponse,
|
||||
IMedipostResponseXMLBase,
|
||||
MaterjalideGrupp,
|
||||
MedipostAction,
|
||||
MedipostOrderResponse,
|
||||
@@ -38,6 +39,20 @@ import { createAnalysisGroup } from './analysis-group.service';
|
||||
const BASE_URL = process.env.MEDIPOST_URL!;
|
||||
const USER = process.env.MEDIPOST_USER!;
|
||||
const PASSWORD = process.env.MEDIPOST_PASSWORD!;
|
||||
const RECIPIENT = process.env.MEDIPOST_RECIPIENT!;
|
||||
|
||||
function parseXML(xml: string) {
|
||||
const parser = new XMLParser({ ignoreAttributes: false });
|
||||
return parser.parse(xml);
|
||||
}
|
||||
|
||||
export async function validateMedipostResponse(response: string) {
|
||||
const parsed: IMedipostResponseXMLBase = parseXML(response);
|
||||
if (typeof parsed.ANSWER?.CODE !== 'number' || parsed.ANSWER?.CODE !== 0) {
|
||||
console.error("Bad response", response);
|
||||
throw new Error(`Medipost response is invalid`);
|
||||
}
|
||||
}
|
||||
|
||||
export async function getMessages() {
|
||||
try {
|
||||
@@ -85,14 +100,8 @@ export async function getPublicMessage(messageId: string) {
|
||||
Accept: 'application/xml',
|
||||
},
|
||||
});
|
||||
const parser = new XMLParser({ ignoreAttributes: false });
|
||||
const parsed: MedipostPublicMessageResponse = parser.parse(data);
|
||||
|
||||
if (parsed.ANSWER?.CODE && parsed.ANSWER?.CODE !== 0) {
|
||||
throw new Error(`Failed to get public message (id: ${messageId})`);
|
||||
}
|
||||
|
||||
return parsed;
|
||||
await validateMedipostResponse(data);
|
||||
return parseXML(data) as MedipostPublicMessageResponse;
|
||||
}
|
||||
|
||||
export async function sendPrivateMessage(messageXml: string, receiver: string) {
|
||||
@@ -111,9 +120,7 @@ export async function sendPrivateMessage(messageXml: string, receiver: string) {
|
||||
|
||||
const { data } = await axios.post(BASE_URL, body);
|
||||
|
||||
if (data.code && data.code !== 0) {
|
||||
throw new Error(`Failed to send private message`);
|
||||
}
|
||||
await validateMedipostResponse(data);
|
||||
}
|
||||
|
||||
export async function getLatestPrivateMessageListItem() {
|
||||
@@ -145,15 +152,9 @@ export async function getPrivateMessage(messageId: string) {
|
||||
},
|
||||
});
|
||||
|
||||
const parser = new XMLParser({ ignoreAttributes: false });
|
||||
const parsed = parser.parse(data);
|
||||
await validateMedipostResponse(data);
|
||||
|
||||
if (parsed.ANSWER?.CODE && parsed.ANSWER?.CODE !== 0) {
|
||||
console.error("Bad response", data);
|
||||
throw new Error(`Failed to get private message (id: ${messageId})`);
|
||||
}
|
||||
|
||||
return parsed;
|
||||
return parseXML(data) as MedipostOrderResponse;
|
||||
}
|
||||
|
||||
export async function deletePrivateMessage(messageId: string) {
|
||||
|
||||
Reference in New Issue
Block a user