QGIS API Documentation  3.18.1-Zürich (202f1bf7e5)
qgsserverrequest.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsserverrequest.h
3 
4  Define request class for getting request contents
5  -------------------
6  begin : 2016-12-05
7  copyright : (C) 2016 by David Marteau
8  email : david dot marteau at 3liz dot com
9  ***************************************************************************/
10 
11 /***************************************************************************
12  * *
13  * This program is free software; you can redistribute it and/or modify *
14  * it under the terms of the GNU General Public License as published by *
15  * the Free Software Foundation; either version 2 of the License, or *
16  * (at your option) any later version. *
17  * *
18  ***************************************************************************/
19 #ifndef QGSSERVERREQUEST_H
20 #define QGSSERVERREQUEST_H
21 
22 #include <QUrl>
23 #include <QMap>
24 #include "qgis_server.h"
25 #include "qgsserverparameters.h"
26 
35 // Note about design: this interface must be passed along to Python and thus signatures methods must be
36 // compatible with pyQGIS/pyQT api and rules.
37 
38 class SERVER_EXPORT QgsServerRequest
39 {
40  Q_GADGET
41 
42  public:
43 
44  typedef QMap<QString, QString> Parameters;
45  typedef QMap<QString, QString> Headers;
46 
50  enum Method
51  {
57  PatchMethod
58  };
59  Q_ENUM( Method )
60 
61 
62 
65  QgsServerRequest() = default;
66 
74  QgsServerRequest( const QString &url, QgsServerRequest::Method method = QgsServerRequest::GetMethod, const QgsServerRequest::Headers &headers = QgsServerRequest::Headers() );
75 
83  QgsServerRequest( const QUrl &url, QgsServerRequest::Method method = QgsServerRequest::GetMethod, const QgsServerRequest::Headers &headers = QgsServerRequest::Headers() );
84 
86  virtual ~QgsServerRequest() = default;
87 
92  static QString methodToString( const Method &method );
93 
94 
101  QUrl url() const;
102 
106  QgsServerRequest::Method method() const;
107 
112  QgsServerRequest::Parameters parameters() const;
113 
117  QgsServerParameters serverParameters() const;
118 
122  void setParameter( const QString &key, const QString &value );
123 
127  QString parameter( const QString &key, const QString &defaultValue = QString() ) const;
128 
132  void removeParameter( const QString &key );
133 
139  QString header( const QString &name ) const;
140 
146  void setHeader( const QString &name, const QString &value );
147 
152  QMap<QString, QString> headers() const;
153 
158  void removeHeader( const QString &name );
159 
165  virtual QByteArray data() const;
166 
170  void setUrl( const QUrl &url );
171 
179  QUrl originalUrl() const;
180 
184  void setMethod( QgsServerRequest::Method method );
185 
190  const QString queryParameter( const QString &name, const QString &defaultValue = QString( ) ) const;
191 
192  protected:
193 
200  void setOriginalUrl( const QUrl &url );
201 
202 
203  private:
204  // Url as seen by QGIS server after web server rewrite
205  QUrl mUrl;
206  // Unrewritten url as seen by the web server
207  QUrl mOriginalUrl;
208  Method mMethod = GetMethod;
209  // We mark as mutable in order
210  // to support lazy initialization
211  mutable Headers mHeaders;
212  QgsServerParameters mParams;
213 };
214 
215 #endif
QgsServerParameters provides an interface to retrieve and manipulate global parameters received from ...
QgsServerRequest Class defining request interface passed to services QgsService::executeRequest() met...
Method
HTTP Method (or equivalent) used for the request.
QMap< QString, QString > Parameters
QMap< QString, QString > Headers