diff --git a/pkg/api/map_image_proxies.go b/pkg/api/map_image_proxies.go index ecfb8acb..13796959 100644 --- a/pkg/api/map_image_proxies.go +++ b/pkg/api/map_image_proxies.go @@ -36,6 +36,16 @@ func (p *MapImageProxy) MapTileImageProxyHandler(c *core.Context) (*httputil.Rev return nil, errs.ErrMapProviderNotCurrent } + zoomLevel := c.Param("zoomLevel") + coordinateX := c.Param("coordinateX") + fileName := c.Param("fileName") + fileNameParts := strings.Split(fileName, ".") + coordinateY := fileNameParts[0] + + if len(fileNameParts) != 2 || fileNameParts[len(fileNameParts)-1] != "png" { + return nil, errs.ErrImageExtensionNotSupported + } + if mapProvider == settings.OpenStreetMapProvider { targetUrl = openStreetMapTileImageUrlFormat } else if mapProvider == settings.OpenStreetMapHumanitarianStyleProvider { @@ -60,11 +70,6 @@ func (p *MapImageProxy) MapTileImageProxyHandler(c *core.Context) (*httputil.Rev } director := func(req *http.Request) { - zoomLevel := c.Param("zoomLevel") - coordinateX := c.Param("coordinateX") - fileName := c.Param("fileName") - coordinateY := strings.Split(fileName, ".")[0] - imageRawUrl := targetUrl imageRawUrl = strings.Replace(imageRawUrl, "{z}", zoomLevel, -1) imageRawUrl = strings.Replace(imageRawUrl, "{x}", coordinateX, -1) diff --git a/pkg/errs/map_image_proxy.go b/pkg/errs/map_image_proxy.go index 12948177..93782141 100644 --- a/pkg/errs/map_image_proxy.go +++ b/pkg/errs/map_image_proxy.go @@ -4,5 +4,6 @@ import "net/http" // Error codes related to map image proxy var ( - ErrMapProviderNotCurrent = NewNormalError(NormalSubcategoryMapProxy, 0, http.StatusBadRequest, "specified map provider is not set") + ErrMapProviderNotCurrent = NewNormalError(NormalSubcategoryMapProxy, 0, http.StatusBadRequest, "specified map provider is not set") + ErrImageExtensionNotSupported = NewNormalError(NormalSubcategoryMapProxy, 0, http.StatusNotFound, "specified image extension is not supported") )