Add tileset param validation in tile server
This commit is contained in:
parent
2b1b553a41
commit
269e6ba989
@ -129,6 +129,7 @@ function getHighlightDataConfig(tileset: string, dataParams: any): DataConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export {
|
export {
|
||||||
|
BUILDING_LAYER_DEFINITIONS,
|
||||||
getBuildingsDataConfig,
|
getBuildingsDataConfig,
|
||||||
getHighlightDataConfig
|
getHighlightDataConfig
|
||||||
};
|
};
|
||||||
|
@ -6,7 +6,12 @@ import { BranchingRenderer } from "./renderers/branchingRenderer";
|
|||||||
import { WindowedRenderer } from "./renderers/windowedRenderer";
|
import { WindowedRenderer } from "./renderers/windowedRenderer";
|
||||||
import { BlankRenderer } from "./renderers/blankRenderer";
|
import { BlankRenderer } from "./renderers/blankRenderer";
|
||||||
import { DatasourceRenderer } from "./renderers/datasourceRenderer";
|
import { DatasourceRenderer } from "./renderers/datasourceRenderer";
|
||||||
import { getBuildingsDataConfig, getHighlightDataConfig } from "./dataDefinition";
|
import { getBuildingsDataConfig, getHighlightDataConfig, BUILDING_LAYER_DEFINITIONS } from "./dataDefinition";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A list of all tilesets handled by the tile server
|
||||||
|
*/
|
||||||
|
const allTilesets = ['highlight', ...Object.keys(BUILDING_LAYER_DEFINITIONS)];
|
||||||
|
|
||||||
const buildingDataRenderer = new DatasourceRenderer(getBuildingsDataConfig);
|
const buildingDataRenderer = new DatasourceRenderer(getBuildingsDataConfig);
|
||||||
|
|
||||||
@ -67,6 +72,7 @@ const mainRenderer = new WindowedRenderer(
|
|||||||
);
|
);
|
||||||
|
|
||||||
export {
|
export {
|
||||||
|
allTilesets,
|
||||||
mainRenderer,
|
mainRenderer,
|
||||||
tileCache
|
tileCache
|
||||||
};
|
};
|
||||||
|
@ -7,7 +7,7 @@ import express from 'express';
|
|||||||
|
|
||||||
import { strictParseInt } from '../parse';
|
import { strictParseInt } from '../parse';
|
||||||
import { TileParams } from './types';
|
import { TileParams } from './types';
|
||||||
import { mainRenderer } from './rendererDefinition';
|
import { mainRenderer, allTilesets } from './rendererDefinition';
|
||||||
import asyncController from '../api/routes/asyncController';
|
import asyncController from '../api/routes/asyncController';
|
||||||
|
|
||||||
const handleTileRequest = asyncController(async function (req: express.Request, res: express.Response) {
|
const handleTileRequest = asyncController(async function (req: express.Request, res: express.Response) {
|
||||||
@ -37,6 +37,8 @@ router.get('/:tileset/:z/:x/:y(\\d+):scale(@\\dx)?.png', handleTileRequest);
|
|||||||
function parseTileParams(params: any): TileParams {
|
function parseTileParams(params: any): TileParams {
|
||||||
const { tileset, z, x, y, scale } = params;
|
const { tileset, z, x, y, scale } = params;
|
||||||
|
|
||||||
|
if (!allTilesets.includes(tileset)) throw new Error('Invalid value for tileset');
|
||||||
|
|
||||||
const intZ = strictParseInt(z);
|
const intZ = strictParseInt(z);
|
||||||
if (isNaN(intZ)) throw new Error('Invalid value for z');
|
if (isNaN(intZ)) throw new Error('Invalid value for z');
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user