22 lines
882 B
TypeScript
22 lines
882 B
TypeScript
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
|
|
import type { RouteRulesService } from '../../features/routing/index.js';
|
|
|
|
interface RouteRulesRouteDependencies {
|
|
routeRules: RouteRulesService;
|
|
readBody(req: IncomingMessage): Promise<Record<string, unknown>>;
|
|
sendState(res: ServerResponse): Promise<void>;
|
|
}
|
|
|
|
export function createRouteRulesRoute(dependencies: RouteRulesRouteDependencies) {
|
|
return {
|
|
async handle(req: IncomingMessage, res: ServerResponse) {
|
|
if (req.method !== 'PUT' || !['/api/route-rules', '/api/route-rules/v2'].includes(req.url || '')) return false;
|
|
const { rules, expectedRulesRevision, rulesContractVersion } = await dependencies.readBody(req);
|
|
await dependencies.routeRules.update(rules, expectedRulesRevision, rulesContractVersion);
|
|
await dependencies.sendState(res);
|
|
return true;
|
|
},
|
|
};
|
|
}
|