QGIS API Documentation 3.29.0-Master (8c80f25a4f)
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
38class 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
65 {
66 // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Host
68 // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Forwarded
69 // https://tools.ietf.org/html/rfc7239
71 // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For
73 // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Host
75 // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Proto
77 // The QGIS service URL
79 // The QGIS WMS service URL
81 // The QGIS WFS service URL
83 // The QGIS WCS service URL
85 // The QGIS WMTS service URL
87 // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept
89 // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent
91 // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization
93 };
94 Q_ENUM( RequestHeader )
95
96
99 QgsServerRequest() = default;
100
108 QgsServerRequest( const QString &url, QgsServerRequest::Method method = QgsServerRequest::GetMethod, const QgsServerRequest::Headers &headers = QgsServerRequest::Headers() );
109
117 QgsServerRequest( const QUrl &url, QgsServerRequest::Method method = QgsServerRequest::GetMethod, const QgsServerRequest::Headers &headers = QgsServerRequest::Headers() );
118
122 QgsServerRequest( const QgsServerRequest &other );
123
124 QgsServerRequest &operator=( const QgsServerRequest & ) = default;
125
127 virtual ~QgsServerRequest() = default;
128
133 static QString methodToString( const Method &method );
134
135
142 QUrl url() const;
143
147 QgsServerRequest::Method method() const;
148
153 QgsServerRequest::Parameters parameters() const;
154
158 QgsServerParameters serverParameters() const;
159
163 virtual void setParameter( const QString &key, const QString &value );
164
168 QString parameter( const QString &key, const QString &defaultValue = QString() ) const;
169
173 virtual void removeParameter( const QString &key );
174
180 virtual QString header( const QString &name ) const;
181
187 virtual QString header( const RequestHeader &headerEnum ) const;
188
194 void setHeader( const QString &name, const QString &value );
195
200 QMap<QString, QString> headers() const;
201
207 void removeHeader( const QString &name );
208
214 virtual QByteArray data() const;
215
219 virtual void setUrl( const QUrl &url );
220
228 QUrl originalUrl() const;
229
238 QUrl baseUrl() const;
239
243 void setMethod( QgsServerRequest::Method method );
244
249 const QString queryParameter( const QString &name, const QString &defaultValue = QString( ) ) const;
250
251 protected:
252
259 void setOriginalUrl( const QUrl &url );
260
266 void setBaseUrl( const QUrl &url );
267
268 private:
269 // Url as seen by QGIS server after web server rewrite
270 QUrl mUrl;
271 // Unrewritten url as seen by the web server
272 QUrl mOriginalUrl;
273 QUrl mBaseUrl;
274 Method mMethod = GetMethod;
275 // We mark as mutable in order
276 // to support lazy initialization
277 mutable Headers mHeaders;
278 QgsServerParameters mParams;
279};
280
281#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
RequestHeader
The internal HTTP Header used for the request as enum.