gristlabs_grist-core/app/server/lib/ConfigBackendAPI.ts
Jordi Gutiérrez Hermoso 2d85ed1bfe config: new API endpoint
This adds PATCH and GET endpoints to handle `config.json`.
2024-07-30 13:41:47 -04:00

36 lines
1.2 KiB
TypeScript

import * as express from 'express';
import {expressWrap} from 'app/server/lib/expressWrap';
import {getGlobalConfig} from 'app/server/lib/globalConfig';
import log from "app/server/lib/log";
export class ConfigBackendAPI {
public addEndpoints(app: express.Express, requireInstallAdmin: express.RequestHandler) {
app.get('/api/config/:key', requireInstallAdmin, expressWrap((req, resp) => {
log.debug('config: requesting configuration', req.params);
// Only one key is valid for now
if (req.params.key === 'edition') {
resp.send({value: getGlobalConfig().edition.get()});
} else {
resp.status(404).send({ error: 'Configuration key not found.' });
}
}));
app.patch('/api/config', requireInstallAdmin, expressWrap(async (req, resp) => {
const config = req.body.config;
log.debug('config: received new configuration item', config);
// Only one key is valid for now
if(config.edition !== undefined) {
await getGlobalConfig().edition.set(config.edition);
resp.send({ msg: 'ok' });
} else {
resp.status(400).send({ error: 'Invalid configuration key' });
}
}));
}
}