@secustor/backstage-plugin-renovate-backend
Version:
122 lines (116 loc) • 4.54 kB
JavaScript
;
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