UNPKG

@secustor/backstage-plugin-renovate-backend

Version:
122 lines (116 loc) 4.54 kB
'use strict'; var rootHttpRouter = require('@backstage/backend-defaults/rootHttpRouter'); var express = require('express'); var router = require('../schema/openapi/generated/router.cjs.js'); var schema = require('./schema.cjs.js'); var backstagePluginRenovateCommon = require('@secustor/backstage-plugin-renovate-common'); var catalogClient = require('@backstage/catalog-client'); var is = require('@sindresorhus/is'); var index = require('../wrapper/platforms/index.cjs.js'); function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; } var express__default = /*#__PURE__*/_interopDefaultCompat(express); var is__default = /*#__PURE__*/_interopDefaultCompat(is); async function createRouter(runner, options) { const { auth, rootConfig: config, logger, databaseHandler, discovery } = options; const middlewareFactory = rootHttpRouter.MiddlewareFactory.create({ logger, config }); const client = new catalogClient.CatalogClient({ discoveryApi: discovery }); const router$1 = await router.createOpenApiRouter(); router$1.use(express__default.default.json()); router$1.get("/reports", async (_request, response) => { const reports = await databaseHandler.getReports(); response.status(200).json(reports); }); router$1.delete("/reports", async (request, response) => { const modified = await databaseHandler.deleteReports({ keepLatest: request.query.keepLatest }); response.status(200).json({ modified }); }); router$1.get("/reports/:host", async (request, response) => { const reports = await databaseHandler.getReports({ ...request.params }); response.status(200).json(reports); }); router$1.delete("/reports/:host", async (request, response) => { const modified = await databaseHandler.deleteReportsByTarget( request.params, { keepLatest: request.query.keepLatest } ); response.status(200).json({ modified }); }); router$1.get("/reports/:host/:repository", async (request, response) => { const reports = await databaseHandler.getReports({ ...request.params }); response.status(200).json(reports); }); router$1.delete("/reports/:host/:repository", async (request, response) => { const modified = await databaseHandler.deleteReportsByTarget( request.params, { keepLatest: request.query.keepLatest } ); response.status(200).json({ modified }); }); router$1.get("/dependencies", async (request, response) => { const filter = request.query; const { result, total, pageCount, page, pageSize } = await databaseHandler.getDependencies(filter, filter); const massaged = result.map((dep) => { return { ...dep, id: dep.id, runID: dep.run_id, packageFileUrl: index.getFileUrl(dep) ?? void 0 }; }); let availableValues; if (request.query.availableValues) { availableValues = await databaseHandler.getDependenciesValues(filter); } response.setHeader("X-Total-Count", total); response.setHeader("X-Page-Count", pageCount); response.setHeader("X-Page", page); response.setHeader("X-Page-Size", pageSize); response.json({ dependencies: massaged, availableValues }); }); router$1.post("/runs", async (request, response) => { const body = schema.runRequestBody.safeParse(request.body); if (!body.success) { response.status(400).json({ error: body.error.toString() }); return; } let target = body.data.target; if (is__default.default.string(target) && backstagePluginRenovateCommon.isEntityRef(target)) { const { token } = await auth.getPluginRequestToken({ onBehalfOf: await auth.getOwnServiceCredentials(), targetPluginId: "catalog" }); const result2 = await client.getEntityByRef(target, { token }); if (result2) { target = result2; } } const targetRepo = backstagePluginRenovateCommon.getTargetRepo(target); const id = backstagePluginRenovateCommon.getTaskID(targetRepo); const result = await runner.runNext(targetRepo); if (result.status === "already-running") { logger.debug("Task already running", { taskID: id }); response.status(423).json({ error: "Task is already running" }); return; } response.status(202).json({ taskID: id }); }); router$1.use(middlewareFactory.error()); return router$1; } exports.createRouter = createRouter; //# sourceMappingURL=router.cjs.js.map