0.1.3•Updated 6 months ago
import { REST_Wrapper } from "@infinity-beyond/classes/rest_wrapper.ts";
import { FeatureFlag, type I_FeatureFlag } from "@infinity-beyond/modules/features/feature_flag.ts";
import { HandleBody } from "@infinity-beyond/infinity.ts";
export class FeatureFlagRest extends REST_Wrapper {
constructor() {
super();
this.get('/', async (_req, _ctx) => {
return Response.json({
flags: FeatureFlag.entries()
})
})
this.get('/:key', async (_req, ctx) => {
const flag = FeatureFlag.has(ctx.params.key) ? FeatureFlag.get(ctx.params.key) : ({
key: ctx.params.key,
value: null,
description: null
}) satisfies Omit<I_FeatureFlag, 'value'> & { value: boolean | null };
return Response.json({
flag
});
});
this.post('/', async (req, ctx) => {
const { body } = await HandleBody(req);
for(const [key, value] of Object.entries(body ?? {})) {
if(FeatureFlag.has(key)) (FeatureFlag as any).set(key, value, ctx);
}
return Response.json({ success: true });
})
}
}