Skip to content

Commit

Permalink
Merge pull request #42086 from pblottiere/wms_params_cst
Browse files Browse the repository at this point in the history
Test a more direct way to init QgsWmsParameters
  • Loading branch information
pblottiere committed Mar 8, 2021
2 parents 875ba80 + b116c19 commit a3be580
Show file tree
Hide file tree
Showing 8 changed files with 24 additions and 7 deletions.
3 changes: 2 additions & 1 deletion src/server/qgsserverparameters.cpp
Expand Up @@ -454,7 +454,8 @@ QUrlQuery QgsServerParameters::urlQuery() const
const auto constMap( toMap().toStdMap() );
for ( const auto &param : constMap )
{
query.addQueryItem( param.first, param.second );
const QString value = QString( param.second ).replace( '+', QLatin1String( "%2B" ) );
query.addQueryItem( param.first, value );
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/server/services/wms/qgsdxfwriter.cpp
Expand Up @@ -26,7 +26,7 @@ namespace QgsWms
QgsServerResponse &response )
{
// get wms parameters from query
QgsWmsParameters parameters( QUrlQuery( request.url() ) );
const QgsWmsParameters parameters( request.serverParameters() );

// prepare render context
QgsWmsRenderContext context( project, serverIface );
Expand Down
2 changes: 1 addition & 1 deletion src/server/services/wms/qgswms.cpp
Expand Up @@ -65,7 +65,7 @@ namespace QgsWms
void executeRequest( const QgsServerRequest &request, QgsServerResponse &response,
const QgsProject *project ) override
{
const QgsWmsParameters parameters( QUrlQuery( request.url() ) );
const QgsWmsParameters parameters( request.serverParameters() );

QString version = parameters.version();
if ( version.isEmpty() )
Expand Down
2 changes: 1 addition & 1 deletion src/server/services/wms/qgswmsgetfeatureinfo.cpp
Expand Up @@ -29,7 +29,7 @@ namespace QgsWms
QgsServerResponse &response )
{
// get wms parameters from query
QgsWmsParameters parameters( QUrlQuery( request.url() ) );
QgsWmsParameters parameters( request.serverParameters() );

// WIDTH and HEIGHT are not mandatory, but we need to set a default size
if ( ( parameters.widthAsInt() <= 0
Expand Down
2 changes: 1 addition & 1 deletion src/server/services/wms/qgswmsgetlegendgraphics.cpp
Expand Up @@ -41,7 +41,7 @@ namespace QgsWms
QgsServerResponse &response )
{
// get parameters from query
QgsWmsParameters parameters( QUrlQuery( request.url() ) );
QgsWmsParameters parameters( request.serverParameters() );

// check parameters validity
// FIXME fail with png + mode
Expand Down
2 changes: 1 addition & 1 deletion src/server/services/wms/qgswmsgetmap.cpp
Expand Up @@ -33,7 +33,7 @@ namespace QgsWms
QgsServerResponse &response )
{
// get wms parameters from query
const QgsWmsParameters parameters( QUrlQuery( request.url() ) );
const QgsWmsParameters parameters( request.serverParameters() );

// prepare render context
QgsWmsRenderContext context( project, serverIface );
Expand Down
2 changes: 1 addition & 1 deletion src/server/services/wms/qgswmsgetprint.cpp
Expand Up @@ -30,7 +30,7 @@ namespace QgsWms
QgsServerResponse &response )
{
// get wms parameters from query
const QgsWmsParameters parameters( QUrlQuery( request.url() ) );
const QgsWmsParameters parameters( request.serverParameters() );

// GetPrint supports svg/png/pdf
const QgsWmsParameters::Format format = parameters.format();
Expand Down
16 changes: 16 additions & 0 deletions tests/src/server/wms/test_qgsserver_wms_parameters.cpp
Expand Up @@ -29,6 +29,7 @@ class TestQgsServerWmsParameters : public QObject
void cleanupTestCase();

void external_layers();
void percent_encoding();
};

void TestQgsServerWmsParameters::initTestCase()
Expand Down Expand Up @@ -68,5 +69,20 @@ void TestQgsServerWmsParameters::external_layers()
QCOMPARE( layer_params.mExternalUri, QString( "layers=layer_2_name&url=http://url_2" ) );
}

void TestQgsServerWmsParameters::percent_encoding()
{
// '+' in its encoded ('%2B') form is transformed in '+' sign and
// forwarded to parameters subclasses
QUrlQuery query;
query.addQueryItem( "MYPARAM", QString( "my%1value" ).arg( QLatin1String( "%2B" ) ) );

QgsServerParameters params;
params.load( query );
QCOMPARE( params.value( "MYPARAM" ), QString( "my+value" ) );

QgsWms::QgsWmsParameters wmsParams( params );
QCOMPARE( wmsParams.value( "MYPARAM" ), QString( "my+value" ) );
}

QGSTEST_MAIN( TestQgsServerWmsParameters )
#include "test_qgsserver_wms_parameters.moc"

0 comments on commit a3be580

Please sign in to comment.