import axios from "axios"; import config from "./config/config"; import logging from "./config/logging"; import { NAME_SPACE } from "./server"; type MessageType = "mcu" | "payment"; export const getListOutbox = async ( messageType: MessageType, statusOutbox: string, startDate: string, endDate: string ) => { const url = config.base_url + config.messageTypes[messageType].endpoints.listOutbox; logging.info( NAME_SPACE, `\t INFO [${config.messageTypes[messageType].name}]: ${url}` ); logging.info(NAME_SPACE, "\t INFO Status Outbox: " + statusOutbox); try { const resp = await axios.post( url, { statusOutbox, startDate, endDate }, { headers: { "Content-Type": "application/json; charset=UTF-8" }, responseType: "text", } ); return typeof resp.data === "string" ? JSON.parse(resp.data) : resp.data; } catch (e) { handleAxiosError(e, messageType); } }; export const sendToQontak = async (messageType: MessageType, param: any) => { const url = config.base_url + config.messageTypes[messageType].endpoints.sendMsg; logging.info( NAME_SPACE, `\t INFO [${config.messageTypes[messageType].name}]: ${url}` ); logging.info(NAME_SPACE, "\t INFO Payload: " + JSON.stringify(param)); try { const resp = await axios.post(url, param, { headers: { "Content-Type": "application/json; charset=UTF-8" }, responseType: "text", }); const statusResp = resp.data.status; logging.info( NAME_SPACE, `\t INFO Resp [${ config.messageTypes[messageType].name }]: ${JSON.stringify(statusResp)}` ); if (statusResp != "OK") { logging.error( NAME_SPACE, `\t Error [${ config.messageTypes[messageType].name }]: ${JSON.stringify(resp.data)}` ); } return statusResp; } catch (e) { handleAxiosError(e, messageType); } }; export const uploadFileCdn = async (messageType: MessageType, param: any) => { const url = config.base_url + config.messageTypes[messageType].endpoints.uploadFile; logging.info( NAME_SPACE, `\t INFO [${config.messageTypes[messageType].name}]: ${url}` ); logging.info(NAME_SPACE, "\t INFO Payload: " + JSON.stringify(param)); try { const resp = await axios.post(url, param, { headers: { "Content-Type": "application/json; charset=UTF-8" }, responseType: "text", }); const statusResp = resp.data.status; logging.info( NAME_SPACE, `\t INFO Resp Upload [${ config.messageTypes[messageType].name }]: ${JSON.stringify(statusResp)}` ); return statusResp; } catch (e) { handleAxiosError(e, messageType); } }; export const changeStatusOutbox = async ( messageType: MessageType, param: any ) => { const url = config.base_url + config.messageTypes[messageType].endpoints.changeStatus; logging.info( NAME_SPACE, `\t INFO [${config.messageTypes[messageType].name}]: ${url}` ); logging.info(NAME_SPACE, "\t INFO Payload: " + JSON.stringify(param)); try { const resp = await axios.post(url, param, { headers: { "Content-Type": "application/json; charset=UTF-8" }, responseType: "text", }); const statusResp = resp.data.status; logging.info( NAME_SPACE, `\t INFO Resp Change Status [${ config.messageTypes[messageType].name }]: ${JSON.stringify(statusResp)}` ); return statusResp; } catch (e) { handleAxiosError(e, messageType); } }; function handleAxiosError(e: any, messageType: MessageType) { if (axios.isAxiosError(e)) { logging.error( NAME_SPACE, `Error [${config.messageTypes[messageType].name}] - Axios Error` ); logging.error(NAME_SPACE, e.response?.data?.toString()); } else if (e instanceof Error) { logging.error( NAME_SPACE, `Error [${config.messageTypes[messageType].name}] - ${e.message}` ); } }