24using namespace Qt::StringLiterals;
27 const QString &communityUrl,
const QString &user,
const QString &authcfg, QString &errorTitle, QString &errorText,
const QgsHttpHeaders &requestHeaders,
QgsFeedback *feedback,
const QString &urlPrefix,
bool forceRefresh
30 QString endPoint = communityUrl;
31 if ( endPoint.endsWith(
'/' ) )
35 endPoint +=
"/self"_L1;
37 endPoint += u
"/users/"_s + user;
39 QUrl queryUrl( endPoint );
40 QUrlQuery query( queryUrl );
41 query.addQueryItem( u
"f"_s, u
"json"_s );
42 queryUrl.setQuery( query );
48 const QString &communityUrl,
const QString &user,
const QString &authcfg, QString &errorTitle, QString &errorText,
const QMap< QString, QVariant > &requestHeaders,
QgsFeedback *feedback,
const QString &urlPrefix
55 const QString &communityUrl,
const QString &user,
const QString &authcfg, QString &errorTitle, QString &errorText,
const QgsHttpHeaders &requestHeaders,
QgsFeedback *feedback,
const QString &urlPrefix,
bool forceRefresh
58 const QVariantMap info =
retrieveUserInfo( communityUrl, user, authcfg, errorTitle, errorText, requestHeaders, feedback, urlPrefix, forceRefresh );
59 return info.value( u
"groups"_s ).toList();
63 const QString &communityUrl,
const QString &user,
const QString &authcfg, QString &errorTitle, QString &errorText,
const QMap< QString, QVariant > &requestHeaders,
QgsFeedback *feedback,
const QString &urlPrefix
70 const QString &contentUrl,
71 const QString &groupId,
72 const QString &authcfg,
78 const QString &urlPrefix,
82 QString endPoint = contentUrl;
83 if ( endPoint.endsWith(
'/' ) )
86 endPoint += u
"/groups/"_s + groupId;
93 QUrl queryUrl( endPoint );
94 QUrlQuery query( queryUrl );
95 query.addQueryItem( u
"f"_s, u
"json"_s );
96 query.addQueryItem( u
"start"_s, QString::number( start ) );
97 query.addQueryItem( u
"num"_s, QString::number( pageSize ) );
98 queryUrl.setQuery( query );
101 if ( !errorText.isEmpty() )
102 return QVariantList();
104 items.append( response.value( u
"items"_s ).toList() );
109 const int total = response.value( u
"total"_s ).toInt();
118 const QString &contentUrl,
119 const QString &groupId,
120 const QString &authcfg,
123 const QMap< QString, QVariant > &requestHeaders,
126 const QString &urlPrefix
133 const QString &contentUrl,
134 const QString &groupId,
135 const QString &authcfg,
136 const QList<int> &itemTypes,
142 const QString &urlPrefix,
146 const QVariantList items =
retrieveGroupContent( contentUrl, groupId, authcfg, errorTitle, errorText, requestHeaders, feedback, pageSize, urlPrefix, forceRefresh );
150 for (
const QVariant &item : items )
152 const QVariantMap itemDef = item.toMap();
153 const QString itemType = itemDef.value( u
"type"_s ).toString();
155 for (
const int filterType : itemTypes )
168 const QString &contentUrl,
169 const QString &groupId,
170 const QString &authcfg,
171 const QList<int> &itemTypes,
174 const QMap< QString, QVariant > &requestHeaders,
177 const QString &urlPrefix
190 return u
"Feature Service"_s;
192 return u
"Map Service"_s;
194 return u
"Image Service"_s;
196 return u
"Scene Service"_s;
ArcGisRestServiceType
Available ArcGIS REST service types.
@ GeocodeServer
GeocodeServer.
@ SceneServer
SceneServer.
@ Unknown
Other unknown/unsupported type.
@ GlobeServer
GlobeServer.
@ ImageServer
ImageServer.
@ FeatureServer
FeatureServer.
static QVariantList retrieveGroupContent(const QString &contentUrl, const QString &groupId, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders=QgsHttpHeaders(), QgsFeedback *feedback=nullptr, int pageSize=100, const QString &urlPrefix=QString(), bool forceRefresh=false)
Retrieves JSON definitions for all items which belong the the specified groupId.
static QVariantList retrieveUserGroups(const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders=QgsHttpHeaders(), QgsFeedback *feedback=nullptr, const QString &urlPrefix=QString(), bool forceRefresh=false)
Retrieves JSON definitions for all groups which the specified user name is a member of.
static QVariantMap retrieveUserInfo(const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders=QgsHttpHeaders(), QgsFeedback *feedback=nullptr, const QString &urlPrefix=QString(), bool forceRefresh=false)
Retrieves JSON user info for the specified user name.
static QVariantList retrieveGroupItemsOfType(const QString &contentUrl, const QString &groupId, const QString &authcfg, const QList< int > &itemTypes, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders=QgsHttpHeaders(), QgsFeedback *feedback=nullptr, int pageSize=100, const QString &urlPrefix=QString(), bool forceRefresh=false)
Retrieves JSON definitions for all items which belong the the specified groupId.
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.
Base class for feedback objects to be used for cancellation of something running in a worker thread.
bool isCanceled() const
Tells whether the operation has been canceled already.
#define BUILTIN_UNREACHABLE