QGIS API Documentation 3.99.0-Master (d270888f95f)
Loading...
Searching...
No Matches
qgsserverogcapihandler.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsserverogcapihandler.h - QgsServerOgcApiHandler
3
4 ---------------------
5 begin : 10.7.2019
6 copyright : (C) 2019 by Alessandro Pasotti
7 email : elpaso at itopen dot it
8 ***************************************************************************
9 * *
10 * This program is free software; you can redistribute it and/or modify *
11 * it under the terms of the GNU General Public License as published by *
12 * the Free Software Foundation; either version 2 of the License, or *
13 * (at your option) any later version. *
14 * *
15 ***************************************************************************/
16#ifndef QGSSERVEROGCAPIHANDLER_H
17#define QGSSERVEROGCAPIHANDLER_H
18
19#include <nlohmann/json_fwd.hpp>
20
21#include "qgis_server.h"
22#include "qgsserverogcapi.h"
24
25#include <QRegularExpression>
26#include <QString>
27
28using namespace Qt::StringLiterals;
29
30#ifndef SIP_RUN
31using namespace nlohmann;
32#endif
33
35
98class SERVER_EXPORT QgsServerOgcApiHandler
99{
100 public:
101 virtual ~QgsServerOgcApiHandler();
102
103 // /////////////////////////////////////////////
104 // MAIN Section (operational)
105
115 virtual QRegularExpression path() const = 0;
116
118 virtual std::string operationId() const = 0;
119
126 virtual QList<QgsServerQueryStringParameter> parameters( const QgsServerApiContext &context ) const
127 {
128 Q_UNUSED( context );
129 return {};
130 }
131
132 // /////////////////////////////////////////////
133 // METADATA Sections (informative)
134
136 virtual std::string summary() const = 0;
137
139 virtual std::string description() const = 0;
140
142 virtual std::string linkTitle() const = 0;
143
145 virtual QgsServerOgcApi::Rel linkType() const = 0;
146
148 virtual QStringList tags() const { return {}; }
149
156 virtual QgsServerOgcApi::ContentType defaultContentType() const;
157
164 QList<QgsServerOgcApi::ContentType> contentTypes() const SIP_SKIP;
165
174 virtual void handleRequest( const QgsServerApiContext &context ) const SIP_THROW( QgsServerApiBadRequestException ) SIP_VIRTUALERRORHANDLER( serverapi_badrequest_exception_handler );
175
195 virtual QVariantMap values( const QgsServerApiContext &context ) const SIP_THROW( QgsServerApiBadRequestException );
196
201 QString contentTypeForAccept( const QString &accept ) const;
202
203 // /////////////////////////////////////////////////////
204 // Utility methods: override should not be required
205
206#ifndef SIP_RUN // Skip SIP
207
232 void write( json &data, const QgsServerApiContext &context, const json &htmlMetadata = nullptr ) const;
233
240 void jsonDump( json &data, const QgsServerApiContext &context, const QString &contentType = u"application/json"_s ) const;
241
248 void htmlDump( const json &data, const QgsServerApiContext &context ) const;
249
257 virtual json schema( const QgsServerApiContext &context ) const;
258
268 json link( const QgsServerApiContext &context, const QgsServerOgcApi::Rel &linkType = QgsServerOgcApi::Rel::self, const QgsServerOgcApi::ContentType contentType = QgsServerOgcApi::ContentType::JSON, const std::string &title = "" ) const;
269
278 json links( const QgsServerApiContext &context ) const;
279
280
290 QgsVectorLayer *layerFromContext( const QgsServerApiContext &context ) const;
291
292#endif // SIP skipped
293
317 void write( QVariant &data, const QgsServerApiContext &context, const QVariantMap &htmlMetadata = QVariantMap() ) const SIP_THROW( QgsServerApiBadRequestException );
318
326 std::string href( const QgsServerApiContext &context, const QString &extraPath = QString(), const QString &extension = QString() ) const;
327
336 virtual const QString templatePath( const QgsServerApiContext &context ) const;
337
343 virtual const QString staticPath( const QgsServerApiContext &context ) const;
344
354 QgsServerOgcApi::ContentType contentTypeFromRequest( const QgsServerRequest *request ) const;
355
359 static QString parentLink( const QUrl &url, int levels = 1 );
360
365 static QgsVectorLayer *layerFromCollectionId( const QgsServerApiContext &context, const QString &collectionId );
366
372 static json defaultResponse() SIP_SKIP;
373
381 json jsonTags() const SIP_SKIP;
382
383 protected:
387 void setContentTypesInt( const QList<int> &contentTypes ) SIP_PYNAME( setContentTypes );
388
393 void setContentTypes( const QList<QgsServerOgcApi::ContentType> &contentTypes ) SIP_SKIP;
394
395 private:
398};
399
400#endif // QGSSERVEROGCAPIHANDLER_H
Bad request error API exception.
Encapsulates the resources for a particular client request.
An abstract class which represents an OGC API handler to be registered in QgsServerOgcApi class.
virtual std::string summary() const =0
Summary.
virtual QgsServerOgcApi::Rel linkType() const =0
Main role for the resource link.
virtual QStringList tags() const
Tags.
virtual std::string linkTitle() const =0
Title for the handler link.
virtual QList< QgsServerQueryStringParameter > parameters(const QgsServerApiContext &context) const
Returns a list of query string parameters.
virtual std::string operationId() const =0
Returns the operation id for template file names and other internal references.
virtual std::string description() const =0
Description.
virtual QRegularExpression path() const =0
URL pattern for this handler, named capture group are automatically extracted and returned by values(...
QGIS Server OGC API endpoint.
ContentType
Media types used for content negotiation, insert more specific first.
Rel
Rel link types.
@ self
Conveys an identifier for the link’s context.
Defines requests passed to QgsService classes.
Represents a vector layer which manages a vector based dataset.
#define SIP_SKIP
Definition qgis_sip.h:134
#define SIP_PYNAME(name)
Definition qgis_sip.h:89
#define SIP_VIRTUALERRORHANDLER(name)
Definition qgis_sip.h:204
#define SIP_THROW(name,...)
Definition qgis_sip.h:211