Skip to content

Commit 03f7b55

Browse files
committed
feat: add comments
Signed-off-by: Umberto Sgueglia <usgueglia@contractor.linuxfoundation.org>
1 parent 0776c76 commit 03f7b55

3 files changed

Lines changed: 21 additions & 7 deletions

File tree

backend/src/api/public/v1/akrites/index.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,28 +15,37 @@ import { escalateHandler } from '../stewardships/escalate'
1515
import { openStewardship } from '../stewardships/openStewardship'
1616
import { updateStatusHandler } from '../stewardships/updateStatus'
1717

18-
const rateLimiter = createRateLimiter({ max: 60, windowMs: 60 * 1000 })
18+
// Separate instances match the original per-router isolation: packages and stewardships each had
19+
// their own createRateLimiter() call, giving independent 60 req/min buckets per IP.
20+
const packagesRateLimiter = createRateLimiter({ max: 60, windowMs: 60 * 1000 })
21+
const stewardshipsRateLimiter = createRateLimiter({ max: 60, windowMs: 60 * 1000 })
1922

2023
export function akritesRouter(): Router {
2124
const router = Router()
2225

2326
router.get('/metrics', safeWrap(metricsHandler))
24-
// /packages/scatter must be registered before /packages to avoid Express treating 'scatter' as a path param
27+
// /packages/scatter registered before router.use('/packages', ...) so Express evaluates this
28+
// explicit route first; without this ordering the sub-router would receive the request first
29+
// and call next() on no match, adding unnecessary overhead.
2530
router.get('/packages/scatter', safeWrap(packageScatterHandler))
2631
router.get('/packages', safeWrap(packageListHandler))
2732
router.get('/activity', safeWrap(activityFeedHandler))
2833

2934
// --- packages ---
30-
router.post(/^\/packages:batch-stewardship\/?$/, rateLimiter, safeWrap(batchGetStewardship))
35+
router.post(
36+
/^\/packages:batch-stewardship\/?$/,
37+
packagesRateLimiter,
38+
safeWrap(batchGetStewardship),
39+
)
3140
const packagesSubRouter = Router()
32-
packagesSubRouter.use(rateLimiter)
41+
packagesSubRouter.use(packagesRateLimiter)
3342
packagesSubRouter.get('/metrics', safeWrap(getPackagesMetrics))
3443
packagesSubRouter.get('/detail', safeWrap(getPackage))
3544
router.use('/packages', packagesSubRouter)
3645

3746
// --- stewardships ---
3847
const stewardshipsSubRouter = Router()
39-
stewardshipsSubRouter.use(rateLimiter)
48+
stewardshipsSubRouter.use(stewardshipsRateLimiter)
4049
stewardshipsSubRouter.post('/', safeWrap(openStewardship))
4150
stewardshipsSubRouter.put('/:id/steward', safeWrap(assignStewardHandler))
4251
stewardshipsSubRouter.put('/:id/escalate', safeWrap(escalateHandler))

backend/src/api/public/v1/ossprey/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ import { metricsHandler } from './metrics'
77
import { packageListHandler } from './packageList'
88
import { packageScatterHandler } from './packageScatter'
99

10-
// TODO[deprecate]: superseded by /v1/akrites/ossprey — remove once consumers have migrated
10+
// TODO[deprecate]: superseded by /v1/akrites — ossprey endpoints are now at /v1/akrites/metrics,
11+
// /v1/akrites/packages, /v1/akrites/packages/scatter, /v1/akrites/activity — remove once consumers have migrated
1112
export function osspreyRouter(): Router {
1213
const router = Router()
1314

backend/src/api/public/v1/packages/index.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@ import { listPackages } from './listPackages'
1212

1313
const rateLimiter = createRateLimiter({ max: 60, windowMs: 60 * 1000 })
1414

15-
// TODO[deprecate]: superseded by /v1/akrites/packages — remove once consumers have migrated
15+
// TODO[deprecate]: /packages/metrics and /packages/detail are superseded by /v1/akrites/packages/metrics
16+
// and /v1/akrites/packages/detail — remove once consumers have migrated.
17+
// NOTE: GET /packages (listPackages) is intentionally NOT replicated in /v1/akrites because it has a
18+
// different response shape from GET /v1/akrites/packages (ossprey packageListHandler). Before removing,
19+
// verify no consumer calls GET /v1/packages — if unused, delete listPackages and this route entirely.
1620
export function packagesRouter(): Router {
1721
const router = Router()
1822

0 commit comments

Comments
 (0)