QGIS API Documentation  3.25.0-Master (10b47c2603)
qgswmsgetschemaextension.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgswmsgetschemaextension.cpp
3  -------------------------
4  begin : December 20 , 2016
5  copyright : (C) 2007 by Marco Hugentobler (original code)
6  (C) 2014 by Alessandro Pasotti (original code)
7  (C) 2016 by David Marteau
8  email : marco dot hugentobler at karto dot baug dot ethz dot ch
9  a dot pasotti at itopen dot it
10  david dot marteau at 3liz dot com
11  ***************************************************************************/
12 
13 /***************************************************************************
14  * *
15  * This program is free software; you can redistribute it and/or modify *
16  * it under the terms of the GNU General Public License as published by *
17  * the Free Software Foundation; either version 2 of the License, or *
18  * (at your option) any later version. *
19  * *
20  ***************************************************************************/
21 #include "qgswmsutils.h"
23 #include "qgsapplication.h"
24 
25 #include <QDir>
26 #include <QFileInfo>
27 #include <QTextStream>
28 
29 namespace QgsWms
30 {
31 
33  {
34  const QDir resourcesDir = QFileInfo( QgsApplication::serverResourcesPath() ).absoluteDir();
35  const QFileInfo xsdFileInfo( resourcesDir, QStringLiteral( "schemaExtension.xsd" ) );
36  QString schema_str = QStringLiteral( "<?xml version='1.0'?>" );
37 
38  if ( !xsdFileInfo.exists() )
39  {
40  QgsMessageLog::logMessage( QStringLiteral( "Error, xsd file 'schemaExtension.xsd' does not exist" ),
41  QStringLiteral( "Server" ), Qgis::MessageLevel::Critical );
42  }
43  else
44  {
45  QFile file( xsdFileInfo.absoluteFilePath() );
46  if ( file.open( QFile::ReadOnly | QFile::Text ) )
47  {
48  QTextStream in( &file );
49  schema_str = in.readAll();
50  file.close();
51  }
52  else
53  {
54  QgsMessageLog::logMessage( QStringLiteral( "Error, xsd file 'schemaExtension.xsd' not readable" ),
55  QStringLiteral( "Server" ), Qgis::MessageLevel::Critical );
56  }
57  }
58  response.setHeader( QStringLiteral( "Content-Type" ), QStringLiteral( "text/xml; charset=utf-8" ) );
59  response.write( schema_str );
60  }
61 
62 } // namespace QgsWms
static QString serverResourcesPath()
Returns the path to the server resources directory.
static void logMessage(const QString &message, const QString &tag=QString(), Qgis::MessageLevel level=Qgis::MessageLevel::Warning, bool notifyUser=true)
Adds a message to the log instance (and creates it if necessary).
QgsServerResponse Class defining response interface passed to services QgsService::executeRequest() m...
virtual void write(const QString &data)
Write string This is a convenient method that will write directly to the underlying I/O device.
virtual void setHeader(const QString &key, const QString &value)=0
Set Header entry Add Header entry to the response Note that it is usually an error to set Header afte...
Median cut implementation.
void writeGetSchemaExtension(QgsServerResponse &response)
Output GetSchemaExtension response.