Add tileset param validation in tile server

This commit is contained in:
Maciej Ziarkowski 2019-09-17 18:35:05 +01:00
parent 2b1b553a41
commit 269e6ba989
3 changed files with 12 additions and 3 deletions

View File

@ -129,6 +129,7 @@ function getHighlightDataConfig(tileset: string, dataParams: any): DataConfig {
}
export {
BUILDING_LAYER_DEFINITIONS,
getBuildingsDataConfig,
getHighlightDataConfig
};

View File

@ -6,7 +6,12 @@ import { BranchingRenderer } from "./renderers/branchingRenderer";
import { WindowedRenderer } from "./renderers/windowedRenderer";
import { BlankRenderer } from "./renderers/blankRenderer";
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);
@ -67,6 +72,7 @@ const mainRenderer = new WindowedRenderer(
);
export {
allTilesets,
mainRenderer,
tileCache
};

View File

@ -7,7 +7,7 @@ import express from 'express';
import { strictParseInt } from '../parse';
import { TileParams } from './types';
import { mainRenderer } from './rendererDefinition';
import { mainRenderer, allTilesets } from './rendererDefinition';
import asyncController from '../api/routes/asyncController';
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 {
const { tileset, z, x, y, scale } = params;
if (!allTilesets.includes(tileset)) throw new Error('Invalid value for tileset');
const intZ = strictParseInt(z);
if (isNaN(intZ)) throw new Error('Invalid value for z');