Skip to content

Commit 0776c76

Browse files
committed
feat: refactor all apis in new path
Signed-off-by: Umberto Sgueglia <usgueglia@contractor.linuxfoundation.org>
1 parent c0b6d2b commit 0776c76

6 files changed

Lines changed: 56 additions & 0 deletions

File tree

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
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+
}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { oauth2Middleware } from '../middlewares/oauth2Middleware'
1313
import { staticApiKeyMiddleware } from '../middlewares/staticApiKeyMiddleware'
1414

1515
import { memberOrganizationAffiliationsRouter } from './affiliations'
16+
import { akritesRouter } from './akrites'
1617
import { membersRouter } from './members'
1718
import { organizationsRouter } from './organizations'
1819
import { osspreyRouter } from './ossprey'
@@ -29,6 +30,7 @@ export function v1Router(): Router {
2930
router.use('/organizations', oauth2Middleware(AUTH0_CONFIG), organizationsRouter())
3031
router.use('/affiliations', staticApiKeyMiddleware(), memberOrganizationAffiliationsRouter())
3132

33+
// TODO[deprecate]: /packages, /stewardships, /ossprey are superseded by /akrites — remove once consumers have migrated
3234
router.post(
3335
/^\/packages:batch-stewardship\/?$/,
3436
oauth2Middleware(AUTH0_CONFIG),
@@ -41,6 +43,8 @@ export function v1Router(): Router {
4143
router.use('/stewardships', oauth2Middleware(AUTH0_CONFIG), stewardshipsRouter())
4244
router.use('/ossprey', oauth2Middleware(AUTH0_CONFIG), osspreyRouter())
4345

46+
router.use('/akrites', oauth2Middleware(AUTH0_CONFIG), akritesRouter())
47+
4448
router.use(() => {
4549
throw new NotFoundError()
4650
})

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ 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
1011
export function osspreyRouter(): Router {
1112
const router = Router()
1213

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ 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
1516
export function packagesRouter(): Router {
1617
const router = Router()
1718

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { updateStatusHandler } from './updateStatus'
1313

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

16+
// TODO[deprecate]: superseded by /v1/akrites/stewardships — remove once consumers have migrated
1617
export function stewardshipsRouter(): Router {
1718
const router = Router()
1819

services/libs/data-access-layer/src/osspckgs/api.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ export async function getPackagesByStewardshipPurls(
4949
)
5050
}
5151

52+
// TODO[deprecate]: rename to AkritesMetrics once /v1/ossprey is removed
5253
export interface OsspreyMetrics {
5354
totalPackages: number
5455
criticalPackages: number
@@ -60,6 +61,7 @@ export interface OsspreyMetrics {
6061
escalated: number
6162
}
6263

64+
// TODO[deprecate]: rename to getAkritesMetrics once /v1/ossprey is removed
6365
export async function getOsspreyMetrics(qx: QueryExecutor): Promise<OsspreyMetrics> {
6466
const [counts, stewardRow]: [
6567
{

0 commit comments

Comments
 (0)