underpost
Version:
Underpost Platform — end-to-end CI/CD and application-delivery toolchain CLI. Covers bare metal, Kubernetes, K3s, kubeadm, LXD, container/image orchestration, secrets, databases, cron jobs, monitoring, SSH, runners, PWA + Workbox delivery, and release orc
37 lines (33 loc) • 1.32 kB
JavaScript
import express from 'express';
import { adminGuard } from '../../server/auth.js';
import { FileController } from './file.controller.js';
class FileRouter {
/**
* authenticated writes, admin-only deletes.
* @param {import('../types.js').RouterOptions} options
* @returns {import('express').Router}
*/
static router(options) {
const router = express.Router();
router.post(`/:id`, options.authMiddleware, async (req, res) => await FileController.post(req, res, options));
router.post(`/`, options.authMiddleware, async (req, res) => await FileController.post(req, res, options));
router.get(`/blob/:id`, async (req, res) => await FileController.get(req, res, options));
router.get(`/:id`, async (req, res) => await FileController.get(req, res, options));
router.get(`/`, async (req, res) => await FileController.get(req, res, options));
router.delete(
`/:id`,
options.authMiddleware,
adminGuard,
async (req, res) => await FileController.delete(req, res, options),
);
router.delete(
`/`,
options.authMiddleware,
adminGuard,
async (req, res) => await FileController.delete(req, res, options),
);
return router;
}
}
const ApiRouter = (options) => FileRouter.router(options);
export { ApiRouter, FileRouter };