mirror of
https://github.com/ONLYOFFICE/server.git
synced 2026-04-07 14:04:35 +08:00
[feature] Add discovery handler "formats.json"
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@ -11,4 +11,5 @@ node_modules
|
|||||||
local-development-*.json
|
local-development-*.json
|
||||||
*.pyc
|
*.pyc
|
||||||
run-develop-local.py
|
run-develop-local.py
|
||||||
runtime.json
|
runtime.json
|
||||||
|
document-formats/
|
||||||
@ -507,6 +507,10 @@
|
|||||||
"themes": {
|
"themes": {
|
||||||
"uri": "/web-apps/apps/common/main/resources/themes"
|
"uri": "/web-apps/apps/common/main/resources/themes"
|
||||||
},
|
},
|
||||||
|
"documentFormats": {
|
||||||
|
"path": "./document-formats/formats.json",
|
||||||
|
"cacheTTL": "5m"
|
||||||
|
},
|
||||||
"editor": {
|
"editor": {
|
||||||
"spellcheckerUrl": "",
|
"spellcheckerUrl": "",
|
||||||
"reconnection": {
|
"reconnection": {
|
||||||
|
|||||||
@ -453,6 +453,44 @@ docsCoServer.install(server, app, () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
app.get('/formats.json', apicache.middleware('5 minutes'), (req, res) => {
|
||||||
|
return co(function* () {
|
||||||
|
let formats = null;
|
||||||
|
const ctx = new operationContext.Context();
|
||||||
|
try {
|
||||||
|
ctx.initFromRequest(req);
|
||||||
|
yield ctx.initTenantCache();
|
||||||
|
ctx.logger.info('formats.json start');
|
||||||
|
|
||||||
|
if (!config.has('services.CoAuthoring.documentFormats.path')) {
|
||||||
|
ctx.logger.warn('formats.json: documentFormats.path not configured');
|
||||||
|
res.sendStatus(404);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const formatsPath = config.get('services.CoAuthoring.documentFormats.path');
|
||||||
|
const resolvedPath = path.resolve(__dirname, '../../..', formatsPath);
|
||||||
|
|
||||||
|
ctx.logger.debug('formats.json path:%s', resolvedPath);
|
||||||
|
|
||||||
|
const data = yield utils.readFile(resolvedPath, true);
|
||||||
|
const text = new TextDecoder('utf-8', {ignoreBOM: false}).decode(data);
|
||||||
|
formats = JSON.parse(text);
|
||||||
|
|
||||||
|
ctx.logger.debug('formats.json loaded successfully');
|
||||||
|
} catch (err) {
|
||||||
|
ctx.logger.error('formats.json error:%s', err.stack);
|
||||||
|
} finally {
|
||||||
|
if (formats) {
|
||||||
|
res.setHeader('Content-Type', 'application/json');
|
||||||
|
res.send(formats);
|
||||||
|
} else {
|
||||||
|
res.sendStatus(404);
|
||||||
|
}
|
||||||
|
ctx.logger.info('formats.json end');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
app.get('/document_editor_service_worker.js', apicache.middleware('5 min'), async (req, res) => {
|
app.get('/document_editor_service_worker.js', apicache.middleware('5 min'), async (req, res) => {
|
||||||
const staticContent = config.get('services.CoAuthoring.server.static_content');
|
const staticContent = config.get('services.CoAuthoring.server.static_content');
|
||||||
if (staticContent['/sdkjs']) {
|
if (staticContent['/sdkjs']) {
|
||||||
|
|||||||
@ -13,6 +13,7 @@
|
|||||||
"@eslint/js": "9.16.0",
|
"@eslint/js": "9.16.0",
|
||||||
"@jest/globals": "29.7.0",
|
"@jest/globals": "29.7.0",
|
||||||
"cross-env": "7.0.3",
|
"cross-env": "7.0.3",
|
||||||
|
"degit": "2.8.4",
|
||||||
"eslint": "9.16.0",
|
"eslint": "9.16.0",
|
||||||
"eslint-config-prettier": "10.1.8",
|
"eslint-config-prettier": "10.1.8",
|
||||||
"eslint-plugin-react": "^7.37.2",
|
"eslint-plugin-react": "^7.37.2",
|
||||||
@ -31,6 +32,7 @@
|
|||||||
"format:check": "prettier . --check",
|
"format:check": "prettier . --check",
|
||||||
"code:check": "run-s lint:check format:check",
|
"code:check": "run-s lint:check format:check",
|
||||||
"code:fix": "run-s lint:fix format:fix",
|
"code:fix": "run-s lint:fix format:fix",
|
||||||
|
"download:document-formats": "degit ONLYOFFICE/document-formats document-formats --force",
|
||||||
"perf-expired": "cd ./DocService&& cross-env NODE_ENV=development-windows NODE_CONFIG_DIR=../Common/config node ../tests/perf/checkFileExpire.js",
|
"perf-expired": "cd ./DocService&& cross-env NODE_ENV=development-windows NODE_CONFIG_DIR=../Common/config node ../tests/perf/checkFileExpire.js",
|
||||||
"unit tests": "cd ./DocService && jest unit --inject-globals=false --config=../tests/jest.config.js",
|
"unit tests": "cd ./DocService && jest unit --inject-globals=false --config=../tests/jest.config.js",
|
||||||
"integration tests with server instance": "cd ./DocService && jest integration/withServerInstance --inject-globals=false --config=../tests/jest.config.js",
|
"integration tests with server instance": "cd ./DocService && jest integration/withServerInstance --inject-globals=false --config=../tests/jest.config.js",
|
||||||
@ -56,6 +58,6 @@
|
|||||||
"3d-party-lic-report:FileConverter": "run-s 3d-party-lic-json:FileConverter 3d-party-lic-downloader 3d-party-lic-md",
|
"3d-party-lic-report:FileConverter": "run-s 3d-party-lic-json:FileConverter 3d-party-lic-downloader 3d-party-lic-md",
|
||||||
"3d-party-lic-report:Metrics": "run-s 3d-party-lic-json:Metrics 3d-party-lic-downloader 3d-party-lic-md",
|
"3d-party-lic-report:Metrics": "run-s 3d-party-lic-json:Metrics 3d-party-lic-downloader 3d-party-lic-md",
|
||||||
"3d-party-lic-report": "run-s 3d-party-lic-md-header 3d-party-lic-report:*",
|
"3d-party-lic-report": "run-s 3d-party-lic-md-header 3d-party-lic-report:*",
|
||||||
"build": "run-p install:*"
|
"build": "run-s download:document-formats && run-p install:*"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user