26QMap<QgsServerOgcApi::ContentType, QStringList> QgsServerOgcApi::sContentTypeMime = [ ]() -> QMap<QgsServerOgcApi::ContentType, QStringList>
 
   28  QMap<QgsServerOgcApi::ContentType, QStringList> map;
 
   31    QStringLiteral( 
"application/geo+json" ),
 
   32    QStringLiteral( 
"application/vnd.geo+json" ),
 
   33    QStringLiteral( 
"application/geojson" )
 
   41QHash<QgsServerOgcApi::ContentType, QList<QgsServerOgcApi::ContentType>> QgsServerOgcApi::sContentTypeAliases = [ ]() -> QHash<ContentType, QList<ContentType>>
 
   43  QHash<QgsServerOgcApi::ContentType, QList<QgsServerOgcApi::ContentType>> map;
 
   51  mRootPath( rootPath ),
 
   53  mDescription( description ),
 
 
   66  std::shared_ptr<QgsServerOgcApiHandler> hp( handler );
 
   67  mHandlers.emplace_back( std::move( hp ) );
 
 
   73  QUrl u { url.adjusted( QUrl::StripTrailingSlash | QUrl::NormalizePathSegments ) };
 
   74  if ( u.path().contains( QLatin1String( 
"//" ) ) )
 
   76    u.setPath( u.path().replace( QLatin1String( 
"//" ), QChar( 
'/' ) ) );
 
   79  if ( !u.path().startsWith( 
'/' ) )
 
   81    u.setPath( u.path().prepend( 
'/' ) );
 
 
   91  auto hasMatch { 
false };
 
   92  for ( 
const auto &handler : mHandlers )
 
   95    if ( handler->path().match( path ).hasMatch() )
 
  103        handler->handleRequest( context );
 
  105      catch ( json::exception &ex )
 
 
  121  return sContentTypeMime;
 
 
  126  return sContentTypeAliases;
 
 
  131  static const QMetaEnum metaEnum = QMetaEnum::fromType<QgsServerOgcApi::Rel>();
 
  132  std::string val { metaEnum.valueToKey( rel ) };
 
  133  std::replace( val.begin(), val.end(), 
'_', 
'-' );
 
 
  139  static const QMetaEnum metaEnum = QMetaEnum::fromType<ContentType>();
 
  140  QString result { metaEnum.valueToKey( ct ) };
 
  141  return result.replace( 
'_', 
'-' );
 
 
  146  static const QMetaEnum metaEnum = QMetaEnum::fromType<ContentType>();
 
  147  return metaEnum.valueToKey( ct );
 
 
  157  const QString exts = QString::fromStdString( extension );
 
  159  for ( 
auto it = constMimeTypes.constBegin();
 
  160        it != constMimeTypes.constEnd();
 
  163    const auto constValues = it.value();
 
  164    for ( 
const auto &value : constValues )
 
  166      if ( value.contains( exts, Qt::CaseSensitivity::CaseInsensitive ) )
 
  173  QgsMessageLog::logMessage( QStringLiteral( 
"Content type for extension %1 not found! Returning default (JSON)" ).arg( exts ),
 
  174                             QStringLiteral( 
"Server" ),
 
 
  181  if ( ! sContentTypeMime.contains( contentType ) )
 
  185  return sContentTypeMime.value( contentType ).first().toStdString();
 
 
@ Warning
Warning message.
 
@ Info
Information message.
 
static void logMessage(const QString &message, const QString &tag=QString(), Qgis::MessageLevel level=Qgis::MessageLevel::Warning, bool notifyUser=true)
Adds a message to the log instance (and creates it if necessary).
 
Bad request error API exception.
 
The QgsServerApiContext class encapsulates the resources for a particular client request: the request...
 
QString handlerPath() const
Returns the handler component of the URL path, i.e.
 
Internal server error API exception.
 
Server generic API endpoint abstract base class.
 
QgsServerInterface Class defining interfaces exposed by QGIS Server and made available to plugins.
 
The QgsServerOgcApiHandler abstract class represents a OGC API handler to be registered in QgsServerO...
 
static QUrl sanitizeUrl(const QUrl &url)
Returns a sanitized url with extra slashes removed and the path URL component that always starts with...
 
virtual void executeRequest(const QgsServerApiContext &context) const override
Executes a request by passing the given context to the API handlers.
 
void registerHandler(Args... args)
Registers an OGC API handler passing Args to the constructor.
 
QgsServerOgcApi(QgsServerInterface *serverIface, const QString &rootPath, const QString &name, const QString &description=QString(), const QString &version=QString())
QgsServerOgcApi constructor.
 
static QString contentTypeToExtension(const QgsServerOgcApi::ContentType &ct)
Returns the file extension for a ct (Content-Type).
 
const std::vector< std::shared_ptr< QgsServerOgcApiHandler > > handlers() const
Returns registered handlers.
 
static const QMap< QgsServerOgcApi::ContentType, QStringList > contentTypeMimes()
Returns a map of contentType => list of mime types.
 
ContentType
Media types used for content negotiation, insert more specific first.
 
@ JSON
"application/openapi+json;version=3.0"
 
static QString contentTypeToString(const QgsServerOgcApi::ContentType &ct)
Returns the string representation of a ct (Content-Type) attribute.
 
static std::string contentTypeToStdString(const QgsServerOgcApi::ContentType &ct)
Returns the string representation of a ct (Content-Type) attribute.
 
static std::string mimeType(const QgsServerOgcApi::ContentType &contentType)
Returns the mime-type for the contentType or an empty string if not found.
 
~QgsServerOgcApi() override
 
const QString name() const override
Returns the API name.
 
static std::string relToString(const QgsServerOgcApi::Rel &rel)
Returns the string representation of rel attribute.
 
static const QHash< QgsServerOgcApi::ContentType, QList< QgsServerOgcApi::ContentType > > contentTypeAliases()
Returns contentType specializations (e.g.
 
static QgsServerOgcApi::ContentType contentTypeFromExtension(const std::string &extension)
Returns the Content-Type value corresponding to extension.