|
| 1 | +import { Router } from 'express' |
| 2 | + |
| 3 | +import { createRateLimiter } from '@/api/apiRateLimiter' |
| 4 | +import { safeWrap } from '@/middlewares/errorMiddleware' |
| 5 | + |
| 6 | +import { activityFeedHandler } from '../ossprey/activityFeed' |
| 7 | +import { metricsHandler } from '../ossprey/metrics' |
| 8 | +import { packageListHandler } from '../ossprey/packageList' |
| 9 | +import { packageScatterHandler } from '../ossprey/packageScatter' |
| 10 | +import { batchGetStewardship } from '../packages/batchGetStewardship' |
| 11 | +import { getPackage } from '../packages/getPackage' |
| 12 | +import { getPackagesMetrics } from '../packages/getPackagesMetrics' |
| 13 | +import { assignStewardHandler } from '../stewardships/assignSteward' |
| 14 | +import { escalateHandler } from '../stewardships/escalate' |
| 15 | +import { openStewardship } from '../stewardships/openStewardship' |
| 16 | +import { updateStatusHandler } from '../stewardships/updateStatus' |
| 17 | + |
| 18 | +const rateLimiter = createRateLimiter({ max: 60, windowMs: 60 * 1000 }) |
| 19 | + |
| 20 | +export function akritesRouter(): Router { |
| 21 | + const router = Router() |
| 22 | + |
| 23 | + router.get('/metrics', safeWrap(metricsHandler)) |
| 24 | + // /packages/scatter must be registered before /packages to avoid Express treating 'scatter' as a path param |
| 25 | + router.get('/packages/scatter', safeWrap(packageScatterHandler)) |
| 26 | + router.get('/packages', safeWrap(packageListHandler)) |
| 27 | + router.get('/activity', safeWrap(activityFeedHandler)) |
| 28 | + |
| 29 | + // --- packages --- |
| 30 | + router.post(/^\/packages:batch-stewardship\/?$/, rateLimiter, safeWrap(batchGetStewardship)) |
| 31 | + const packagesSubRouter = Router() |
| 32 | + packagesSubRouter.use(rateLimiter) |
| 33 | + packagesSubRouter.get('/metrics', safeWrap(getPackagesMetrics)) |
| 34 | + packagesSubRouter.get('/detail', safeWrap(getPackage)) |
| 35 | + router.use('/packages', packagesSubRouter) |
| 36 | + |
| 37 | + // --- stewardships --- |
| 38 | + const stewardshipsSubRouter = Router() |
| 39 | + stewardshipsSubRouter.use(rateLimiter) |
| 40 | + stewardshipsSubRouter.post('/', safeWrap(openStewardship)) |
| 41 | + stewardshipsSubRouter.put('/:id/steward', safeWrap(assignStewardHandler)) |
| 42 | + stewardshipsSubRouter.put('/:id/escalate', safeWrap(escalateHandler)) |
| 43 | + stewardshipsSubRouter.put('/:id/status', safeWrap(updateStatusHandler)) |
| 44 | + router.use('/stewardships', stewardshipsSubRouter) |
| 45 | + |
| 46 | + return router |
| 47 | +} |
0 commit comments