From 9d9e94e6b963b7de53460e37a3e72161d1170679 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Brunner?= Date: Thu, 8 Jun 2017 15:19:31 +0200 Subject: [PATCH] Fix the mandatory OnlineResource --- .../services/wms/qgswmsgetcapabilities.cpp | 18 ++++++++++-------- .../services/wms/qgswmsgetcapabilities.h | 3 ++- tests/src/python/test_qgsserver_wms.py | 3 +-- tests/testdata/qgis_server/getcapabilities.txt | 1 + .../qgis_server/getcapabilities_inspire.txt | 1 + .../qgis_server/getprojectsettings.txt | 1 + 6 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/server/services/wms/qgswmsgetcapabilities.cpp b/src/server/services/wms/qgswmsgetcapabilities.cpp index a97a8ef864f..8c38d9d3a6f 100644 --- a/src/server/services/wms/qgswmsgetcapabilities.cpp +++ b/src/server/services/wms/qgswmsgetcapabilities.cpp @@ -195,7 +195,7 @@ namespace QgsWms doc.appendChild( wmsCapabilitiesElement ); //INSERT Service - wmsCapabilitiesElement.appendChild( getServiceElement( doc, project, version ) ); + wmsCapabilitiesElement.appendChild( getServiceElement( doc, project, version, request ) ); //wms:Capability element QDomElement capabilityElement = getCapabilityElement( doc, project, version, request, projectSettings ); @@ -222,7 +222,8 @@ namespace QgsWms return doc; } - QDomElement getServiceElement( QDomDocument &doc, const QgsProject *project, const QString &version ) + QDomElement getServiceElement( QDomDocument &doc, const QgsProject *project, const QString &version, + const QgsServerRequest &request ) { bool sia2045 = QgsServerProjectUtils::wmsInfoFormatSia2045( *project ); @@ -283,14 +284,15 @@ namespace QgsWms } QString onlineResource = QgsServerProjectUtils::owsServiceOnlineResource( *project ); - if ( !onlineResource.isEmpty() ) + if ( onlineResource.isEmpty() ) { - QDomElement onlineResourceElem = doc.createElement( QStringLiteral( "OnlineResource" ) ); - onlineResourceElem.setAttribute( QStringLiteral( "xmlns:xlink" ), QStringLiteral( "http://www.w3.org/1999/xlink" ) ); - onlineResourceElem.setAttribute( QStringLiteral( "xlink:type" ), QStringLiteral( "simple" ) ); - onlineResourceElem.setAttribute( QStringLiteral( "xlink:href" ), onlineResource ); - serviceElem.appendChild( onlineResourceElem ); + onlineResource = serviceUrl( request, project ).toString(); } + QDomElement onlineResourceElem = doc.createElement( QStringLiteral( "OnlineResource" ) ); + onlineResourceElem.setAttribute( QStringLiteral( "xmlns:xlink" ), QStringLiteral( "http://www.w3.org/1999/xlink" ) ); + onlineResourceElem.setAttribute( QStringLiteral( "xlink:type" ), QStringLiteral( "simple" ) ); + onlineResourceElem.setAttribute( QStringLiteral( "xlink:href" ), onlineResource ); + serviceElem.appendChild( onlineResourceElem ); QString contactPerson = QgsServerProjectUtils::owsServiceContactPerson( *project ); QString contactOrganization = QgsServerProjectUtils::owsServiceContactOrganization( *project ); diff --git a/src/server/services/wms/qgswmsgetcapabilities.h b/src/server/services/wms/qgswmsgetcapabilities.h index 918f3540375..830b7f9dc1a 100644 --- a/src/server/services/wms/qgswmsgetcapabilities.h +++ b/src/server/services/wms/qgswmsgetcapabilities.h @@ -61,7 +61,8 @@ namespace QgsWms /** * Create Service element for get capabilities document */ - QDomElement getServiceElement( QDomDocument &doc, const QgsProject *project, const QString &version ); + QDomElement getServiceElement( QDomDocument &doc, const QgsProject *project, const QString &version, + const QgsServerRequest &request ); /** Output GetCapabilities response */ diff --git a/tests/src/python/test_qgsserver_wms.py b/tests/src/python/test_qgsserver_wms.py index 076378b467b..051f5976fe9 100644 --- a/tests/src/python/test_qgsserver_wms.py +++ b/tests/src/python/test_qgsserver_wms.py @@ -572,8 +572,7 @@ class TestQgsServerWMS(QgsServerTestBase): item_found = False for item in str(r).split("\\n"): - if "OnlineResource" in item: - self.assertEqual("xlink:href=\"my_wms_advertised_url?" in item, True) + if "OnlineResource" in item and "xlink:href=\"my_wms_advertised_url?" in item: item_found = True self.assertTrue(item_found) diff --git a/tests/testdata/qgis_server/getcapabilities.txt b/tests/testdata/qgis_server/getcapabilities.txt index 142f625ade5..f3f2650c7da 100644 --- a/tests/testdata/qgis_server/getcapabilities.txt +++ b/tests/testdata/qgis_server/getcapabilities.txt @@ -10,6 +10,7 @@ Content-Type: text/xml; charset=utf-8 infoMapAccessService + Alessandro Pasotti diff --git a/tests/testdata/qgis_server/getcapabilities_inspire.txt b/tests/testdata/qgis_server/getcapabilities_inspire.txt index 6c1a976bd37..06d3a5371a2 100644 --- a/tests/testdata/qgis_server/getcapabilities_inspire.txt +++ b/tests/testdata/qgis_server/getcapabilities_inspire.txt @@ -10,6 +10,7 @@ Content-Type: text/xml; charset=utf-8 infoMapAccessService + Alessandro Pasotti diff --git a/tests/testdata/qgis_server/getprojectsettings.txt b/tests/testdata/qgis_server/getprojectsettings.txt index e4378592d57..3b1887152eb 100644 --- a/tests/testdata/qgis_server/getprojectsettings.txt +++ b/tests/testdata/qgis_server/getprojectsettings.txt @@ -10,6 +10,7 @@ Content-Type: text/xml; charset=utf-8 infoMapAccessService + Alessandro Pasotti