Skip to content

Commit bc72ff2

Browse files
committed
Check parameters before calling the renderer
1 parent b2aa978 commit bc72ff2

File tree

3 files changed

+25
-9
lines changed

3 files changed

+25
-9
lines changed

src/server/services/wms/qgswmsgetlegendgraphics.cpp

+24
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ namespace QgsWms
3434
// get parameters from query
3535
QgsWmsParameters parameters( QUrlQuery( request.url() ) );
3636

37+
// check parameters validity
38+
checkParameters( parameters );
39+
3740
// init render context
3841
QgsWmsRenderContext context( project, serverIface );
3942
context.setFlag( QgsWmsRenderContext::UseScaleDenominator );
@@ -100,5 +103,26 @@ namespace QgsWms
100103
throw QgsException( QStringLiteral( "Failed to compute GetLegendGraphics image" ) );
101104
}
102105
}
106+
107+
void checkParameters( const QgsWmsParameters &parameters )
108+
{
109+
if ( parameters.allLayersNickname().isEmpty() )
110+
{
111+
throw QgsBadRequestException( QgsServiceException::QGIS_MISSING_PARAMETER_VALUE,
112+
parameters[QgsWmsParameter::LAYERS] );
113+
}
114+
115+
if ( parameters.format() == QgsWmsParameters::Format::NONE )
116+
{
117+
throw QgsBadRequestException( QgsServiceException::QGIS_MISSING_PARAMETER_VALUE,
118+
parameters[QgsWmsParameter::FORMAT] );
119+
}
120+
121+
if ( ! parameters.bbox().isEmpty() && !parameters.rule().isEmpty() )
122+
{
123+
throw QgsBadRequestException( QgsServiceException::QGIS_INVALID_PARAMETER_VALUE,
124+
QStringLiteral( "BBOX parameter cannot be combined with RULE." ) );
125+
}
126+
}
103127
} // namespace QgsWms
104128

src/server/services/wms/qgswmsgetlegendgraphics.h

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ namespace QgsWms
2929
const QString &version, const QgsServerRequest &request,
3030
QgsServerResponse &response );
3131

32+
void checkParameters( const QgsWmsParameters &parameters );
3233
} // namespace QgsWms
3334

3435

src/server/services/wms/qgswmsrenderer.cpp

-9
Original file line numberDiff line numberDiff line change
@@ -129,15 +129,6 @@ namespace QgsWms
129129

130130
QImage *QgsRenderer::getLegendGraphics()
131131
{
132-
// check parameters
133-
if ( mWmsParameters.allLayersNickname().isEmpty() )
134-
throw QgsBadRequestException( QgsServiceException::QGIS_MISSING_PARAMETER_VALUE,
135-
mWmsParameters[QgsWmsParameter::LAYERS] );
136-
137-
if ( mWmsParameters.format() == QgsWmsParameters::Format::NONE )
138-
throw QgsBadRequestException( QgsServiceException::QGIS_MISSING_PARAMETER_VALUE,
139-
mWmsParameters[QgsWmsParameter::FORMAT] );
140-
141132
// get layers
142133
std::unique_ptr<QgsLayerRestorer> restorer;
143134
restorer.reset( new QgsLayerRestorer( mContext.layers() ) );

0 commit comments

Comments
 (0)