diff --git a/src/servers/membrane-orientation/web-api.ts b/src/servers/membrane-orientation/web-api.ts index ed2f8f15c..bbdc2d7c8 100644 --- a/src/servers/membrane-orientation/web-api.ts +++ b/src/servers/membrane-orientation/web-api.ts @@ -49,7 +49,8 @@ async function predictMembraneOrientation(req: express.Request, res: express.Res try { const ctx = { runtime: SyncRuntimeContext, assetManager }; - const entryId = req.params.id; + // Make sure this is a string, taking the first element if it's an array (which can happen if the query parameter is repeated) + const entryId = Array.isArray(req.params.id) ? req.params.id[0] : req.params.id; const assemblyId = req.query.assemblyId as string ?? '1'; const p = parseParams(req); ConsoleLogger.log('predictMembraneOrientation', `${entryId}-${assemblyId} with params: ${JSON.stringify(p)}`); diff --git a/src/servers/model/server/api-web.ts b/src/servers/model/server/api-web.ts index 5e0282713..32d639b19 100644 --- a/src/servers/model/server/api-web.ts +++ b/src/servers/model/server/api-web.ts @@ -54,7 +54,7 @@ export function createResultWriter(response: express.Response, params: ResultWri function mapQuery(app: express.Express, queryName: string, queryDefinition: QueryDefinition) { function createJob(queryParams: any, req: express.Request, res: express.Response) { - const entryId = req.params.id; + const entryId = (Array.isArray(req.params.id) ? req.params.id[0] : req.params.id) || ''; const commonParams = normalizeRestCommonParams(req.query); const resultWriterParams = { encoding: commonParams.encoding!, download: !!commonParams.download, filename: commonParams.filename!, entryId, queryName }; const jobId = JobManager.add({ @@ -93,7 +93,9 @@ function serveStatic(req: express.Request, res: express.Response) { : req.params.source; const id = req.params.id; - const [fn, format] = mapSourceAndIdToFilename(source, id); + const stringSource = (Array.isArray(source) ? source[0] : source) || ''; + const stringId = (Array.isArray(id) ? id[0] : id) || ''; + const [fn, format] = mapSourceAndIdToFilename(stringSource, stringId); const binary = format === 'bcif' || fn.indexOf('.bcif') > 0; if (!fn || !fs.existsSync(fn)) { diff --git a/src/servers/plugin-state/index.ts b/src/servers/plugin-state/index.ts index 78c52b996..489f95b9c 100644 --- a/src/servers/plugin-state/index.ts +++ b/src/servers/plugin-state/index.ts @@ -105,7 +105,7 @@ function mapPath(path: string) { } app.get(mapPath(`/get/:id`), (req, res) => { - const id: string = req.params.id || ''; + const id = (Array.isArray(req.params.id) ? req.params.id[0] : req.params.id) || ''; console.log('Reading', id); if (id.length === 0 || id.indexOf('.') >= 0 || id.indexOf('/') >= 0 || id.indexOf('\\') >= 0) { res.status(404); diff --git a/src/servers/volume/server/web-api.ts b/src/servers/volume/server/web-api.ts index 0b034bcc0..632ece5d6 100644 --- a/src/servers/volume/server/web-api.ts +++ b/src/servers/volume/server/web-api.ts @@ -183,7 +183,9 @@ async function queryBox(req: express.Request, res: express.Response, params: Dat return; } - const outputFilename = Api.getOutputFilename(req.params.source, req.params.id, params); + const stringSource = (Array.isArray(req.params.source) ? req.params.source[0] : req.params.source) || ''; + const stringId = (Array.isArray(req.params.id) ? req.params.id[0] : req.params.id) || ''; + const outputFilename = Api.getOutputFilename(stringSource, stringId, params); const response = wrapResponse(outputFilename, res); try {