UNPKG

godprotocol

Version:

A distributed computing environment for Web 4.0 — integrating AI, decentralisation, and virtual computation.

94 lines (73 loc) 2.17 kB
const respond = async (result, res) => { let response = { ok: result?.ok, message: result.message, data: result.data, }; if (result.pagination) response.pagination = result.pagination; if (result.token) response.token = result.token; if (!res) return response; res.status(result?.status || (result?.ok ? 200 : 403)).json(response); }; const version_middleware = async (req, res, routers) => { try { const version = req.headers["x-api-version"] || "v1"; let router = routers.get_version(version); if (router.config?.is_old) return router.routes(req, res); if (!router) { return res.status(400).json({ error: "Invalid API version", version, }); } router = routers; let name = req.path.slice(1), result; try { result = await router.handle_security(name, req); // console.log("Security check result:", result); if (result !== true) { return await respond(result, res); } } catch (err) { console.error(err); throw new Error("Security check failed"); } let db = await router.resolve_db(req); let is_webhook = req.headers["is-webhook"]; // console.log(req.headers); if (!is_webhook) { let web_prior = await router.handle_webhook_prior(req); if (web_prior === false) { } else if (!web_prior?.ok) { return await respond(web_prior, res); } else { req.headers.webhook_prior = web_prior; } } try { result = await router.execute(name, { body: req.body, headers: req.headers, db: db.db, gp: router.gp, services: router.get_service, }); !is_webhook && (await router.handle_webhook_after(req, result)); return await respond(result, res); } catch (err) { console.error(err); throw new Error("Route execution failed"); } } catch (err) { console.error("Version Middleware Error:", err); return ( res && res.status(500).json({ ok: false, message: "Internal server error", }) ); } }; export default version_middleware;