QGIS API Documentation  2.12.0-Lyon
qgsrequesthandler.h
Go to the documentation of this file.
1 
2 /***************************************************************************
3  qgsrequesthandler.h
4  abstraction for reading from/ writing to a request datasource
5  -------------------
6  begin : May 16, 2006
7  copyright : (C) 2006 by Marco Hugentobler
8  (C) 2014 by Alessandro Pasotti
9  email : marco dot hugentobler at karto dot baug dot ethz dot ch
10  a dot pasotti at itopen dot it
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 
22 #ifndef QGSREQUESTHANDLER_H
23 #define QGSREQUESTHANDLER_H
24 
25 //Needed for HAVE_SERVER_PYTHON_PLUGINS
26 #include "qgsconfig.h"
27 
28 #include <QMap>
29 #include <QString>
30 #include <QStringList>
31 #include <QPair>
32 
33 #ifdef HAVE_SERVER_PYTHON_PLUGINS
34 #include "qgsserverfilter.h"
35 #endif
36 
37 class QDomDocument;
38 class QImage;
40 
49 {
50 
51  public:
52 
54  : mHeadersSent( false )
55  , mException( 0 )
56  {}
57  virtual ~QgsRequestHandler( ) {}
59  virtual void parseInput() = 0;
61  virtual void setGetMapResponse( const QString& service, QImage* img, int imageQuality ) = 0;
62  virtual void setGetCapabilitiesResponse( const QDomDocument& doc ) = 0;
63  virtual void setGetFeatureInfoResponse( const QDomDocument& infoDoc, const QString& infoFormat ) = 0;
65  virtual void setServiceException( QgsMapServiceException ex ) = 0;
66  virtual void setXmlResponse( const QDomDocument& doc ) = 0;
67  virtual void setXmlResponse( const QDomDocument& doc, const QString& mimeType ) = 0;
68  virtual void setGetPrintResponse( QByteArray* b ) = 0;
69  virtual bool startGetFeatureResponse( QByteArray* ba, const QString& infoFormat ) = 0;
70  virtual void setGetFeatureResponse( QByteArray* ba ) = 0;
71  virtual void endGetFeatureResponse( QByteArray* ba ) = 0;
72  virtual void setGetCoverageResponse( QByteArray* ba ) = 0;
73  virtual void setDefaultHeaders() {}
75  virtual void setHeader( const QString &name, const QString &value ) = 0;
77  virtual int removeHeader( const QString &name ) = 0;
79  virtual void clearHeaders( ) = 0;
81  virtual void appendBody( const QByteArray &body ) = 0;
83  virtual void clearBody( ) = 0;
85  virtual QByteArray body() { return mBody; }
87  virtual void setInfoFormat( const QString &format ) = 0;
89  virtual bool responseReady() const = 0;
91  virtual void sendResponse( ) = 0;
93  virtual bool exceptionRaised() const = 0;
100  virtual void setParameter( const QString &key, const QString &value ) = 0;
102  virtual int removeParameter( const QString &key ) = 0;
104  virtual QString parameter( const QString &key ) const = 0;
106  QString format() const { return mFormat; }
108  QString infoFormat() const { return mInfoFormat; }
110  bool headersSent() { return mHeadersSent; }
111 #ifdef HAVE_SERVER_PYTHON_PLUGINS
112 
115  virtual void setPluginFilters( QgsServerFiltersMap pluginFilters ) = 0;
116 #endif
118 
119  protected:
120  virtual void sendHeaders( ) = 0;
121  virtual void sendBody( ) = 0;
122 #ifdef HAVE_SERVER_PYTHON_PLUGINS
123  QgsServerFiltersMap mPluginFilters;
124 #endif
125  QByteArray mBody; // The response payload
128  QString mFormatString; //format string as it is passed in the request (with base)
132  QgsMapServiceException* mException; // Stores the exception
137  // TODO: if HAVE_SERVER_PYTHON
140  // QByteArray mResponseHeader;
141  // QByteArray mResponseBody;
142 };
143 
144 #endif
virtual void setGetCapabilitiesResponse(const QDomDocument &doc)=0
virtual QByteArray body()
Return the response body.
virtual void setServiceException(QgsMapServiceException ex)=0
Allow plugins to return a QgsMapServiceException.
virtual bool responseReady() const =0
Check whether there is any header set or the body is not empty.
virtual int removeParameter(const QString &key)=0
Remove a request parameter.
virtual void setGetCoverageResponse(QByteArray *ba)=0
virtual void sendHeaders()=0
virtual void setXmlResponse(const QDomDocument &doc)=0
bool headersSent()
Return true if the HTTP headers were already sent to the client.
virtual void clearBody()=0
Clears the response body.
virtual void endGetFeatureResponse(QByteArray *ba)=0
virtual bool exceptionRaised() const =0
Pointer to last raised exception.
QString format() const
Return the requested format string.
virtual void setHeader(const QString &name, const QString &value)=0
Set an HTTP header.
virtual ~QgsRequestHandler()
virtual void setGetMapResponse(const QString &service, QImage *img, int imageQuality)=0
Sends the map image back to the client.
QMap< QString, QString > mParameterMap
virtual void setGetFeatureResponse(QByteArray *ba)=0
QMap< QString, QString > mHeaders
Response headers.
virtual void parseInput()=0
Parses the input and creates a request neutral Parameter/Value map.
virtual void setGetFeatureInfoResponse(const QDomDocument &infoDoc, const QString &infoFormat)=0
virtual void clearHeaders()=0
Delete all HTTP headers.
This class is an interface hiding the details of reading input and writing output from/to a wms reque...
QgsMapServiceException * mException
QString infoFormat() const
Return the mime type for the response.
virtual void setParameter(const QString &key, const QString &value)=0
Set a request parameter.
QMap< QString, QString > parameterMap()
Return a copy of the parsed parameters as a key-value pair, to modify a parameter setParameter( const...
virtual void appendBody(const QByteArray &body)=0
Append the bytestream to response body.
QString mFormat
This is set by the parseInput methods of the subclasses (parameter FORMAT, e.g.
virtual void setInfoFormat(const QString &format)=0
Set the info format string such as "text/xml".
virtual QPair< QByteArray, QByteArray > getResponse()=0
virtual QString parameter(const QString &key) const =0
Return a request parameter.
virtual int removeHeader(const QString &name)=0
Remove an HTTP header.
virtual void sendBody()=0
virtual void setGetPrintResponse(QByteArray *b)=0
virtual void sendResponse()=0
Send out HTTP headers and flush output buffer.
Exception class for WMS service exceptions.
virtual void setDefaultHeaders()
virtual bool startGetFeatureResponse(QByteArray *ba, const QString &infoFormat)=0