15#ifndef QGSARCGISRESTQUERY_H
16#define QGSARCGISRESTQUERY_H
70 const QString &baseurl,
71 const QString &authcfg,
75 const QString &urlPrefix = QString(),
76 bool forceRefresh =
false
83 const QString &layerurl,
const QString &authcfg, QString &errorTitle, QString &errorText,
const QgsHttpHeaders &requestHeaders =
QgsHttpHeaders(),
const QString &urlPrefix = QString()
90 const QString &layerurl,
91 const QString &authcfg,
95 const QString &urlPrefix = QString(),
97 const QString &whereClause = QString()
107 const QString &layerurl,
const QString &whereClause,
const QString &authcfg,
const QgsHttpHeaders &requestHeaders =
QgsHttpHeaders(),
const QString &urlPrefix = QString()
132 const QString &layerurl,
133 const QString &authcfg,
134 const QList<quint32> &objectIds,
137 const QStringList &fetchAttributes,
144 const QString &urlPrefix = QString()
151 const QString &layerurl,
155 const QString &authcfg,
158 const QString &whereClause = QString(),
159 const QString &urlPrefix = QString()
167 const QString &authcfg,
172 QString *contentType =
nullptr,
173 const QString &urlPrefix = QString(),
174 bool forceRefresh =
false
181 const QString &authcfg,
186 const QString &urlPrefix = QString(),
187 bool forceRefresh =
false
193 static void visitFolderItems(
const std::function<
void(
const QString &folderName,
const QString &url )> &visitor,
const QVariantMap &serviceData,
const QString &baseUrl );
199 const std::function<
void(
const QString &serviceName,
const QString &url,
Qgis::ArcGisRestServiceType serviceType )> &visitor,
const QVariantMap &serviceData,
const QString &baseUrl
245 static QUrl
parseUrl(
const QUrl &url,
bool *isTestEndpoint =
nullptr );
248 static void adjustBaseUrl( QString &baseUrl,
const QString &name );
254class CORE_EXPORT QgsArcGisAsyncQuery :
public QObject
258 QgsArcGisAsyncQuery( QObject *parent =
nullptr );
259 ~QgsArcGisAsyncQuery()
override;
261 void start(
const QUrl &url,
const QString &authCfg, QByteArray *result,
bool allowCache =
false,
const QgsHttpHeaders &headers =
QgsHttpHeaders(),
const QString &urlPrefix = QString() );
264 void failed( QString errorTitle, QString errorName );
269 QPointer<QNetworkReply> mReply;
270 QByteArray *mResult =
nullptr;
273class CORE_EXPORT QgsArcGisAsyncParallelQuery :
public QObject
277 QgsArcGisAsyncParallelQuery(
const QString &authcfg,
const QgsHttpHeaders &requestHeaders, QObject *parent =
nullptr );
278 void start(
const QVector<QUrl> &urls, QVector<QByteArray> *results,
bool allowCache =
false );
281 void finished( QStringList errors );
286 QVector<QByteArray> *mResults =
nullptr;
287 int mPendingRequests = 0;
290 QgsHttpHeaders mRequestHeaders;
ArcGisRestServiceType
Available ArcGIS REST service types.
@ Unknown
Other unknown/unsupported type.
GeometryType
The geometry types are used to group Qgis::WkbType in a coarse way.
Utility functions for querying ArcGIS REST services.
static void visitFolderItems(const std::function< void(const QString &folderName, const QString &url)> &visitor, const QVariantMap &serviceData, const QString &baseUrl)
Calls the specified visitor function on all folder items found within the given service data.
static QVariantMap queryServiceJSON(const QUrl &url, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders=QgsHttpHeaders(), QgsFeedback *feedback=nullptr, const QString &urlPrefix=QString(), bool forceRefresh=false)
Performs a blocking request to a URL and returns the retrieved JSON content.
static QgsRectangle getExtent(const QString &layerurl, const QString &whereClause, const QString &authcfg, const QgsHttpHeaders &requestHeaders=QgsHttpHeaders(), const QString &urlPrefix=QString())
Retrieves the extent for the features matching a whereClause.
friend class TestQgsArcGisRestUtils
static Qgis::ArcGisRestServiceType sniffServiceTypeFromJson(const QVariantMap &json)
Attempts to resolve the service type from a json definition.
static QVariantMap getObjectIds(const QString &layerurl, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders=QgsHttpHeaders(), const QString &urlPrefix=QString(), const QgsRectangle &bbox=QgsRectangle(), const QString &whereClause=QString())
Retrieves all object IDs for the specified layer URL.
static QUrl parseUrl(const QUrl &url, bool *isTestEndpoint=nullptr)
Parses and processes a url.
static QByteArray queryService(const QUrl &url, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders=QgsHttpHeaders(), QgsFeedback *feedback=nullptr, QString *contentType=nullptr, const QString &urlPrefix=QString(), bool forceRefresh=false)
Performs a blocking request to a URL and returns the retrieved data.
static QVariantMap getServiceInfo(const QString &baseurl, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders=QgsHttpHeaders(), const QString &urlPrefix=QString(), bool forceRefresh=false)
Retrieves JSON service info for the specified base URL.
ServiceTypeFilter
Service types.
static QVariantMap getLayerInfo(const QString &layerurl, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders=QgsHttpHeaders(), const QString &urlPrefix=QString())
Retrieves JSON layer info for the specified layer URL.
static Qgis::ArcGisRestServiceType sniffServiceTypeFromUrl(const QUrl &url)
Attempts to resolve the service type from a url.
static void addLayerItems(const std::function< void(const LayerItemDetails &details)> &visitor, const QVariantMap &serviceData, const QString &parentUrl, const QString &parentSupportedFormats, Qgis::ArcGisRestServiceType serviceType)
Calls the specified visitor function on all layer items found within the given service data.
static void visitServiceItems(const std::function< void(const QString &serviceName, const QString &url, Qgis::ArcGisRestServiceType serviceType)> &visitor, const QVariantMap &serviceData, const QString &baseUrl)
Calls the specified visitor function on all service items found within the given service data.
QFlags< ServiceTypeFilter > ServiceTypeFilters
static QList< quint32 > getObjectIdsByExtent(const QString &layerurl, const QgsRectangle &filterRect, QString &errorTitle, QString &errorText, const QString &authcfg, const QgsHttpHeaders &requestHeaders=QgsHttpHeaders(), QgsFeedback *feedback=nullptr, const QString &whereClause=QString(), const QString &urlPrefix=QString())
Gets a list of object IDs which fall within the specified extent.
static QVariantMap getObjects(const QString &layerurl, const QString &authcfg, const QList< quint32 > &objectIds, const QString &crs, bool fetchGeometry, const QStringList &fetchAttributes, bool fetchM, bool fetchZ, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders=QgsHttpHeaders(), QgsFeedback *feedback=nullptr, const QString &urlPrefix=QString())
Retrieves all matching objects from the specified layer URL.
Represents a coordinate reference system (CRS).
Base class for feedback objects to be used for cancellation of something running in a worker thread.
A rectangle specified with double values.
Encapsulates details relating to a layer item.
Qgis::ArcGisRestServiceType serviceType
Service type.
bool isMapServerWithQueryCapability
true if layer is a map server with the query capability
QString description
Description.
QString format
Map server image format.
QgsCoordinateReferenceSystem crs
Coordinate reference system.
bool isMapServerSpecialAllLayersOption
true if layer is the special map server "all layers" layer
bool isParentLayer
true if layer item represents a parent layer
QString parentLayerId
Parent layer ID.
Qgis::GeometryType geometryType
Geometry type.