mirror of
				https://github.com/qgis/QGIS.git
				synced 2025-11-03 00:14:12 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			294 lines
		
	
	
		
			9.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			294 lines
		
	
	
		
			9.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
/************************************************************************
 | 
						|
 * This file has been generated automatically from                      *
 | 
						|
 *                                                                      *
 | 
						|
 * src/server/qgsserverogcapihandler.h                                  *
 | 
						|
 *                                                                      *
 | 
						|
 * Do not edit manually ! Edit header and run scripts/sipify.py again   *
 | 
						|
 ************************************************************************/
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
class QgsServerOgcApiHandler
 | 
						|
{
 | 
						|
%Docstring(signature="appended")
 | 
						|
An abstract class which represents an OGC API handler to be registered
 | 
						|
in :py:class:`QgsServerOgcApi` class.
 | 
						|
 | 
						|
Subclasses must override operational and informative methods and define
 | 
						|
the core functionality in :py:func:`~handleRequest` method.
 | 
						|
 | 
						|
The following methods MUST be implemented:
 | 
						|
 | 
						|
- path
 | 
						|
- operationId
 | 
						|
- summary (shorter text)
 | 
						|
- description (longer text)
 | 
						|
- linkTitle
 | 
						|
- linkType
 | 
						|
- schema
 | 
						|
 | 
						|
Optionally, override:
 | 
						|
 | 
						|
- tags
 | 
						|
- parameters
 | 
						|
- contentTypes
 | 
						|
- defaultContentType
 | 
						|
 | 
						|
.. code-block:: python
 | 
						|
 | 
						|
     class Handler1(QgsServerOgcApiHandler):
 | 
						|
       """Example handler"""
 | 
						|
 | 
						|
       def path(self):
 | 
						|
           return QtCore.QRegularExpression("/handlerone")
 | 
						|
 | 
						|
       def operationId(self):
 | 
						|
           return "handlerOne"
 | 
						|
 | 
						|
       def summary(self):
 | 
						|
           return "First of its name"
 | 
						|
 | 
						|
       def description(self):
 | 
						|
           return "The first handler ever"
 | 
						|
 | 
						|
       def linkTitle(self):
 | 
						|
           return "Handler One Link Title"
 | 
						|
 | 
						|
       def linkType(self):
 | 
						|
           return QgsServerOgcApi.data
 | 
						|
 | 
						|
       def handleRequest(self, context):
 | 
						|
           """Simple mirror: returns the parameters"""
 | 
						|
 | 
						|
           params = self.values(context)
 | 
						|
           self.write(params, context)
 | 
						|
 | 
						|
       def parameters(self, context):
 | 
						|
           return [QgsServerQueryStringParameter("value1", True, QgsServerQueryStringParameter.Type.Double, "a double value")]
 | 
						|
 | 
						|
.. versionadded:: 3.10
 | 
						|
%End
 | 
						|
 | 
						|
%TypeHeaderCode
 | 
						|
#include "qgsserverogcapihandler.h"
 | 
						|
%End
 | 
						|
  public:
 | 
						|
    virtual ~QgsServerOgcApiHandler();
 | 
						|
 | 
						|
 | 
						|
    virtual QRegularExpression path() const = 0;
 | 
						|
%Docstring
 | 
						|
URL pattern for this handler, named capture group are automatically
 | 
						|
extracted and returned by :py:func:`~QgsServerOgcApiHandler.values`
 | 
						|
 | 
						|
Example: "/handlername/(?P<code1>\d{2})/items" will capture "code1" as a
 | 
						|
named parameter.
 | 
						|
 | 
						|
.. seealso:: :py:func:`values`
 | 
						|
%End
 | 
						|
 | 
						|
    virtual std::string operationId() const = 0;
 | 
						|
%Docstring
 | 
						|
Returns the operation id for template file names and other internal
 | 
						|
references
 | 
						|
%End
 | 
						|
 | 
						|
    virtual QList<QgsServerQueryStringParameter> parameters( const QgsServerApiContext &context ) const;
 | 
						|
%Docstring
 | 
						|
Returns a list of query string parameters.
 | 
						|
 | 
						|
Depending on the handler, it may be dynamic (per-request) or static.
 | 
						|
 | 
						|
:param context: the request context
 | 
						|
%End
 | 
						|
 | 
						|
 | 
						|
    virtual std::string summary() const = 0;
 | 
						|
%Docstring
 | 
						|
Summary
 | 
						|
%End
 | 
						|
 | 
						|
    virtual std::string description() const = 0;
 | 
						|
%Docstring
 | 
						|
Description
 | 
						|
%End
 | 
						|
 | 
						|
    virtual std::string linkTitle() const = 0;
 | 
						|
%Docstring
 | 
						|
Title for the handler link
 | 
						|
%End
 | 
						|
 | 
						|
    virtual QgsServerOgcApi::Rel linkType() const = 0;
 | 
						|
%Docstring
 | 
						|
Main role for the resource link
 | 
						|
%End
 | 
						|
 | 
						|
    virtual QStringList tags() const;
 | 
						|
%Docstring
 | 
						|
Tags
 | 
						|
%End
 | 
						|
 | 
						|
    virtual QgsServerOgcApi::ContentType defaultContentType() const;
 | 
						|
%Docstring
 | 
						|
Returns the default response content type in case the client did not
 | 
						|
specifically ask for any particular content type. The default
 | 
						|
implementation returns the first content type returned by
 | 
						|
:py:func:`~QgsServerOgcApiHandler.contentTypes` or JSON if that list is
 | 
						|
empty.
 | 
						|
%End
 | 
						|
 | 
						|
 | 
						|
    virtual void handleRequest( const QgsServerApiContext &context ) const  /VirtualErrorHandler=serverapi_badrequest_exception_handler/;
 | 
						|
%Docstring
 | 
						|
Handles the request within its ``context``
 | 
						|
 | 
						|
Subclasses must implement this methods, and call
 | 
						|
:py:func:`~QgsServerOgcApiHandler.validate` to extract validated
 | 
						|
parameters from the request.
 | 
						|
 | 
						|
:raises QgsServerApiBadRequestError: if the method encounters any error
 | 
						|
%End
 | 
						|
 | 
						|
    virtual QVariantMap values( const QgsServerApiContext &context ) const;
 | 
						|
%Docstring
 | 
						|
Analyzes the incoming request ``context`` and returns the validated
 | 
						|
parameter map, throws :py:class:`QgsServerApiBadRequestError` in case of
 | 
						|
errors.
 | 
						|
 | 
						|
Path fragments from the named groups in the
 | 
						|
:py:func:`~QgsServerOgcApiHandler.path` regular expression are also
 | 
						|
added to the map.
 | 
						|
 | 
						|
Your handleRequest method should call this function to retrieve the
 | 
						|
parameters map.
 | 
						|
 | 
						|
:return: the validated parameters map by extracting captured named
 | 
						|
         parameters from the path (no validation is performed on the
 | 
						|
         type because the regular expression can do it), and the query
 | 
						|
         string parameters.
 | 
						|
 | 
						|
.. seealso:: :py:func:`path`
 | 
						|
 | 
						|
.. seealso:: :py:func:`parameters`
 | 
						|
 | 
						|
:raises QgsServerApiBadRequestError: if validation fails
 | 
						|
%End
 | 
						|
 | 
						|
    QString contentTypeForAccept( const QString &accept ) const;
 | 
						|
%Docstring
 | 
						|
Looks for the first ContentType match in the accept header and returns
 | 
						|
its mime type, returns an empty string if there are not matches.
 | 
						|
%End
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    void write( QVariant &data, const QgsServerApiContext &context, const QVariantMap &htmlMetadata = QVariantMap() ) const;
 | 
						|
%Docstring
 | 
						|
Writes ``data`` to the ``context`` response stream, content-type is
 | 
						|
calculated from the ``context`` request, optional ``htmlMetadata`` for
 | 
						|
the HTML templates can be specified and will be added as "metadata" to
 | 
						|
the HTML template variables.
 | 
						|
 | 
						|
HTML output uses a template engine.
 | 
						|
 | 
						|
Available template functions: See:
 | 
						|
https://github.com/pantor/inja#tutorial
 | 
						|
 | 
						|
Available custom template functions:
 | 
						|
 | 
						|
- path_append( path ): appends a directory path to the current url
 | 
						|
- path_chomp( n ): removes the specified number "n" of directory
 | 
						|
  components from the current url path
 | 
						|
- json_dump( ): prints current JSON data passed to the template
 | 
						|
- static( path ): returns the full URL to the specified static path, for
 | 
						|
  example: static( "/style/black.css" ) will return something like
 | 
						|
  "/wfs3/static/style/black.css"
 | 
						|
- links_filter( links, key, value ): returns filtered links from a link
 | 
						|
  list
 | 
						|
- content_type_name( content_type ): returns a short name from a content
 | 
						|
  type for example "text/html" will return "HTML"
 | 
						|
- nl2br( text ): returns the input text with all newlines replaced by
 | 
						|
  "<br>" tags
 | 
						|
- starts_with( string, prefix ): returns true if a string begins with
 | 
						|
  the provided string prefix, false otherwise
 | 
						|
%End
 | 
						|
 | 
						|
    std::string href( const QgsServerApiContext &context, const QString &extraPath = QString(), const QString &extension = QString() ) const;
 | 
						|
%Docstring
 | 
						|
Returns an URL to self, to be used for links to the current resources
 | 
						|
and as a base for constructing links to sub-resources
 | 
						|
 | 
						|
:param context: the current request context
 | 
						|
:param extraPath: an optional extra path that will be appended to the
 | 
						|
                  calculated URL
 | 
						|
:param extension: optional file extension to add (the dot will be added
 | 
						|
                  automatically).
 | 
						|
%End
 | 
						|
 | 
						|
    virtual const QString templatePath( const QgsServerApiContext &context ) const;
 | 
						|
%Docstring
 | 
						|
Returns the HTML template path for the handler in the given ``context``
 | 
						|
 | 
						|
The template path is calculated from :py:class:`QgsServerSettings`'s
 | 
						|
:py:func:`~QgsServerOgcApiHandler.apiResourcesDirectory` as follow:
 | 
						|
:py:func:`~QgsServerOgcApiHandler.apiResourcesDirectory` +
 | 
						|
"/ogc/templates/" + context.apiRootPath + operationId + ".html" e.g. for
 | 
						|
an API with root path "/wfs3" and an handler with operationId
 | 
						|
"collectionItems", the path will be
 | 
						|
:py:func:`~QgsServerOgcApiHandler.apiResourcesDirectory` +
 | 
						|
"/ogc/templates/wfs3/collectionItems.html"
 | 
						|
%End
 | 
						|
 | 
						|
    virtual const QString staticPath( const QgsServerApiContext &context ) const;
 | 
						|
%Docstring
 | 
						|
Returns the absolute path to the base directory where static resources
 | 
						|
for this handler are stored in the given ``context``.
 | 
						|
%End
 | 
						|
 | 
						|
    QgsServerOgcApi::ContentType contentTypeFromRequest( const QgsServerRequest *request ) const;
 | 
						|
%Docstring
 | 
						|
Returns the content type from the ``request``.
 | 
						|
 | 
						|
The path file extension is examined first and checked for known mime
 | 
						|
types, the "Accept" HTTP header is examined next. Fallback to the
 | 
						|
default content type of the handler if none of the above matches.
 | 
						|
 | 
						|
:raises QgsServerApiBadRequestError: if the content type of the request
 | 
						|
                                     is not compatible with the handler
 | 
						|
                                     (:py:func:`contentTypes` member)
 | 
						|
%End
 | 
						|
 | 
						|
    static QString parentLink( const QUrl &url, int levels = 1 );
 | 
						|
%Docstring
 | 
						|
Returns a link to the parent page up to ``levels`` in the HTML hierarchy
 | 
						|
from the given ``url``, MAP query argument is preserved
 | 
						|
%End
 | 
						|
 | 
						|
    static QgsVectorLayer *layerFromCollectionId( const QgsServerApiContext &context, const QString &collectionId );
 | 
						|
%Docstring
 | 
						|
Returns a vector layer from the ``collectionId`` in the given
 | 
						|
``context``.
 | 
						|
 | 
						|
:raises QgsServerApiNotFoundError: if the layer could not be found.
 | 
						|
%End
 | 
						|
 | 
						|
 | 
						|
 | 
						|
  protected:
 | 
						|
    void setContentTypesInt( const QList<int> &contentTypes ) /PyName=setContentTypes/;
 | 
						|
%Docstring
 | 
						|
Set the content types to ``contentTypes``
 | 
						|
%End
 | 
						|
 | 
						|
 | 
						|
};
 | 
						|
 | 
						|
/************************************************************************
 | 
						|
 * This file has been generated automatically from                      *
 | 
						|
 *                                                                      *
 | 
						|
 * src/server/qgsserverogcapihandler.h                                  *
 | 
						|
 *                                                                      *
 | 
						|
 * Do not edit manually ! Edit header and run scripts/sipify.py again   *
 | 
						|
 ************************************************************************/
 |