Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 1249c70

Browse files
authoredDec 8, 2021
Merge pull request #46412 from benoitdm-oslandia/backport-46401-to-queued_ltr_backports
fix percent encoding in wms server parameter
2 parents 701bced + 9a91d75 commit 1249c70

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed
 

‎src/server/qgsserverparameters.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -441,7 +441,8 @@ QUrlQuery QgsServerParameters::urlQuery() const
441441

442442
for ( auto param : toMap().toStdMap() )
443443
{
444-
query.addQueryItem( param.first, param.second );
444+
const QString value = QUrl::toPercentEncoding( QString( param.second ) );
445+
query.addQueryItem( param.first, value );
445446
}
446447
}
447448

‎tests/src/server/wms/test_qgsserver_wms_parameters.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ class TestQgsServerWmsParameters : public QObject
2929
void cleanupTestCase();
3030

3131
void external_layers();
32+
33+
void percent_encoding();
3234
};
3335

3436
void TestQgsServerWmsParameters::initTestCase()
@@ -75,5 +77,25 @@ void TestQgsServerWmsParameters::external_layers()
7577
QCOMPARE( layers_params[2].mOpacity, 125 );
7678
}
7779

80+
void TestQgsServerWmsParameters::percent_encoding()
81+
{
82+
// '+' in its encoded ('%2B') form is transformed in '+' sign and
83+
// forwarded to parameters subclasses
84+
QUrlQuery query;
85+
query.addQueryItem( "MYPARAM", QString( "a%2Cb%2Cc%2C%C3%A4%C3%B6s+%2B+%25%26%23" ) );
86+
87+
QgsServerParameters params;
88+
params.load( query );
89+
QCOMPARE( params.value( "MYPARAM" ), QString( "a,b,c,äös + %&#" ) );
90+
91+
const QgsWms::QgsWmsParameters wmsParams( params );
92+
QCOMPARE( wmsParams.value( "MYPARAM" ), QString( "a,b,c,äös + %&#" ) );
93+
94+
// back to urlQuery
95+
QgsServerParameters params2;
96+
params2.load( params.urlQuery() );
97+
QCOMPARE( params2.value( "MYPARAM" ), QString( "a,b,c,äös + %&#" ) );
98+
}
99+
78100
QGSTEST_MAIN( TestQgsServerWmsParameters )
79101
#include "test_qgsserver_wms_parameters.moc"

0 commit comments

Comments
 (0)
Please sign in to comment.