diff --git a/app/common/ConfigAPI.ts b/app/common/ConfigAPI.ts new file mode 100644 index 00000000..a8a12e83 --- /dev/null +++ b/app/common/ConfigAPI.ts @@ -0,0 +1,31 @@ +import {BaseAPI, IOptions} from "app/common/BaseAPI"; +import {addCurrentOrgToPath} from 'app/common/urlUtils'; + +/** + * An API for accessing the internal Grist configuration, stored in + * config.json. + */ +export class ConfigAPI extends BaseAPI { + constructor(private _homeUrl: string, options: IOptions = {}) { + super(options); + } + + public async getValue(key: string): Promise { + return (await this.requestJson(`${this._url}/api/config/${key}`, {method: 'GET'})).value; + } + + public async setValue(value: any, restart=false): Promise { + await this.request(`${this._url}/api/config`, { + method: 'PATCH', + body: JSON.stringify({config: value, restart}), + }); + } + + public async restartServer(): Promise { + await this.request(`${this._url}/api/admin/restart`, {method: 'POST'}); + } + + private get _url(): string { + return addCurrentOrgToPath(this._homeUrl); + } +}