UNPKG

beckn-lightweight

Version:

Lightweight Node.js utilities to integrate Beckn protocol into existing BPPs

35 lines (27 loc) 1.23 kB
const axios = require("axios"); const { sendAck } = require("../utils/ackResponse"); const { postCallback } = require("../utils/postCallback"); function createForwardingHandlerFactory(config = {}) { return function createForwardingHandler({ messageKey, callbackAction }) { return async (req, res) => { const context = req.body.context; const payload = req.body.message?.[messageKey]; console.log(`[${context.action}] → Received. Sending ACK.`); sendAck(res); try { const bppUri = config.bppUri || context.bpp_uri; if (!bppUri) throw new Error("Missing bpp_uri in config or context"); const forwardUrl = `${bppUri}/${context.action}`; const response = await axios.post(forwardUrl, req.body, { headers: { "Content-Type": "application/json" }, }); console.log(`[${context.action}] → Forwarded to BPP. Posting callback.`); const bapUri = config.bapUri || context.bap_uri; await postCallback(callbackAction, context, response.data, bapUri); } catch (err) { console.error(`${callbackAction} forwarding error:`, err.message); } }; }; } module.exports = createForwardingHandlerFactory;