ArcGIS URL's with web proxy prefix support

Support of the ArcGIS server links with WEB Proxy prefixes
This commit is contained in:
Vytax 2024-02-19 07:15:55 +02:00 committed by GitHub
parent 080f23b0dc
commit 88ac2056a3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
16 changed files with 218 additions and 135 deletions

View File

@ -25,7 +25,7 @@ Utility functions for working with ArcGIS REST services.
%End
public:
static QVariantMap retrieveUserInfo( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle /Out/, QString &errorText /Out/, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = 0 );
static QVariantMap retrieveUserInfo( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle /Out/, QString &errorText /Out/, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = 0, const QString &urlPrefix = QString() );
%Docstring
Retrieves JSON user info for the specified user name.
@ -36,6 +36,7 @@ If ``user`` is blank then the user associated with the current logon details wil
:param authcfg: authentication configuration ID
:param requestHeaders: optional additional request headers
:param feedback: optional feedback argument for cancellation support
:param urlPrefix: http web proxy url prefix
:return: - JSON user info
- errorTitle: title summary of any encountered errors
@ -44,7 +45,7 @@ If ``user`` is blank then the user associated with the current logon details wil
.. versionadded:: 3.24
%End
static QVariantMap retrieveUserInfo( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle /Out/, QString &errorText /Out/, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback = 0 ) /Deprecated/;
static QVariantMap retrieveUserInfo( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle /Out/, QString &errorText /Out/, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback = 0, const QString &urlPrefix = QString() ) /Deprecated/;
%Docstring
Retrieves JSON user info for the specified user name. Only to avoid API break.
@ -55,6 +56,7 @@ If ``user`` is blank then the user associated with the current logon details wil
:param authcfg: authentication configuration ID
:param requestHeaders: optional additional request headers
:param feedback: optional feedback argument for cancellation support
:param urlPrefix: http web proxy url prefix
:return: - JSON user info
- errorTitle: title summary of any encountered errors
@ -64,7 +66,7 @@ If ``user`` is blank then the user associated with the current logon details wil
use the version with :py:class:`QgsHttpHeaders` instead
%End
static QVariantList retrieveUserGroups( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle /Out/, QString &errorText /Out/, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = 0 );
static QVariantList retrieveUserGroups( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle /Out/, QString &errorText /Out/, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = 0, const QString &urlPrefix = QString() );
%Docstring
Retrieves JSON definitions for all groups which the specified user name is a member of.
@ -75,6 +77,7 @@ If ``user`` is blank then the user associated with the current logon details wil
:param authcfg: authentication configuration ID
:param requestHeaders: optional additional request headers
:param feedback: optional feedback argument for cancellation support
:param urlPrefix: http web proxy url prefix
:return: - a list of JSON group info
- errorTitle: title summary of any encountered errors
@ -83,7 +86,7 @@ If ``user`` is blank then the user associated with the current logon details wil
.. versionadded:: 3.24
%End
static QVariantList retrieveUserGroups( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle /Out/, QString &errorText /Out/, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback = 0 ) /Deprecated/;
static QVariantList retrieveUserGroups( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle /Out/, QString &errorText /Out/, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback = 0, const QString &urlPrefix = QString() ) /Deprecated/;
%Docstring
Retrieves JSON definitions for all groups which the specified user name is a member of. Only to avoid API break.
@ -94,6 +97,7 @@ If ``user`` is blank then the user associated with the current logon details wil
:param authcfg: authentication configuration ID
:param requestHeaders: optional additional request headers
:param feedback: optional feedback argument for cancellation support
:param urlPrefix: http web proxy url prefix
:return: - a list of JSON group info
- errorTitle: title summary of any encountered errors
@ -103,7 +107,7 @@ If ``user`` is blank then the user associated with the current logon details wil
use the version with :py:class:`QgsHttpHeaders` instead
%End
static QVariantList retrieveGroupContent( const QString &contentUrl, const QString &groupId, const QString &authcfg, QString &errorTitle /Out/, QString &errorText /Out/, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = 0, int pageSize = 100 );
static QVariantList retrieveGroupContent( const QString &contentUrl, const QString &groupId, const QString &authcfg, QString &errorTitle /Out/, QString &errorText /Out/, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = 0, int pageSize = 100, const QString &urlPrefix = QString() );
%Docstring
Retrieves JSON definitions for all items which belong the the specified ``groupId``.
@ -113,6 +117,7 @@ Retrieves JSON definitions for all items which belong the the specified ``groupI
:param requestHeaders: optional additional request headers
:param feedback: optional feedback argument for cancellation support
:param pageSize: number of results to retrieve for each request. Maximum value is 100.
:param urlPrefix: http web proxy url prefix
:return: - a list of JSON item info for all items within the group
- errorTitle: title summary of any encountered errors
@ -121,7 +126,7 @@ Retrieves JSON definitions for all items which belong the the specified ``groupI
.. versionadded:: 3.24
%End
static QVariantList retrieveGroupContent( const QString &contentUrl, const QString &groupId, const QString &authcfg, QString &errorTitle /Out/, QString &errorText /Out/, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback = 0, int pageSize = 100 ) /Deprecated/;
static QVariantList retrieveGroupContent( const QString &contentUrl, const QString &groupId, const QString &authcfg, QString &errorTitle /Out/, QString &errorText /Out/, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback = 0, int pageSize = 100, const QString &urlPrefix = QString() ) /Deprecated/;
%Docstring
Retrieves JSON definitions for all items which belong the the specified ``groupId``. Only to avoid API break.
@ -131,6 +136,7 @@ Retrieves JSON definitions for all items which belong the the specified ``groupI
:param requestHeaders: optional additional request headers
:param feedback: optional feedback argument for cancellation support
:param pageSize: number of results to retrieve for each request. Maximum value is 100.
:param urlPrefix: http web proxy url prefix
:return: - a list of JSON item info for all items within the group
- errorTitle: title summary of any encountered errors
@ -142,7 +148,7 @@ Retrieves JSON definitions for all items which belong the the specified ``groupI
static QVariantList retrieveGroupItemsOfType( const QString &contentUrl, const QString &groupId, const QString &authcfg,
const QList< int > &itemTypes,
QString &errorTitle /Out/, QString &errorText /Out/, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = 0, int pageSize = 100 );
QString &errorTitle /Out/, QString &errorText /Out/, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = 0, int pageSize = 100, const QString &urlPrefix = QString() );
%Docstring
Retrieves JSON definitions for all items which belong the the specified ``groupId``.
@ -153,6 +159,7 @@ Retrieves JSON definitions for all items which belong the the specified ``groupI
:param requestHeaders: optional additional request headers
:param feedback: optional feedback argument for cancellation support
:param pageSize: number of results to retrieve for each request. Maximum value is 100.
:param urlPrefix: http web proxy url prefix
:return: - a list of JSON item info for all items within the group
- errorTitle: title summary of any encountered errors
@ -163,7 +170,7 @@ Retrieves JSON definitions for all items which belong the the specified ``groupI
static QVariantList retrieveGroupItemsOfType( const QString &contentUrl, const QString &groupId, const QString &authcfg,
const QList< int > &itemTypes,
QString &errorTitle /Out/, QString &errorText /Out/, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback = 0, int pageSize = 100 ) /Deprecated/;
QString &errorTitle /Out/, QString &errorText /Out/, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback = 0, int pageSize = 100, const QString &urlPrefix = QString() ) /Deprecated/;
%Docstring
Retrieves JSON definitions for all items which belong the the specified ``groupId``. Only to avoid API break.
@ -174,6 +181,7 @@ Retrieves JSON definitions for all items which belong the the specified ``groupI
:param requestHeaders: optional additional request headers
:param feedback: optional feedback argument for cancellation support
:param pageSize: number of results to retrieve for each request. Maximum value is 100.
:param urlPrefix: http web proxy url prefix
:return: - a list of JSON item info for all items within the group
- errorTitle: title summary of any encountered errors

View File

@ -25,7 +25,7 @@ Utility functions for working with ArcGIS REST services.
%End
public:
static QVariantMap retrieveUserInfo( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle /Out/, QString &errorText /Out/, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = 0 );
static QVariantMap retrieveUserInfo( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle /Out/, QString &errorText /Out/, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = 0, const QString &urlPrefix = QString() );
%Docstring
Retrieves JSON user info for the specified user name.
@ -36,6 +36,7 @@ If ``user`` is blank then the user associated with the current logon details wil
:param authcfg: authentication configuration ID
:param requestHeaders: optional additional request headers
:param feedback: optional feedback argument for cancellation support
:param urlPrefix: http web proxy url prefix
:return: - JSON user info
- errorTitle: title summary of any encountered errors
@ -44,7 +45,7 @@ If ``user`` is blank then the user associated with the current logon details wil
.. versionadded:: 3.24
%End
static QVariantMap retrieveUserInfo( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle /Out/, QString &errorText /Out/, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback = 0 ) /Deprecated/;
static QVariantMap retrieveUserInfo( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle /Out/, QString &errorText /Out/, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback = 0, const QString &urlPrefix = QString() ) /Deprecated/;
%Docstring
Retrieves JSON user info for the specified user name. Only to avoid API break.
@ -55,6 +56,7 @@ If ``user`` is blank then the user associated with the current logon details wil
:param authcfg: authentication configuration ID
:param requestHeaders: optional additional request headers
:param feedback: optional feedback argument for cancellation support
:param urlPrefix: http web proxy url prefix
:return: - JSON user info
- errorTitle: title summary of any encountered errors
@ -64,7 +66,7 @@ If ``user`` is blank then the user associated with the current logon details wil
use the version with :py:class:`QgsHttpHeaders` instead
%End
static QVariantList retrieveUserGroups( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle /Out/, QString &errorText /Out/, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = 0 );
static QVariantList retrieveUserGroups( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle /Out/, QString &errorText /Out/, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = 0, const QString &urlPrefix = QString() );
%Docstring
Retrieves JSON definitions for all groups which the specified user name is a member of.
@ -75,6 +77,7 @@ If ``user`` is blank then the user associated with the current logon details wil
:param authcfg: authentication configuration ID
:param requestHeaders: optional additional request headers
:param feedback: optional feedback argument for cancellation support
:param urlPrefix: http web proxy url prefix
:return: - a list of JSON group info
- errorTitle: title summary of any encountered errors
@ -83,7 +86,7 @@ If ``user`` is blank then the user associated with the current logon details wil
.. versionadded:: 3.24
%End
static QVariantList retrieveUserGroups( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle /Out/, QString &errorText /Out/, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback = 0 ) /Deprecated/;
static QVariantList retrieveUserGroups( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle /Out/, QString &errorText /Out/, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback = 0, const QString &urlPrefix = QString() ) /Deprecated/;
%Docstring
Retrieves JSON definitions for all groups which the specified user name is a member of. Only to avoid API break.
@ -94,6 +97,7 @@ If ``user`` is blank then the user associated with the current logon details wil
:param authcfg: authentication configuration ID
:param requestHeaders: optional additional request headers
:param feedback: optional feedback argument for cancellation support
:param urlPrefix: http web proxy url prefix
:return: - a list of JSON group info
- errorTitle: title summary of any encountered errors
@ -103,7 +107,7 @@ If ``user`` is blank then the user associated with the current logon details wil
use the version with :py:class:`QgsHttpHeaders` instead
%End
static QVariantList retrieveGroupContent( const QString &contentUrl, const QString &groupId, const QString &authcfg, QString &errorTitle /Out/, QString &errorText /Out/, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = 0, int pageSize = 100 );
static QVariantList retrieveGroupContent( const QString &contentUrl, const QString &groupId, const QString &authcfg, QString &errorTitle /Out/, QString &errorText /Out/, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = 0, int pageSize = 100, const QString &urlPrefix = QString() );
%Docstring
Retrieves JSON definitions for all items which belong the the specified ``groupId``.
@ -113,6 +117,7 @@ Retrieves JSON definitions for all items which belong the the specified ``groupI
:param requestHeaders: optional additional request headers
:param feedback: optional feedback argument for cancellation support
:param pageSize: number of results to retrieve for each request. Maximum value is 100.
:param urlPrefix: http web proxy url prefix
:return: - a list of JSON item info for all items within the group
- errorTitle: title summary of any encountered errors
@ -121,7 +126,7 @@ Retrieves JSON definitions for all items which belong the the specified ``groupI
.. versionadded:: 3.24
%End
static QVariantList retrieveGroupContent( const QString &contentUrl, const QString &groupId, const QString &authcfg, QString &errorTitle /Out/, QString &errorText /Out/, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback = 0, int pageSize = 100 ) /Deprecated/;
static QVariantList retrieveGroupContent( const QString &contentUrl, const QString &groupId, const QString &authcfg, QString &errorTitle /Out/, QString &errorText /Out/, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback = 0, int pageSize = 100, const QString &urlPrefix = QString() ) /Deprecated/;
%Docstring
Retrieves JSON definitions for all items which belong the the specified ``groupId``. Only to avoid API break.
@ -131,6 +136,7 @@ Retrieves JSON definitions for all items which belong the the specified ``groupI
:param requestHeaders: optional additional request headers
:param feedback: optional feedback argument for cancellation support
:param pageSize: number of results to retrieve for each request. Maximum value is 100.
:param urlPrefix: http web proxy url prefix
:return: - a list of JSON item info for all items within the group
- errorTitle: title summary of any encountered errors
@ -142,7 +148,7 @@ Retrieves JSON definitions for all items which belong the the specified ``groupI
static QVariantList retrieveGroupItemsOfType( const QString &contentUrl, const QString &groupId, const QString &authcfg,
const QList< int > &itemTypes,
QString &errorTitle /Out/, QString &errorText /Out/, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = 0, int pageSize = 100 );
QString &errorTitle /Out/, QString &errorText /Out/, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = 0, int pageSize = 100, const QString &urlPrefix = QString() );
%Docstring
Retrieves JSON definitions for all items which belong the the specified ``groupId``.
@ -153,6 +159,7 @@ Retrieves JSON definitions for all items which belong the the specified ``groupI
:param requestHeaders: optional additional request headers
:param feedback: optional feedback argument for cancellation support
:param pageSize: number of results to retrieve for each request. Maximum value is 100.
:param urlPrefix: http web proxy url prefix
:return: - a list of JSON item info for all items within the group
- errorTitle: title summary of any encountered errors
@ -163,7 +170,7 @@ Retrieves JSON definitions for all items which belong the the specified ``groupI
static QVariantList retrieveGroupItemsOfType( const QString &contentUrl, const QString &groupId, const QString &authcfg,
const QList< int > &itemTypes,
QString &errorTitle /Out/, QString &errorText /Out/, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback = 0, int pageSize = 100 ) /Deprecated/;
QString &errorTitle /Out/, QString &errorText /Out/, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback = 0, int pageSize = 100, const QString &urlPrefix = QString() ) /Deprecated/;
%Docstring
Retrieves JSON definitions for all items which belong the the specified ``groupId``. Only to avoid API break.
@ -174,6 +181,7 @@ Retrieves JSON definitions for all items which belong the the specified ``groupI
:param requestHeaders: optional additional request headers
:param feedback: optional feedback argument for cancellation support
:param pageSize: number of results to retrieve for each request. Maximum value is 100.
:param urlPrefix: http web proxy url prefix
:return: - a list of JSON item info for all items within the group
- errorTitle: title summary of any encountered errors

View File

@ -19,7 +19,7 @@
#include <QUrl>
#include <QUrlQuery>
QVariantMap QgsArcGisPortalUtils::retrieveUserInfo( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders, QgsFeedback *feedback )
QVariantMap QgsArcGisPortalUtils::retrieveUserInfo( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders, QgsFeedback *feedback, const QString &urlPrefix )
{
QString endPoint = communityUrl;
if ( endPoint.endsWith( '/' ) )
@ -35,26 +35,26 @@ QVariantMap QgsArcGisPortalUtils::retrieveUserInfo( const QString &communityUrl,
query.addQueryItem( QStringLiteral( "f" ), QStringLiteral( "json" ) );
queryUrl.setQuery( query );
return QgsArcGisRestQueryUtils::queryServiceJSON( queryUrl, authcfg, errorTitle, errorText, requestHeaders, feedback );
return QgsArcGisRestQueryUtils::queryServiceJSON( queryUrl, authcfg, errorTitle, errorText, requestHeaders, feedback, urlPrefix );
}
QVariantMap QgsArcGisPortalUtils::retrieveUserInfo( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle, QString &errorText, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback )
QVariantMap QgsArcGisPortalUtils::retrieveUserInfo( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle, QString &errorText, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback, const QString &urlPrefix )
{
return QgsArcGisPortalUtils::retrieveUserInfo( communityUrl, user, authcfg, errorTitle, errorText, QgsHttpHeaders( requestHeaders ), feedback );
return QgsArcGisPortalUtils::retrieveUserInfo( communityUrl, user, authcfg, errorTitle, errorText, QgsHttpHeaders( requestHeaders ), feedback, urlPrefix );
}
QVariantList QgsArcGisPortalUtils::retrieveUserGroups( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders, QgsFeedback *feedback )
QVariantList QgsArcGisPortalUtils::retrieveUserGroups( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders, QgsFeedback *feedback, const QString &urlPrefix )
{
const QVariantMap info = retrieveUserInfo( communityUrl, user, authcfg, errorTitle, errorText, requestHeaders, feedback );
const QVariantMap info = retrieveUserInfo( communityUrl, user, authcfg, errorTitle, errorText, requestHeaders, feedback, urlPrefix );
return info.value( QStringLiteral( "groups" ) ).toList();
}
QVariantList QgsArcGisPortalUtils::retrieveUserGroups( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle, QString &errorText, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback )
QVariantList QgsArcGisPortalUtils::retrieveUserGroups( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle, QString &errorText, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback, const QString &urlPrefix )
{
return QgsArcGisPortalUtils::retrieveUserGroups( communityUrl, user, authcfg, errorTitle, errorText, QgsHttpHeaders( requestHeaders ), feedback );
return QgsArcGisPortalUtils::retrieveUserGroups( communityUrl, user, authcfg, errorTitle, errorText, QgsHttpHeaders( requestHeaders ), feedback, urlPrefix );
}
QVariantList QgsArcGisPortalUtils::retrieveGroupContent( const QString &contentUrl, const QString &groupId, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders, QgsFeedback *feedback, int pageSize )
QVariantList QgsArcGisPortalUtils::retrieveGroupContent( const QString &contentUrl, const QString &groupId, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders, QgsFeedback *feedback, int pageSize, const QString &urlPrefix )
{
QString endPoint = contentUrl;
if ( endPoint.endsWith( '/' ) )
@ -74,7 +74,7 @@ QVariantList QgsArcGisPortalUtils::retrieveGroupContent( const QString &contentU
query.addQueryItem( QStringLiteral( "num" ), QString::number( pageSize ) );
queryUrl.setQuery( query );
const QVariantMap response = QgsArcGisRestQueryUtils::queryServiceJSON( queryUrl, authcfg, errorTitle, errorText, requestHeaders, feedback );
const QVariantMap response = QgsArcGisRestQueryUtils::queryServiceJSON( queryUrl, authcfg, errorTitle, errorText, requestHeaders, feedback, urlPrefix );
if ( !errorText.isEmpty() )
return QVariantList();
@ -91,14 +91,14 @@ QVariantList QgsArcGisPortalUtils::retrieveGroupContent( const QString &contentU
return items;
}
QVariantList QgsArcGisPortalUtils::retrieveGroupContent( const QString &contentUrl, const QString &groupId, const QString &authcfg, QString &errorTitle, QString &errorText, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback, int pageSize )
QVariantList QgsArcGisPortalUtils::retrieveGroupContent( const QString &contentUrl, const QString &groupId, const QString &authcfg, QString &errorTitle, QString &errorText, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback, int pageSize, const QString &urlPrefix )
{
return QgsArcGisPortalUtils::retrieveGroupContent( contentUrl, groupId, authcfg, errorTitle, errorText, QgsHttpHeaders( requestHeaders ), feedback, pageSize );
return QgsArcGisPortalUtils::retrieveGroupContent( contentUrl, groupId, authcfg, errorTitle, errorText, QgsHttpHeaders( requestHeaders ), feedback, pageSize, urlPrefix );
}
QVariantList QgsArcGisPortalUtils::retrieveGroupItemsOfType( const QString &contentUrl, const QString &groupId, const QString &authcfg, const QList<int> &itemTypes, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders, QgsFeedback *feedback, int pageSize )
QVariantList QgsArcGisPortalUtils::retrieveGroupItemsOfType( const QString &contentUrl, const QString &groupId, const QString &authcfg, const QList<int> &itemTypes, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders, QgsFeedback *feedback, int pageSize, const QString &urlPrefix )
{
const QVariantList items = retrieveGroupContent( contentUrl, groupId, authcfg, errorTitle, errorText, requestHeaders, feedback, pageSize );
const QVariantList items = retrieveGroupContent( contentUrl, groupId, authcfg, errorTitle, errorText, requestHeaders, feedback, pageSize, urlPrefix );
// filter results to desired types
QVariantList result;
@ -119,9 +119,9 @@ QVariantList QgsArcGisPortalUtils::retrieveGroupItemsOfType( const QString &cont
return result;
}
QVariantList QgsArcGisPortalUtils::retrieveGroupItemsOfType( const QString &contentUrl, const QString &groupId, const QString &authcfg, const QList<int> &itemTypes, QString &errorTitle, QString &errorText, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback, int pageSize )
QVariantList QgsArcGisPortalUtils::retrieveGroupItemsOfType( const QString &contentUrl, const QString &groupId, const QString &authcfg, const QList<int> &itemTypes, QString &errorTitle, QString &errorText, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback, int pageSize, const QString &urlPrefix )
{
return QgsArcGisPortalUtils::retrieveGroupItemsOfType( contentUrl, groupId, authcfg, itemTypes, errorTitle, errorText, QgsHttpHeaders( requestHeaders ), feedback, pageSize );
return QgsArcGisPortalUtils::retrieveGroupItemsOfType( contentUrl, groupId, authcfg, itemTypes, errorTitle, errorText, QgsHttpHeaders( requestHeaders ), feedback, pageSize, urlPrefix );
}

View File

@ -50,11 +50,12 @@ class CORE_EXPORT QgsArcGisPortalUtils
* \param errorText error text of any encountered errors
* \param requestHeaders optional additional request headers
* \param feedback optional feedback argument for cancellation support
* \param urlPrefix http web proxy url prefix
*
* \returns JSON user info
* \since QGIS 3.24
*/
static QVariantMap retrieveUserInfo( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle SIP_OUT, QString &errorText SIP_OUT, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = nullptr );
static QVariantMap retrieveUserInfo( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle SIP_OUT, QString &errorText SIP_OUT, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = nullptr, const QString &urlPrefix = QString() );
/**
* Retrieves JSON user info for the specified user name. Only to avoid API break.
@ -68,11 +69,12 @@ class CORE_EXPORT QgsArcGisPortalUtils
* \param errorText error text of any encountered errors
* \param requestHeaders optional additional request headers
* \param feedback optional feedback argument for cancellation support
* \param urlPrefix http web proxy url prefix
*
* \returns JSON user info
* \deprecated since QGIS 3.24, use the version with QgsHttpHeaders instead
*/
Q_DECL_DEPRECATED static QVariantMap retrieveUserInfo( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle SIP_OUT, QString &errorText SIP_OUT, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback = nullptr ) SIP_DEPRECATED;
Q_DECL_DEPRECATED static QVariantMap retrieveUserInfo( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle SIP_OUT, QString &errorText SIP_OUT, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback = nullptr, const QString &urlPrefix = QString() ) SIP_DEPRECATED;
/**
* Retrieves JSON definitions for all groups which the specified user name is a member of.
@ -86,11 +88,12 @@ class CORE_EXPORT QgsArcGisPortalUtils
* \param errorText error text of any encountered errors
* \param requestHeaders optional additional request headers
* \param feedback optional feedback argument for cancellation support
* \param urlPrefix http web proxy url prefix
*
* \returns a list of JSON group info
* \since QGIS 3.24
*/
static QVariantList retrieveUserGroups( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle SIP_OUT, QString &errorText SIP_OUT, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = nullptr );
static QVariantList retrieveUserGroups( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle SIP_OUT, QString &errorText SIP_OUT, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = nullptr, const QString &urlPrefix = QString() );
/**
* Retrieves JSON definitions for all groups which the specified user name is a member of. Only to avoid API break.
@ -104,11 +107,12 @@ class CORE_EXPORT QgsArcGisPortalUtils
* \param errorText error text of any encountered errors
* \param requestHeaders optional additional request headers
* \param feedback optional feedback argument for cancellation support
* \param urlPrefix http web proxy url prefix
*
* \returns a list of JSON group info
* \deprecated since QGIS 3.24, use the version with QgsHttpHeaders instead
*/
Q_DECL_DEPRECATED static QVariantList retrieveUserGroups( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle SIP_OUT, QString &errorText SIP_OUT, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback = nullptr ) SIP_DEPRECATED;
Q_DECL_DEPRECATED static QVariantList retrieveUserGroups( const QString &communityUrl, const QString &user, const QString &authcfg, QString &errorTitle SIP_OUT, QString &errorText SIP_OUT, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback = nullptr, const QString &urlPrefix = QString() ) SIP_DEPRECATED;
/**
* Retrieves JSON definitions for all items which belong the the specified \a groupId.
@ -121,11 +125,12 @@ class CORE_EXPORT QgsArcGisPortalUtils
* \param requestHeaders optional additional request headers
* \param feedback optional feedback argument for cancellation support
* \param pageSize number of results to retrieve for each request. Maximum value is 100.
* \param urlPrefix http web proxy url prefix
*
* \returns a list of JSON item info for all items within the group
* \since QGIS 3.24
*/
static QVariantList retrieveGroupContent( const QString &contentUrl, const QString &groupId, const QString &authcfg, QString &errorTitle SIP_OUT, QString &errorText SIP_OUT, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = nullptr, int pageSize = 100 );
static QVariantList retrieveGroupContent( const QString &contentUrl, const QString &groupId, const QString &authcfg, QString &errorTitle SIP_OUT, QString &errorText SIP_OUT, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = nullptr, int pageSize = 100, const QString &urlPrefix = QString() );
/**
* Retrieves JSON definitions for all items which belong the the specified \a groupId. Only to avoid API break.
@ -138,11 +143,12 @@ class CORE_EXPORT QgsArcGisPortalUtils
* \param requestHeaders optional additional request headers
* \param feedback optional feedback argument for cancellation support
* \param pageSize number of results to retrieve for each request. Maximum value is 100.
* \param urlPrefix http web proxy url prefix
*
* \returns a list of JSON item info for all items within the group
* \deprecated since QGIS 3.24, use the version with QgsHttpHeaders instead
*/
Q_DECL_DEPRECATED static QVariantList retrieveGroupContent( const QString &contentUrl, const QString &groupId, const QString &authcfg, QString &errorTitle SIP_OUT, QString &errorText SIP_OUT, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback = nullptr, int pageSize = 100 ) SIP_DEPRECATED;
Q_DECL_DEPRECATED static QVariantList retrieveGroupContent( const QString &contentUrl, const QString &groupId, const QString &authcfg, QString &errorTitle SIP_OUT, QString &errorText SIP_OUT, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback = nullptr, int pageSize = 100, const QString &urlPrefix = QString() ) SIP_DEPRECATED;
/**
* Retrieves JSON definitions for all items which belong the the specified \a groupId.
@ -156,13 +162,14 @@ class CORE_EXPORT QgsArcGisPortalUtils
* \param requestHeaders optional additional request headers
* \param feedback optional feedback argument for cancellation support
* \param pageSize number of results to retrieve for each request. Maximum value is 100.
* \param urlPrefix http web proxy url prefix
*
* \returns a list of JSON item info for all items within the group
* \since QGIS 3.24
*/
static QVariantList retrieveGroupItemsOfType( const QString &contentUrl, const QString &groupId, const QString &authcfg,
const QList< int > &itemTypes,
QString &errorTitle SIP_OUT, QString &errorText SIP_OUT, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = nullptr, int pageSize = 100 );
QString &errorTitle SIP_OUT, QString &errorText SIP_OUT, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = nullptr, int pageSize = 100, const QString &urlPrefix = QString() );
/**
* Retrieves JSON definitions for all items which belong the the specified \a groupId. Only to avoid API break.
@ -176,13 +183,14 @@ class CORE_EXPORT QgsArcGisPortalUtils
* \param requestHeaders optional additional request headers
* \param feedback optional feedback argument for cancellation support
* \param pageSize number of results to retrieve for each request. Maximum value is 100.
* \param urlPrefix http web proxy url prefix
*
* \returns a list of JSON item info for all items within the group
* \deprecated since QGIS 3.24, use the version with QgsHttpHeaders instead
*/
Q_DECL_DEPRECATED static QVariantList retrieveGroupItemsOfType( const QString &contentUrl, const QString &groupId, const QString &authcfg,
const QList< int > &itemTypes,
QString &errorTitle SIP_OUT, QString &errorText SIP_OUT, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback = nullptr, int pageSize = 100 ) SIP_DEPRECATED;
QString &errorTitle SIP_OUT, QString &errorText SIP_OUT, const QMap< QString, QVariant > &requestHeaders, QgsFeedback *feedback = nullptr, int pageSize = 100, const QString &urlPrefix = QString() ) SIP_DEPRECATED;
private:

View File

@ -29,27 +29,27 @@
#include <QRegularExpression>
#include <QJsonParseError>
QVariantMap QgsArcGisRestQueryUtils::getServiceInfo( const QString &baseurl, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders )
QVariantMap QgsArcGisRestQueryUtils::getServiceInfo( const QString &baseurl, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders, const QString &urlPrefix )
{
// http://sampleserver5.arcgisonline.com/arcgis/rest/services/Energy/Geology/FeatureServer?f=json
QUrl queryUrl( baseurl );
QUrlQuery query( queryUrl );
query.addQueryItem( QStringLiteral( "f" ), QStringLiteral( "json" ) );
queryUrl.setQuery( query );
return queryServiceJSON( queryUrl, authcfg, errorTitle, errorText, requestHeaders );
return queryServiceJSON( queryUrl, authcfg, errorTitle, errorText, requestHeaders, nullptr, urlPrefix );
}
QVariantMap QgsArcGisRestQueryUtils::getLayerInfo( const QString &layerurl, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders )
QVariantMap QgsArcGisRestQueryUtils::getLayerInfo( const QString &layerurl, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders, const QString &urlPrefix )
{
// http://sampleserver5.arcgisonline.com/arcgis/rest/services/Energy/Geology/FeatureServer/1?f=json
QUrl queryUrl( layerurl );
QUrlQuery query( queryUrl );
query.addQueryItem( QStringLiteral( "f" ), QStringLiteral( "json" ) );
queryUrl.setQuery( query );
return queryServiceJSON( queryUrl, authcfg, errorTitle, errorText, requestHeaders );
return queryServiceJSON( queryUrl, authcfg, errorTitle, errorText, requestHeaders, nullptr, urlPrefix );
}
QVariantMap QgsArcGisRestQueryUtils::getObjectIds( const QString &layerurl, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders, const QgsRectangle &bbox, const QString &whereClause )
QVariantMap QgsArcGisRestQueryUtils::getObjectIds( const QString &layerurl, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders, const QString &urlPrefix, const QgsRectangle &bbox, const QString &whereClause )
{
// http://sampleserver5.arcgisonline.com/arcgis/rest/services/Energy/Geology/FeatureServer/1/query?where=1%3D1&returnIdsOnly=true&f=json
QUrl queryUrl( layerurl + "/query" );
@ -66,10 +66,10 @@ QVariantMap QgsArcGisRestQueryUtils::getObjectIds( const QString &layerurl, cons
query.addQueryItem( QStringLiteral( "spatialRel" ), QStringLiteral( "esriSpatialRelEnvelopeIntersects" ) );
}
queryUrl.setQuery( query );
return queryServiceJSON( queryUrl, authcfg, errorTitle, errorText, requestHeaders );
return queryServiceJSON( queryUrl, authcfg, errorTitle, errorText, requestHeaders, nullptr, urlPrefix );
}
QgsRectangle QgsArcGisRestQueryUtils::getExtent( const QString &layerurl, const QString &whereClause, const QString &authcfg, const QgsHttpHeaders &requestHeaders )
QgsRectangle QgsArcGisRestQueryUtils::getExtent( const QString &layerurl, const QString &whereClause, const QString &authcfg, const QgsHttpHeaders &requestHeaders, const QString &urlPrefix )
{
// http://sampleserver5.arcgisonline.com/arcgis/rest/services/Energy/Geology/FeatureServer/1/query?where=1%3D1&returnExtentOnly=true&f=json
QUrl queryUrl( layerurl + "/query" );
@ -80,7 +80,7 @@ QgsRectangle QgsArcGisRestQueryUtils::getExtent( const QString &layerurl, const
queryUrl.setQuery( query );
QString errorTitle;
QString errorText;
const QVariantMap res = queryServiceJSON( queryUrl, authcfg, errorTitle, errorText, requestHeaders );
const QVariantMap res = queryServiceJSON( queryUrl, authcfg, errorTitle, errorText, requestHeaders, nullptr, urlPrefix );
if ( res.isEmpty() )
{
QgsDebugError( QStringLiteral( "getExtent failed: %1 - %2" ).arg( errorTitle, errorText ) );
@ -94,7 +94,7 @@ QVariantMap QgsArcGisRestQueryUtils::getObjects( const QString &layerurl, const
bool fetchGeometry, const QStringList &fetchAttributes,
bool fetchM, bool fetchZ,
const QgsRectangle &filterRect,
QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders, QgsFeedback *feedback )
QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders, QgsFeedback *feedback, const QString &urlPrefix )
{
QStringList ids;
for ( const int id : objectIds )
@ -129,10 +129,10 @@ QVariantMap QgsArcGisRestQueryUtils::getObjects( const QString &layerurl, const
query.addQueryItem( QStringLiteral( "spatialRel" ), QStringLiteral( "esriSpatialRelEnvelopeIntersects" ) );
}
queryUrl.setQuery( query );
return queryServiceJSON( queryUrl, authcfg, errorTitle, errorText, requestHeaders, feedback );
return queryServiceJSON( queryUrl, authcfg, errorTitle, errorText, requestHeaders, feedback, urlPrefix );
}
QList<quint32> QgsArcGisRestQueryUtils::getObjectIdsByExtent( const QString &layerurl, const QgsRectangle &filterRect, QString &errorTitle, QString &errorText, const QString &authcfg, const QgsHttpHeaders &requestHeaders, QgsFeedback *feedback, const QString &whereClause )
QList<quint32> QgsArcGisRestQueryUtils::getObjectIdsByExtent( const QString &layerurl, const QgsRectangle &filterRect, QString &errorTitle, QString &errorText, const QString &authcfg, const QgsHttpHeaders &requestHeaders, QgsFeedback *feedback, const QString &whereClause, const QString &urlPrefix )
{
QUrl queryUrl( layerurl + "/query" );
QUrlQuery query( queryUrl );
@ -145,7 +145,7 @@ QList<quint32> QgsArcGisRestQueryUtils::getObjectIdsByExtent( const QString &lay
query.addQueryItem( QStringLiteral( "geometryType" ), QStringLiteral( "esriGeometryEnvelope" ) );
query.addQueryItem( QStringLiteral( "spatialRel" ), QStringLiteral( "esriSpatialRelEnvelopeIntersects" ) );
queryUrl.setQuery( query );
const QVariantMap objectIdData = queryServiceJSON( queryUrl, authcfg, errorTitle, errorText, requestHeaders, feedback );
const QVariantMap objectIdData = queryServiceJSON( queryUrl, authcfg, errorTitle, errorText, requestHeaders, feedback, urlPrefix );
if ( objectIdData.isEmpty() )
{
@ -162,9 +162,12 @@ QList<quint32> QgsArcGisRestQueryUtils::getObjectIdsByExtent( const QString &lay
return ids;
}
QByteArray QgsArcGisRestQueryUtils::queryService( const QUrl &u, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders, QgsFeedback *feedback, QString *contentType )
QByteArray QgsArcGisRestQueryUtils::queryService( const QUrl &u, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders, QgsFeedback *feedback, QString *contentType, const QString &urlPrefix )
{
const QUrl url = parseUrl( u );
QUrl url = parseUrl( u );
if ( !urlPrefix.isEmpty() )
url = QUrl( urlPrefix + url.toString() );
QNetworkRequest request( url );
QgsSetRequestInitiatorClass( request, QStringLiteral( "QgsArcGisRestUtils" ) );
@ -202,9 +205,9 @@ QByteArray QgsArcGisRestQueryUtils::queryService( const QUrl &u, const QString &
return content.content();
}
QVariantMap QgsArcGisRestQueryUtils::queryServiceJSON( const QUrl &url, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders, QgsFeedback *feedback )
QVariantMap QgsArcGisRestQueryUtils::queryServiceJSON( const QUrl &url, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders, QgsFeedback *feedback, const QString &urlPrefix )
{
const QByteArray reply = queryService( url, authcfg, errorTitle, errorText, requestHeaders, feedback );
const QByteArray reply = queryService( url, authcfg, errorTitle, errorText, requestHeaders, feedback, nullptr, urlPrefix );
if ( !errorTitle.isEmpty() )
{
return QVariantMap();
@ -512,10 +515,13 @@ QgsArcGisAsyncQuery::~QgsArcGisAsyncQuery()
mReply->deleteLater();
}
void QgsArcGisAsyncQuery::start( const QUrl &url, const QString &authCfg, QByteArray *result, bool allowCache, const QgsHttpHeaders &headers )
void QgsArcGisAsyncQuery::start( const QUrl &url, const QString &authCfg, QByteArray *result, bool allowCache, const QgsHttpHeaders &headers, const QString &urlPrefix )
{
mResult = result;
QNetworkRequest request( url );
QUrl mUrl = url;
if ( !urlPrefix.isEmpty() )
mUrl = QUrl( urlPrefix + url.toString() );
QNetworkRequest request( mUrl );
headers.updateNetworkRequest( request );

View File

@ -51,17 +51,17 @@ class CORE_EXPORT QgsArcGisRestQueryUtils
/**
* Retrieves JSON service info for the specified base URL.
*/
static QVariantMap getServiceInfo( const QString &baseurl, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders() );
static QVariantMap getServiceInfo( const QString &baseurl, 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 QVariantMap getLayerInfo( const QString &layerurl, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders() );
static QVariantMap getLayerInfo( const QString &layerurl, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), const QString &urlPrefix = QString() );
/**
* Retrieves all object IDs for the specified layer URL.
*/
static QVariantMap getObjectIds( const QString &layerurl, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(),
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() );
@ -71,30 +71,30 @@ class CORE_EXPORT QgsArcGisRestQueryUtils
*
* \since QGIS 3.28
*/
static QgsRectangle getExtent( const QString &layerurl, const QString &whereClause, const QString &authcfg, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders() );
static QgsRectangle getExtent( const QString &layerurl, const QString &whereClause, const QString &authcfg, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), const QString &urlPrefix = QString() );
/**
* Retrieves all matching objects from the specified layer URL.
*/
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,
const QgsRectangle &filterRect, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = nullptr );
const QgsRectangle &filterRect, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = nullptr, const QString &urlPrefix = QString() );
/**
* Gets a list of object IDs which fall within the specified extent.
*/
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 &whereClause = QString(), const QString &urlPrefix = QString() );
/**
* Performs a blocking request to a URL and returns the retrieved data.
*/
static QByteArray queryService( const QUrl &url, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = nullptr, QString *contentType = nullptr );
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() );
/**
* Performs a blocking request to a URL and returns the retrieved JSON content.
*/
static QVariantMap queryServiceJSON( const QUrl &url, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = nullptr );
static QVariantMap queryServiceJSON( const QUrl &url, const QString &authcfg, QString &errorTitle, QString &errorText, const QgsHttpHeaders &requestHeaders = QgsHttpHeaders(), QgsFeedback *feedback = nullptr, const QString &urlPrefix = QString() );
/**
* Calls the specified \a visitor function on all folder items found within the given service data.
@ -131,7 +131,7 @@ class CORE_EXPORT QgsArcGisAsyncQuery : public QObject
QgsArcGisAsyncQuery( QObject *parent = nullptr );
~QgsArcGisAsyncQuery() override;
void start( const QUrl &url, const QString &authCfg, QByteArray *result, bool allowCache = false, const QgsHttpHeaders &headers = QgsHttpHeaders() );
void start( const QUrl &url, const QString &authCfg, QByteArray *result, bool allowCache = false, const QgsHttpHeaders &headers = QgsHttpHeaders(), const QString &urlPrefix = QString() );
signals:
void finished();
void failed( QString errorTitle, QString errorName );

View File

@ -51,6 +51,7 @@ const QgsSettingsEntryString *QgsArcGisConnectionSettings::settingsAuthcfg = new
const QgsSettingsEntryString *QgsArcGisConnectionSettings::settingsUsername = new QgsSettingsEntryString( QStringLiteral( "username" ), sTreeConnectionArcgis );
const QgsSettingsEntryString *QgsArcGisConnectionSettings::settingsPassword = new QgsSettingsEntryString( QStringLiteral( "password" ), sTreeConnectionArcgis );
const QgsSettingsEntryVariantMap *QgsArcGisConnectionSettings::settingsHeaders = new QgsSettingsEntryVariantMap( QStringLiteral( "http-header" ), sTreeConnectionArcgis );
const QgsSettingsEntryString *QgsArcGisConnectionSettings::settingsUrlPrefix = new QgsSettingsEntryString( QStringLiteral( "urlprefix" ), sTreeConnectionArcgis );
const QgsSettingsEntryString *QgsArcGisConnectionSettings::settingsContentEndpoint = new QgsSettingsEntryString( QStringLiteral( "content-endpoint" ), sTreeConnectionArcgis );
const QgsSettingsEntryString *QgsArcGisConnectionSettings::settingsCommunityEndpoint = new QgsSettingsEntryString( QStringLiteral( "community-endpoint" ), sTreeConnectionArcgis );

View File

@ -79,6 +79,7 @@ class CORE_EXPORT QgsArcGisConnectionSettings SIP_SKIP
static const QgsSettingsEntryVariantMap *settingsHeaders;
static const QgsSettingsEntryString *settingsContentEndpoint;
static const QgsSettingsEntryString *settingsCommunityEndpoint;
static const QgsSettingsEntryString *settingsUrlPrefix;
};

View File

@ -46,13 +46,14 @@ QgsAfsProvider::QgsAfsProvider( const QString &uri, const ProviderOptions &optio
QString errorTitle, errorMessage;
mRequestHeaders = mSharedData->mDataSource.httpHeaders();
const QString &urlPrefix = mSharedData->mDataSource.param( QStringLiteral( "urlprefix" ) );
std::unique_ptr< QgsScopedRuntimeProfile > profile;
if ( QgsApplication::profiler()->groupIsActive( QStringLiteral( "projectload" ) ) )
profile = std::make_unique< QgsScopedRuntimeProfile >( tr( "Retrieve service definition" ), QStringLiteral( "projectload" ) );
const QVariantMap layerData = QgsArcGisRestQueryUtils::getLayerInfo( mSharedData->mDataSource.param( QStringLiteral( "url" ) ),
authcfg, errorTitle, errorMessage, mRequestHeaders );
authcfg, errorTitle, errorMessage, mRequestHeaders, urlPrefix );
if ( layerData.isEmpty() )
{
pushError( errorTitle + ": " + errorMessage );
@ -75,7 +76,7 @@ QgsAfsProvider::QgsAfsProvider( const QString &uri, const ProviderOptions &optio
{
adminUrl.replace( QLatin1String( "/rest/services/" ), QLatin1String( "/rest/admin/services/" ) );
const QVariantMap adminData = QgsArcGisRestQueryUtils::getLayerInfo( adminUrl,
authcfg, errorTitle, errorMessage, mRequestHeaders );
authcfg, errorTitle, errorMessage, mRequestHeaders, urlPrefix );
if ( !adminData.isEmpty() )
{
mAdminUrl = adminUrl;

View File

@ -110,7 +110,7 @@ bool QgsAfsSharedData::getObjectIds( QString &errorMessage )
QString errorTitle;
QString error;
QVariantMap objectIdData = QgsArcGisRestQueryUtils::getObjectIds( mDataSource.param( QStringLiteral( "url" ) ), mDataSource.authConfigId(),
errorTitle, error, mDataSource.httpHeaders(), mLimitBBox ? mExtent : QgsRectangle(), mDataSource.sql() );
errorTitle, error, mDataSource.httpHeaders(), mDataSource.param( QStringLiteral( "urlprefix" ) ), mLimitBBox ? mExtent : QgsRectangle(), mDataSource.sql() );
if ( objectIdData.isEmpty() )
{
errorMessage = QObject::tr( "getObjectIds failed: %1 - %2" ).arg( errorTitle, error );
@ -205,7 +205,7 @@ bool QgsAfsSharedData::getFeature( QgsFeatureId id, QgsFeature &f, const QgsRect
queryData = QgsArcGisRestQueryUtils::getObjects(
mDataSource.param( QStringLiteral( "url" ) ), authcfg, objectIds, mDataSource.param( QStringLiteral( "crs" ) ), true,
QStringList(), QgsWkbTypes::hasM( mGeometryType ), QgsWkbTypes::hasZ( mGeometryType ),
filterRect, errorTitle, errorMessage, mDataSource.httpHeaders(), feedback );
filterRect, errorTitle, errorMessage, mDataSource.httpHeaders(), feedback, mDataSource.param( QStringLiteral( "urlprefix" ) ) );
if ( feedback && feedback->isCanceled() )
{
@ -306,7 +306,7 @@ QgsFeatureIds QgsAfsSharedData::getFeatureIdsInExtent( const QgsRectangle &exten
const QString authcfg = mDataSource.authConfigId();
const QList<quint32> objectIdsInRect = QgsArcGisRestQueryUtils::getObjectIdsByExtent( mDataSource.param( QStringLiteral( "url" ) ),
extent, errorTitle, errorText, authcfg, mDataSource.httpHeaders(), feedback, mDataSource.sql() );
extent, errorTitle, errorText, authcfg, mDataSource.httpHeaders(), feedback, mDataSource.sql(), mDataSource.param( QStringLiteral( "urlprefix" ) ) );
QgsReadWriteLocker locker( mReadWriteLock, QgsReadWriteLocker::Read );
QgsFeatureIds ids;

View File

@ -81,12 +81,13 @@ void QgsAmsLegendFetcher::start()
// http://sampleserver5.arcgisonline.com/arcgis/rest/services/CommunityAddressing/MapServer/legend?f=pjson
QgsDataSourceUri dataSource( mProvider->dataSourceUri() );
const QString authCfg = dataSource.authConfigId();
const QString urlPrefix = dataSource.param( QStringLiteral( "urlprefix" ) );
QUrl queryUrl( dataSource.param( QStringLiteral( "url" ) ) + "/legend" );
QUrlQuery query( queryUrl );
query.addQueryItem( QStringLiteral( "f" ), QStringLiteral( "json" ) );
queryUrl.setQuery( query );
mQuery->start( queryUrl, authCfg, &mQueryReply, false, dataSource.httpHeaders() );
mQuery->start( queryUrl, authCfg, &mQueryReply, false, dataSource.httpHeaders(), urlPrefix );
}
else
{
@ -118,6 +119,7 @@ void QgsAmsLegendFetcher::handleFinished()
QVariantMap queryResults = doc.object().toVariantMap();
QgsDataSourceUri dataSource( mProvider->dataSourceUri() );
QVector< QPair<QString, QImage> > legendEntries;
const QVariantList layersList = queryResults.value( QStringLiteral( "layers" ) ).toList();
for ( const QVariant &result : layersList )
{
@ -189,6 +191,7 @@ QgsAmsProvider::QgsAmsProvider( const QString &uri, const ProviderOptions &optio
{
QgsDataSourceUri dataSource( dataSourceUri() );
mRequestHeaders = dataSource.httpHeaders();
mUrlPrefix = dataSource.param( QStringLiteral( "urlprefix" ) );
mLegendFetcher = new QgsAmsLegendFetcher( this, QImage() );
@ -197,7 +200,7 @@ QgsAmsProvider::QgsAmsProvider( const QString &uri, const ProviderOptions &optio
const QString serviceUrl = dataSource.param( QStringLiteral( "url" ) );
if ( !serviceUrl.isEmpty() )
mServiceInfo = QgsArcGisRestQueryUtils::getServiceInfo( serviceUrl, authcfg, mErrorTitle, mError, mRequestHeaders );
mServiceInfo = QgsArcGisRestQueryUtils::getServiceInfo( serviceUrl, authcfg, mErrorTitle, mError, mRequestHeaders, mUrlPrefix );
QString layerUrl;
if ( dataSource.param( QStringLiteral( "layer" ) ).isEmpty() )
@ -210,7 +213,7 @@ QgsAmsProvider::QgsAmsProvider( const QString &uri, const ProviderOptions &optio
else
{
layerUrl = dataSource.param( QStringLiteral( "url" ) ) + "/" + dataSource.param( QStringLiteral( "layer" ) );
mLayerInfo = QgsArcGisRestQueryUtils::getLayerInfo( layerUrl, authcfg, mErrorTitle, mError, mRequestHeaders );
mLayerInfo = QgsArcGisRestQueryUtils::getLayerInfo( layerUrl, authcfg, mErrorTitle, mError, mRequestHeaders, mUrlPrefix );
}
QVariantMap extentData;
@ -330,6 +333,7 @@ QgsAmsProvider::QgsAmsProvider( const QgsAmsProvider &other, const QgsDataProvid
, mMaxImageHeight( other.mMaxImageHeight )
, mLayerMetadata( other.mLayerMetadata )
, mResolutions( other.mResolutions )
, mUrlPrefix( other.mUrlPrefix )
// intentionally omitted:
// - mErrorTitle
// - mError
@ -702,7 +706,7 @@ QImage QgsAmsProvider::draw( const QgsRectangle &viewExtent, int pixelWidth, int
cmp.center = viewExtent.center();
std::sort( requestsFinal.begin(), requestsFinal.end(), cmp );
QgsAmsTiledImageDownloadHandler handler( authcfg, mRequestHeaders, mTileReqNo, requestsFinal, &image, viewExtent, feedback );
QgsAmsTiledImageDownloadHandler handler( authcfg, mRequestHeaders, mTileReqNo, requestsFinal, &image, viewExtent, feedback, mUrlPrefix );
handler.downloadBlocking();
}
@ -751,7 +755,7 @@ QImage QgsAmsProvider::draw( const QgsRectangle &viewExtent, int pixelWidth, int
mError.clear();
mErrorTitle.clear();
QString contentType;
QByteArray reply = QgsArcGisRestQueryUtils::queryService( requestUrl, authcfg, mErrorTitle, mError, mRequestHeaders, feedback, &contentType );
QByteArray reply = QgsArcGisRestQueryUtils::queryService( requestUrl, authcfg, mErrorTitle, mError, mRequestHeaders, feedback, &contentType, mUrlPrefix );
if ( !mError.isEmpty() )
{
p.end();
@ -935,7 +939,7 @@ bool QgsAmsProvider::readBlock( int /*bandNo*/, const QgsRectangle &viewExtent,
// QgsAmsTiledImageDownloadHandler
//
QgsAmsTiledImageDownloadHandler::QgsAmsTiledImageDownloadHandler( const QString &auth, const QgsHttpHeaders &requestHeaders, int tileReqNo, const QgsAmsProvider::TileRequests &requests, QImage *image, const QgsRectangle &viewExtent, QgsRasterBlockFeedback *feedback )
QgsAmsTiledImageDownloadHandler::QgsAmsTiledImageDownloadHandler( const QString &auth, const QgsHttpHeaders &requestHeaders, int tileReqNo, const QgsAmsProvider::TileRequests &requests, QImage *image, const QgsRectangle &viewExtent, QgsRasterBlockFeedback *feedback, const QString &urlPrefix )
: mAuth( auth )
, mRequestHeaders( requestHeaders )
, mImage( image )
@ -943,6 +947,7 @@ QgsAmsTiledImageDownloadHandler::QgsAmsTiledImageDownloadHandler( const QString
, mEventLoop( new QEventLoop )
, mTileReqNo( tileReqNo )
, mFeedback( feedback )
, mUrlPrefix( urlPrefix )
{
if ( feedback )
{

View File

@ -161,6 +161,7 @@ class QgsAmsProvider : public QgsRasterDataProvider
int mMaxImageHeight = 4096;
QgsLayerMetadata mLayerMetadata;
QList< double > mResolutions;
QString mUrlPrefix;
/**
* Resets cached image
@ -174,7 +175,7 @@ class QgsAmsTiledImageDownloadHandler : public QObject
Q_OBJECT
public:
QgsAmsTiledImageDownloadHandler( const QString &auth, const QgsHttpHeaders &requestHeaders, int reqNo, const QgsAmsProvider::TileRequests &requests, QImage *image, const QgsRectangle &viewExtent, QgsRasterBlockFeedback *feedback );
QgsAmsTiledImageDownloadHandler( const QString &auth, const QgsHttpHeaders &requestHeaders, int reqNo, const QgsAmsProvider::TileRequests &requests, QImage *image, const QgsRectangle &viewExtent, QgsRasterBlockFeedback *feedback, const QString &urlPrefix );
~QgsAmsTiledImageDownloadHandler() override;
void downloadBlocking();
@ -218,6 +219,7 @@ class QgsAmsTiledImageDownloadHandler : public QObject
QList<QNetworkReply *> mReplies;
QgsRasterBlockFeedback *mFeedback = nullptr;
QString mUrlPrefix;
};
class QgsAmsProviderMetadata: public QgsProviderMetadata

View File

@ -72,36 +72,36 @@ void QgsArcGisRestRootItem::onConnectionsChanged()
///////////////////////////////////////////////////////////////////////////////
void addFolderItems( QVector< QgsDataItem * > &items, const QVariantMap &serviceData, const QString &baseUrl, const QString &authcfg, const QgsHttpHeaders &headers, QgsDataItem *parent,
void addFolderItems( QVector< QgsDataItem * > &items, const QVariantMap &serviceData, const QString &baseUrl, const QString &authcfg, const QgsHttpHeaders &headers, const QString &urlPrefix, QgsDataItem *parent,
const QString &supportedFormats )
{
QgsArcGisRestQueryUtils::visitFolderItems( [parent, &baseUrl, &items, headers, authcfg, supportedFormats]( const QString & name, const QString & url )
QgsArcGisRestQueryUtils::visitFolderItems( [parent, &baseUrl, &items, headers, urlPrefix, authcfg, supportedFormats]( const QString & name, const QString & url )
{
std::unique_ptr< QgsArcGisRestFolderItem > folderItem = std::make_unique< QgsArcGisRestFolderItem >( parent, name, url, baseUrl, authcfg, headers );
std::unique_ptr< QgsArcGisRestFolderItem > folderItem = std::make_unique< QgsArcGisRestFolderItem >( parent, name, url, baseUrl, authcfg, headers, urlPrefix );
folderItem->setSupportedFormats( supportedFormats );
items.append( folderItem.release() );
}, serviceData, baseUrl );
}
void addServiceItems( QVector< QgsDataItem * > &items, const QVariantMap &serviceData, const QString &baseUrl, const QString &authcfg, const QgsHttpHeaders &headers, QgsDataItem *parent,
void addServiceItems( QVector< QgsDataItem * > &items, const QVariantMap &serviceData, const QString &baseUrl, const QString &authcfg, const QgsHttpHeaders &headers, const QString &urlPrefix, QgsDataItem *parent,
const QString &supportedFormats )
{
QgsArcGisRestQueryUtils::visitServiceItems(
[&items, parent, authcfg, headers, supportedFormats]( const QString & name, const QString & url, Qgis::ArcGisRestServiceType serviceType )
[&items, parent, authcfg, headers, urlPrefix, supportedFormats]( const QString & name, const QString & url, Qgis::ArcGisRestServiceType serviceType )
{
switch ( serviceType )
{
case Qgis::ArcGisRestServiceType::MapServer:
case Qgis::ArcGisRestServiceType::ImageServer:
{
std::unique_ptr< QgsArcGisMapServiceItem > serviceItem = std::make_unique< QgsArcGisMapServiceItem >( parent, name, url, url, authcfg, headers, serviceType );
std::unique_ptr< QgsArcGisMapServiceItem > serviceItem = std::make_unique< QgsArcGisMapServiceItem >( parent, name, url, url, authcfg, headers, urlPrefix, serviceType );
items.append( serviceItem.release() );
break;
}
case Qgis::ArcGisRestServiceType::FeatureServer:
{
std::unique_ptr< QgsArcGisFeatureServiceItem > serviceItem = std::make_unique< QgsArcGisFeatureServiceItem >( parent, name, url, url, authcfg, headers );
std::unique_ptr< QgsArcGisFeatureServiceItem > serviceItem = std::make_unique< QgsArcGisFeatureServiceItem >( parent, name, url, url, authcfg, headers, urlPrefix );
serviceItem->setSupportedFormats( supportedFormats );
items.append( serviceItem.release() );
break;
@ -116,13 +116,13 @@ void addServiceItems( QVector< QgsDataItem * > &items, const QVariantMap &servic
}, serviceData, baseUrl );
}
void addLayerItems( QVector< QgsDataItem * > &items, const QVariantMap &serviceData, const QString &parentUrl, const QString &authcfg, const QgsHttpHeaders &headers, QgsDataItem *parent, QgsArcGisRestQueryUtils::ServiceTypeFilter serviceTypeFilter,
void addLayerItems( QVector< QgsDataItem * > &items, const QVariantMap &serviceData, const QString &parentUrl, const QString &authcfg, const QgsHttpHeaders &headers, const QString urlPrefix, QgsDataItem *parent, QgsArcGisRestQueryUtils::ServiceTypeFilter serviceTypeFilter,
const QString &supportedFormats )
{
QMultiMap< QString, QgsDataItem * > layerItems;
QMap< QString, QString > parents;
QgsArcGisRestQueryUtils::addLayerItems( [parent, &layerItems, &parents, authcfg, headers, serviceTypeFilter, supportedFormats]( const QString & parentLayerId, QgsArcGisRestQueryUtils::ServiceTypeFilter serviceType, Qgis::GeometryType geometryType, const QString & id, const QString & name, const QString & description, const QString & url, bool isParent, const QString & authid, const QString & format )
QgsArcGisRestQueryUtils::addLayerItems( [parent, &layerItems, &parents, authcfg, headers, urlPrefix, serviceTypeFilter, supportedFormats]( const QString & parentLayerId, QgsArcGisRestQueryUtils::ServiceTypeFilter serviceType, Qgis::GeometryType geometryType, const QString & id, const QString & name, const QString & description, const QString & url, bool isParent, const QString & authid, const QString & format )
{
Q_UNUSED( description )
@ -133,7 +133,7 @@ void addLayerItems( QVector< QgsDataItem * > &items, const QVariantMap &serviceD
{
if ( !layerItems.value( id ) )
{
std::unique_ptr< QgsArcGisRestParentLayerItem > layerItem = std::make_unique< QgsArcGisRestParentLayerItem >( parent, name, url, authcfg, headers );
std::unique_ptr< QgsArcGisRestParentLayerItem > layerItem = std::make_unique< QgsArcGisRestParentLayerItem >( parent, name, url, authcfg, headers, urlPrefix );
layerItems.insert( id, layerItem.release() );
}
}
@ -143,14 +143,14 @@ void addLayerItems( QVector< QgsDataItem * > &items, const QVariantMap &serviceD
switch ( serviceTypeFilter == QgsArcGisRestQueryUtils::ServiceTypeFilter::AllTypes ? serviceType : serviceTypeFilter )
{
case QgsArcGisRestQueryUtils::ServiceTypeFilter::Vector:
layerItem = std::make_unique< QgsArcGisFeatureServiceLayerItem >( parent, name, url, name, authid, authcfg, headers, geometryType == Qgis::GeometryType::Polygon ? Qgis::BrowserLayerType::Polygon :
layerItem = std::make_unique< QgsArcGisFeatureServiceLayerItem >( parent, name, url, name, authid, authcfg, headers, urlPrefix, geometryType == Qgis::GeometryType::Polygon ? Qgis::BrowserLayerType::Polygon :
geometryType == Qgis::GeometryType::Line ? Qgis::BrowserLayerType::Line
: geometryType == Qgis::GeometryType::Point ? Qgis::BrowserLayerType::Point :
geometryType == Qgis::GeometryType::Null ? Qgis::BrowserLayerType::TableLayer : Qgis::BrowserLayerType::Vector );
break;
case QgsArcGisRestQueryUtils::ServiceTypeFilter::Raster:
layerItem = std::make_unique< QgsArcGisMapServiceLayerItem >( parent, name, url, id, name, authid, format, authcfg, headers );
layerItem = std::make_unique< QgsArcGisMapServiceLayerItem >( parent, name, url, id, name, authid, format, authcfg, headers, urlPrefix );
static_cast< QgsArcGisMapServiceLayerItem * >( layerItem.get() )->setSupportedFormats( supportedFormats );
break;
@ -197,18 +197,19 @@ QVector<QgsDataItem *> QgsArcGisRestConnectionItem::createChildren()
const QString url = QgsArcGisConnectionSettings::settingsUrl->value( mConnName );
const QString authcfg = QgsArcGisConnectionSettings::settingsAuthcfg->value( mConnName );
QgsHttpHeaders headers( QgsArcGisConnectionSettings::settingsHeaders->value() );
QgsHttpHeaders headers( QgsArcGisConnectionSettings::settingsHeaders->value( mConnName ) );
const QString urlPrefix = QgsArcGisConnectionSettings::settingsUrlPrefix->value( mConnName );
QVector<QgsDataItem *> items;
if ( !mPortalCommunityEndpoint.isEmpty() && !mPortalContentEndpoint.isEmpty() )
{
items << new QgsArcGisPortalGroupsItem( this, QStringLiteral( "groups" ), authcfg, headers, mPortalCommunityEndpoint, mPortalContentEndpoint );
items << new QgsArcGisRestServicesItem( this, url, QStringLiteral( "services" ), authcfg, headers );
items << new QgsArcGisPortalGroupsItem( this, QStringLiteral( "groups" ), authcfg, headers, urlPrefix, mPortalCommunityEndpoint, mPortalContentEndpoint );
items << new QgsArcGisRestServicesItem( this, url, QStringLiteral( "services" ), authcfg, headers, urlPrefix );
}
else
{
QString errorTitle, errorMessage;
const QVariantMap serviceData = QgsArcGisRestQueryUtils::getServiceInfo( url, authcfg, errorTitle, errorMessage, headers );
const QVariantMap serviceData = QgsArcGisRestQueryUtils::getServiceInfo( url, authcfg, errorTitle, errorMessage, headers, urlPrefix );
if ( serviceData.isEmpty() )
{
if ( !errorMessage.isEmpty() )
@ -221,9 +222,9 @@ QVector<QgsDataItem *> QgsArcGisRestConnectionItem::createChildren()
return items;
}
addFolderItems( items, serviceData, url, authcfg, headers, this, QString() );
addServiceItems( items, serviceData, url, authcfg, headers, this, QString() );
addLayerItems( items, serviceData, url, authcfg, headers, this, QgsArcGisRestQueryUtils::ServiceTypeFilter::AllTypes, QString() );
addFolderItems( items, serviceData, url, authcfg, headers, urlPrefix, this, QString() );
addServiceItems( items, serviceData, url, authcfg, headers, urlPrefix, this, QString() );
addLayerItems( items, serviceData, url, authcfg, headers, urlPrefix, this, QgsArcGisRestQueryUtils::ServiceTypeFilter::AllTypes, QString() );
}
return items;
@ -245,10 +246,11 @@ QString QgsArcGisRestConnectionItem::url() const
// QgsArcGisPortalGroupsItem
//
QgsArcGisPortalGroupsItem::QgsArcGisPortalGroupsItem( QgsDataItem *parent, const QString &path, const QString &authcfg, const QgsHttpHeaders &headers, const QString &communityEndpoint, const QString &contentEndpoint )
QgsArcGisPortalGroupsItem::QgsArcGisPortalGroupsItem( QgsDataItem *parent, const QString &path, const QString &authcfg, const QgsHttpHeaders &headers, const QString &urlPrefix, const QString &communityEndpoint, const QString &contentEndpoint )
: QgsDataCollectionItem( parent, tr( "Groups" ), path, QStringLiteral( "AFS" ) )
, mAuthCfg( authcfg )
, mHeaders( headers )
, mUrlPrefix( urlPrefix )
, mPortalCommunityEndpoint( communityEndpoint )
, mPortalContentEndpoint( contentEndpoint )
{
@ -282,7 +284,7 @@ QVector<QgsDataItem *> QgsArcGisPortalGroupsItem::createChildren()
const QVariantMap groupData = group.toMap();
items << new QgsArcGisPortalGroupItem( this, groupData.value( QStringLiteral( "id" ) ).toString(),
groupData.value( QStringLiteral( "title" ) ).toString(),
mAuthCfg, mHeaders, mPortalCommunityEndpoint, mPortalContentEndpoint );
mAuthCfg, mHeaders, mUrlPrefix, mPortalCommunityEndpoint, mPortalContentEndpoint );
items.last()->setToolTip( groupData.value( QStringLiteral( "snippet" ) ).toString() );
}
@ -299,11 +301,12 @@ bool QgsArcGisPortalGroupsItem::equal( const QgsDataItem *other )
//
// QgsArcGisPortalGroupItem
//
QgsArcGisPortalGroupItem::QgsArcGisPortalGroupItem( QgsDataItem *parent, const QString &groupId, const QString &name, const QString &authcfg, const QgsHttpHeaders &headers, const QString &communityEndpoint, const QString &contentEndpoint )
QgsArcGisPortalGroupItem::QgsArcGisPortalGroupItem( QgsDataItem *parent, const QString &groupId, const QString &name, const QString &authcfg, const QgsHttpHeaders &headers, const QString &urlPrefix, const QString &communityEndpoint, const QString &contentEndpoint )
: QgsDataCollectionItem( parent, name, groupId, QStringLiteral( "AFS" ) )
, mId( groupId )
, mAuthCfg( authcfg )
, mHeaders( headers )
, mUrlPrefix( urlPrefix )
, mPortalCommunityEndpoint( communityEndpoint )
, mPortalContentEndpoint( contentEndpoint )
{
@ -342,13 +345,13 @@ QVector<QgsDataItem *> QgsArcGisPortalGroupItem::createChildren()
{
items << new QgsArcGisFeatureServiceItem( this, itemData.value( QStringLiteral( "title" ) ).toString(),
itemData.value( QStringLiteral( "url" ) ).toString(),
itemData.value( QStringLiteral( "url" ) ).toString(), mAuthCfg, mHeaders );
itemData.value( QStringLiteral( "url" ) ).toString(), mAuthCfg, mHeaders, mUrlPrefix );
}
else
{
items << new QgsArcGisMapServiceItem( this, itemData.value( QStringLiteral( "title" ) ).toString(),
itemData.value( QStringLiteral( "url" ) ).toString(),
itemData.value( QStringLiteral( "url" ) ).toString(), mAuthCfg, mHeaders, itemData.value( QStringLiteral( "type" ) ).toString().compare( QStringLiteral( "Map Service" ), Qt::CaseInsensitive ) == 0 ? Qgis::ArcGisRestServiceType::MapServer : Qgis::ArcGisRestServiceType::ImageServer );
itemData.value( QStringLiteral( "url" ) ).toString(), mAuthCfg, mHeaders, mUrlPrefix, itemData.value( QStringLiteral( "type" ) ).toString().compare( QStringLiteral( "Map Service" ), Qt::CaseInsensitive ) == 0 ? Qgis::ArcGisRestServiceType::MapServer : Qgis::ArcGisRestServiceType::ImageServer );
}
}
@ -366,11 +369,12 @@ bool QgsArcGisPortalGroupItem::equal( const QgsDataItem *other )
// QgsArcGisRestServicesItem
//
QgsArcGisRestServicesItem::QgsArcGisRestServicesItem( QgsDataItem *parent, const QString &url, const QString &path, const QString &authcfg, const QgsHttpHeaders &headers )
QgsArcGisRestServicesItem::QgsArcGisRestServicesItem( QgsDataItem *parent, const QString &url, const QString &path, const QString &authcfg, const QgsHttpHeaders &headers, const QString urlPrefix )
: QgsDataCollectionItem( parent, tr( "Services" ), path, QStringLiteral( "AFS" ) )
, mUrl( url )
, mAuthCfg( authcfg )
, mHeaders( headers )
, mUrlPrefix( urlPrefix )
{
mIconName = QStringLiteral( "mIconDbSchema.svg" );
mCapabilities |= Qgis::BrowserItemCapability::Collapse;
@ -380,7 +384,7 @@ QVector<QgsDataItem *> QgsArcGisRestServicesItem::createChildren()
{
QVector<QgsDataItem *> items;
QString errorTitle, errorMessage;
const QVariantMap serviceData = QgsArcGisRestQueryUtils::getServiceInfo( mUrl, mAuthCfg, errorTitle, errorMessage, mHeaders );
const QVariantMap serviceData = QgsArcGisRestQueryUtils::getServiceInfo( mUrl, mAuthCfg, errorTitle, errorMessage, mHeaders, mUrlPrefix );
if ( serviceData.isEmpty() )
{
if ( !errorMessage.isEmpty() )
@ -393,9 +397,9 @@ QVector<QgsDataItem *> QgsArcGisRestServicesItem::createChildren()
return items;
}
addFolderItems( items, serviceData, mUrl, mAuthCfg, mHeaders, this, QString() );
addServiceItems( items, serviceData, mUrl, mAuthCfg, mHeaders, this, QString() );
addLayerItems( items, serviceData, mUrl, mAuthCfg, mHeaders, this, QgsArcGisRestQueryUtils::ServiceTypeFilter::AllTypes, QString() );
addFolderItems( items, serviceData, mUrl, mAuthCfg, mHeaders, mUrlPrefix, this, QString() );
addServiceItems( items, serviceData, mUrl, mAuthCfg, mHeaders, mUrlPrefix, this, QString() );
addLayerItems( items, serviceData, mUrl, mAuthCfg, mHeaders, mUrlPrefix, this, QgsArcGisRestQueryUtils::ServiceTypeFilter::AllTypes, QString() );
return items;
}
@ -410,11 +414,12 @@ bool QgsArcGisRestServicesItem::equal( const QgsDataItem *other )
//
// QgsArcGisRestFolderItem
//
QgsArcGisRestFolderItem::QgsArcGisRestFolderItem( QgsDataItem *parent, const QString &name, const QString &path, const QString &baseUrl, const QString &authcfg, const QgsHttpHeaders &headers )
QgsArcGisRestFolderItem::QgsArcGisRestFolderItem( QgsDataItem *parent, const QString &name, const QString &path, const QString &baseUrl, const QString &authcfg, const QgsHttpHeaders &headers, const QString &urlPrefix )
: QgsDataCollectionItem( parent, name, path, QStringLiteral( "AFS" ) )
, mBaseUrl( baseUrl )
, mAuthCfg( authcfg )
, mHeaders( headers )
, mUrlPrefix( urlPrefix )
{
mIconName = QStringLiteral( "mIconDbSchema.svg" );
mCapabilities |= Qgis::BrowserItemCapability::Collapse;
@ -446,9 +451,9 @@ QVector<QgsDataItem *> QgsArcGisRestFolderItem::createChildren()
return items;
}
addFolderItems( items, serviceData, mBaseUrl, mAuthCfg, mHeaders, this, mSupportedFormats );
addServiceItems( items, serviceData, mBaseUrl, mAuthCfg, mHeaders, this, mSupportedFormats );
addLayerItems( items, serviceData, mPath, mAuthCfg, mHeaders, this, QgsArcGisRestQueryUtils::ServiceTypeFilter::Vector, mSupportedFormats );
addFolderItems( items, serviceData, mBaseUrl, mAuthCfg, mHeaders, mUrlPrefix, this, mSupportedFormats );
addServiceItems( items, serviceData, mBaseUrl, mAuthCfg, mHeaders, mUrlPrefix, this, mSupportedFormats );
addLayerItems( items, serviceData, mPath, mAuthCfg, mHeaders, mUrlPrefix, this, QgsArcGisRestQueryUtils::ServiceTypeFilter::Vector, mSupportedFormats );
return items;
}
@ -461,11 +466,12 @@ bool QgsArcGisRestFolderItem::equal( const QgsDataItem *other )
//
// QgsArcGisFeatureServiceItem
//
QgsArcGisFeatureServiceItem::QgsArcGisFeatureServiceItem( QgsDataItem *parent, const QString &name, const QString &path, const QString &baseUrl, const QString &authcfg, const QgsHttpHeaders &headers )
QgsArcGisFeatureServiceItem::QgsArcGisFeatureServiceItem( QgsDataItem *parent, const QString &name, const QString &path, const QString &baseUrl, const QString &authcfg, const QgsHttpHeaders &headers, const QString &urlPrefix )
: QgsDataCollectionItem( parent, name, path, QStringLiteral( "AFS" ) )
, mBaseUrl( baseUrl )
, mAuthCfg( authcfg )
, mHeaders( headers )
, mUrlPrefix( urlPrefix )
{
mIconName = QStringLiteral( "mIconDbSchema.svg" );
mCapabilities |= Qgis::BrowserItemCapability::Collapse;
@ -483,7 +489,7 @@ QVector<QgsDataItem *> QgsArcGisFeatureServiceItem::createChildren()
QVector<QgsDataItem *> items;
QString errorTitle, errorMessage;
const QVariantMap serviceData = QgsArcGisRestQueryUtils::getServiceInfo( url, mAuthCfg, errorTitle, errorMessage, mHeaders );
const QVariantMap serviceData = QgsArcGisRestQueryUtils::getServiceInfo( url, mAuthCfg, errorTitle, errorMessage, mHeaders, mUrlPrefix );
if ( serviceData.isEmpty() )
{
if ( !errorMessage.isEmpty() )
@ -496,9 +502,9 @@ QVector<QgsDataItem *> QgsArcGisFeatureServiceItem::createChildren()
return items;
}
addFolderItems( items, serviceData, mBaseUrl, mAuthCfg, mHeaders, this, mSupportedFormats );
addServiceItems( items, serviceData, mBaseUrl, mAuthCfg, mHeaders, this, mSupportedFormats );
addLayerItems( items, serviceData, mPath, mAuthCfg, mHeaders, this, QgsArcGisRestQueryUtils::ServiceTypeFilter::Vector, mSupportedFormats );
addFolderItems( items, serviceData, mBaseUrl, mAuthCfg, mHeaders, mUrlPrefix, this, mSupportedFormats );
addServiceItems( items, serviceData, mBaseUrl, mAuthCfg, mHeaders, mUrlPrefix, this, mSupportedFormats );
addLayerItems( items, serviceData, mPath, mAuthCfg, mHeaders, mUrlPrefix, this, QgsArcGisRestQueryUtils::ServiceTypeFilter::Vector, mSupportedFormats );
return items;
}
@ -513,11 +519,12 @@ bool QgsArcGisFeatureServiceItem::equal( const QgsDataItem *other )
// QgsArcGisMapServiceItem
//
QgsArcGisMapServiceItem::QgsArcGisMapServiceItem( QgsDataItem *parent, const QString &name, const QString &path, const QString &baseUrl, const QString &authcfg, const QgsHttpHeaders &headers, Qgis::ArcGisRestServiceType serviceType )
QgsArcGisMapServiceItem::QgsArcGisMapServiceItem( QgsDataItem *parent, const QString &name, const QString &path, const QString &baseUrl, const QString &authcfg, const QgsHttpHeaders &headers, const QString &urlPrefix, Qgis::ArcGisRestServiceType serviceType )
: QgsDataCollectionItem( parent, name, path, QStringLiteral( "AMS" ) )
, mBaseUrl( baseUrl )
, mAuthCfg( authcfg )
, mHeaders( headers )
, mUrlPrefix( urlPrefix )
, mServiceType( serviceType )
{
mIconName = QStringLiteral( "mIconDbSchema.svg" );
@ -531,7 +538,7 @@ QVector<QgsDataItem *> QgsArcGisMapServiceItem::createChildren()
QVector<QgsDataItem *> items;
QString errorTitle, errorMessage;
const QVariantMap serviceData = QgsArcGisRestQueryUtils::getServiceInfo( url, mAuthCfg, errorTitle, errorMessage, mHeaders );
const QVariantMap serviceData = QgsArcGisRestQueryUtils::getServiceInfo( url, mAuthCfg, errorTitle, errorMessage, mHeaders, mUrlPrefix );
if ( serviceData.isEmpty() )
{
if ( !errorMessage.isEmpty() )
@ -548,9 +555,9 @@ QVector<QgsDataItem *> QgsArcGisMapServiceItem::createChildren()
QStringLiteral( "JPGPNG,PNG,PNG8,PNG24,JPG,BMP,GIF,TIFF,PNG32,BIP,BSQ,LERC" ) // ImageServer supported formats
: serviceData.value( QStringLiteral( "supportedImageFormatTypes" ) ).toString();
addFolderItems( items, serviceData, mBaseUrl, mAuthCfg, mHeaders, this, supportedFormats );
addServiceItems( items, serviceData, mBaseUrl, mAuthCfg, mHeaders, this, supportedFormats );
addLayerItems( items, serviceData, mPath, mAuthCfg, mHeaders, this, QgsArcGisRestQueryUtils::ServiceTypeFilter::AllTypes, supportedFormats );
addFolderItems( items, serviceData, mBaseUrl, mAuthCfg, mHeaders, mUrlPrefix, this, supportedFormats );
addServiceItems( items, serviceData, mBaseUrl, mAuthCfg, mHeaders, mUrlPrefix, this, supportedFormats );
addLayerItems( items, serviceData, mPath, mAuthCfg, mHeaders, mUrlPrefix, this, QgsArcGisRestQueryUtils::ServiceTypeFilter::AllTypes, supportedFormats );
return items;
}
@ -565,13 +572,16 @@ bool QgsArcGisMapServiceItem::equal( const QgsDataItem *other )
// QgsArcGisFeatureServiceLayerItem
//
QgsArcGisFeatureServiceLayerItem::QgsArcGisFeatureServiceLayerItem( QgsDataItem *parent, const QString &, const QString &url, const QString &title, const QString &authid, const QString &authcfg, const QgsHttpHeaders &headers, Qgis::BrowserLayerType geometryType )
QgsArcGisFeatureServiceLayerItem::QgsArcGisFeatureServiceLayerItem( QgsDataItem *parent, const QString &, const QString &url, const QString &title, const QString &authid, const QString &authcfg, const QgsHttpHeaders &headers, const QString urlPrefix, Qgis::BrowserLayerType geometryType )
: QgsLayerItem( parent, title, url, QString(), geometryType, QStringLiteral( "arcgisfeatureserver" ) )
{
mUri = QStringLiteral( "crs='%1' url='%2'" ).arg( authid, url );
if ( !authcfg.isEmpty() )
mUri += QStringLiteral( " authcfg='%1'" ).arg( authcfg );
if ( !urlPrefix.isEmpty() )
mUri += QStringLiteral( " urlprefix='%1'" ).arg( urlPrefix );
mUri += headers.toSpacedString();
setState( Qgis::BrowserItemState::Populated );
@ -582,7 +592,7 @@ QgsArcGisFeatureServiceLayerItem::QgsArcGisFeatureServiceLayerItem( QgsDataItem
// QgsArcGisMapServiceLayerItem
//
QgsArcGisMapServiceLayerItem::QgsArcGisMapServiceLayerItem( QgsDataItem *parent, const QString &, const QString &url, const QString &id, const QString &title, const QString &authid, const QString &format, const QString &authcfg, const QgsHttpHeaders &headers )
QgsArcGisMapServiceLayerItem::QgsArcGisMapServiceLayerItem( QgsDataItem *parent, const QString &, const QString &url, const QString &id, const QString &title, const QString &authid, const QString &format, const QString &authcfg, const QgsHttpHeaders &headers, const QString &urlPrefix )
: QgsLayerItem( parent, title, url, QString(), Qgis::BrowserLayerType::Raster, QStringLiteral( "arcgismapserver" ) )
{
const QString trimmedUrl = id.isEmpty() ? url : url.left( url.length() - 1 - id.length() ); // trim '/0' from end of url -- AMS provider requires this omitted
@ -590,6 +600,9 @@ QgsArcGisMapServiceLayerItem::QgsArcGisMapServiceLayerItem( QgsDataItem *parent,
if ( !authcfg.isEmpty() )
mUri += QStringLiteral( " authcfg='%1'" ).arg( authcfg );
if ( !urlPrefix.isEmpty() )
mUri += QStringLiteral( " urlprefix='%1'" ).arg( urlPrefix );
mUri += headers.toSpacedString();
setState( Qgis::BrowserItemState::Populated );
@ -600,10 +613,11 @@ QgsArcGisMapServiceLayerItem::QgsArcGisMapServiceLayerItem( QgsDataItem *parent,
// QgsArcGisRestParentLayerItem
//
QgsArcGisRestParentLayerItem::QgsArcGisRestParentLayerItem( QgsDataItem *parent, const QString &name, const QString &path, const QString &authcfg, const QgsHttpHeaders &headers )
QgsArcGisRestParentLayerItem::QgsArcGisRestParentLayerItem( QgsDataItem *parent, const QString &name, const QString &path, const QString &authcfg, const QgsHttpHeaders &headers, const QString &urlPrefix )
: QgsDataItem( Qgis::BrowserItemType::Collection, parent, name, path )
, mAuthCfg( authcfg )
, mHeaders( headers )
, mUrlPrefix( urlPrefix )
{
mCapabilities |= Qgis::BrowserItemCapability::Fast;
mIconName = QStringLiteral( "mIconDbSchema.svg" );

View File

@ -78,13 +78,14 @@ class QgsArcGisPortalGroupsItem : public QgsDataCollectionItem
Q_OBJECT
public:
QgsArcGisPortalGroupsItem( QgsDataItem *parent, const QString &path, const QString &authcfg, const QgsHttpHeaders &headers,
const QString &communityEndpoint, const QString &contentEndpoint );
const QString &urlPrefix, const QString &communityEndpoint, const QString &contentEndpoint );
QVector<QgsDataItem *> createChildren() override;
bool equal( const QgsDataItem *other ) override;
private:
QString mAuthCfg;
QgsHttpHeaders mHeaders;
QString mUrlPrefix;
QString mPortalCommunityEndpoint;
QString mPortalContentEndpoint;
};
@ -100,7 +101,7 @@ class QgsArcGisPortalGroupItem : public QgsDataCollectionItem
Q_OBJECT
public:
QgsArcGisPortalGroupItem( QgsDataItem *parent, const QString &groupId, const QString &name, const QString &authcfg, const QgsHttpHeaders &headers,
const QString &communityEndpoint, const QString &contentEndpoint );
const QString &urlPrefix, const QString &communityEndpoint, const QString &contentEndpoint );
QVector<QgsDataItem *> createChildren() override;
bool equal( const QgsDataItem *other ) override;
@ -108,6 +109,7 @@ class QgsArcGisPortalGroupItem : public QgsDataCollectionItem
QString mId;
QString mAuthCfg;
QgsHttpHeaders mHeaders;
QString mUrlPrefix;
QString mPortalCommunityEndpoint;
QString mPortalContentEndpoint;
};
@ -124,7 +126,7 @@ class QgsArcGisRestServicesItem : public QgsDataCollectionItem
{
Q_OBJECT
public:
QgsArcGisRestServicesItem( QgsDataItem *parent, const QString &url, const QString &path, const QString &authcfg, const QgsHttpHeaders &headers );
QgsArcGisRestServicesItem( QgsDataItem *parent, const QString &url, const QString &path, const QString &authcfg, const QgsHttpHeaders &headers, const QString urlPrefix );
QVector<QgsDataItem *> createChildren() override;
bool equal( const QgsDataItem *other ) override;
@ -132,6 +134,7 @@ class QgsArcGisRestServicesItem : public QgsDataCollectionItem
QString mUrl;
QString mAuthCfg;
QgsHttpHeaders mHeaders;
QString mUrlPrefix;
QString mPortalCommunityEndpoint;
QString mPortalContentEndpoint;
};
@ -146,7 +149,7 @@ class QgsArcGisRestFolderItem : public QgsDataCollectionItem
{
Q_OBJECT
public:
QgsArcGisRestFolderItem( QgsDataItem *parent, const QString &name, const QString &path, const QString &baseUrl, const QString &authcfg, const QgsHttpHeaders &headers );
QgsArcGisRestFolderItem( QgsDataItem *parent, const QString &name, const QString &path, const QString &baseUrl, const QString &authcfg, const QgsHttpHeaders &headers, const QString &urlPrefix );
void setSupportedFormats( const QString &formats );
QVector<QgsDataItem *> createChildren() override;
@ -157,6 +160,7 @@ class QgsArcGisRestFolderItem : public QgsDataCollectionItem
QString mBaseUrl;
QString mAuthCfg;
QgsHttpHeaders mHeaders;
QString mUrlPrefix;
QString mSupportedFormats;
};
@ -171,7 +175,7 @@ class QgsArcGisFeatureServiceItem : public QgsDataCollectionItem
{
Q_OBJECT
public:
QgsArcGisFeatureServiceItem( QgsDataItem *parent, const QString &name, const QString &path, const QString &baseUrl, const QString &authcfg, const QgsHttpHeaders &headers );
QgsArcGisFeatureServiceItem( QgsDataItem *parent, const QString &name, const QString &path, const QString &baseUrl, const QString &authcfg, const QgsHttpHeaders &headers, const QString &urlPrefix );
void setSupportedFormats( const QString &formats );
QVector<QgsDataItem *> createChildren() override;
bool equal( const QgsDataItem *other ) override;
@ -181,6 +185,7 @@ class QgsArcGisFeatureServiceItem : public QgsDataCollectionItem
QString mBaseUrl;
QString mAuthCfg;
QgsHttpHeaders mHeaders;
QString mUrlPrefix;
QString mSupportedFormats;
};
@ -194,7 +199,7 @@ class QgsArcGisMapServiceItem : public QgsDataCollectionItem
{
Q_OBJECT
public:
QgsArcGisMapServiceItem( QgsDataItem *parent, const QString &name, const QString &path, const QString &baseUrl, const QString &authcfg, const QgsHttpHeaders &headers, Qgis::ArcGisRestServiceType serviceType );
QgsArcGisMapServiceItem( QgsDataItem *parent, const QString &name, const QString &path, const QString &baseUrl, const QString &authcfg, const QgsHttpHeaders &headers, const QString &urlPrefix, Qgis::ArcGisRestServiceType serviceType );
QVector<QgsDataItem *> createChildren() override;
bool equal( const QgsDataItem *other ) override;
@ -203,6 +208,7 @@ class QgsArcGisMapServiceItem : public QgsDataCollectionItem
QString mBaseUrl;
QString mAuthCfg;
QgsHttpHeaders mHeaders;
QString mUrlPrefix;
Qgis::ArcGisRestServiceType mServiceType = Qgis::ArcGisRestServiceType::Unknown;
};
@ -214,13 +220,14 @@ class QgsArcGisRestParentLayerItem : public QgsDataItem
Q_OBJECT
public:
QgsArcGisRestParentLayerItem( QgsDataItem *parent, const QString &name, const QString &path, const QString &authcfg, const QgsHttpHeaders &headers );
QgsArcGisRestParentLayerItem( QgsDataItem *parent, const QString &name, const QString &path, const QString &authcfg, const QgsHttpHeaders &headers, const QString &urlPrefix );
bool equal( const QgsDataItem *other ) override;
private:
QString mAuthCfg;
QgsHttpHeaders mHeaders;
QString mUrlPrefix;
};
@ -234,7 +241,7 @@ class QgsArcGisFeatureServiceLayerItem : public QgsLayerItem
public:
QgsArcGisFeatureServiceLayerItem( QgsDataItem *parent, const QString &name, const QString &url, const QString &title, const QString &authid, const QString &authcfg, const QgsHttpHeaders &headers,
Qgis::BrowserLayerType geometryType );
const QString urlPrefix, Qgis::BrowserLayerType geometryType );
};
@ -247,7 +254,7 @@ class QgsArcGisMapServiceLayerItem : public QgsLayerItem
Q_OBJECT
public:
QgsArcGisMapServiceLayerItem( QgsDataItem *parent, const QString &name, const QString &url, const QString &id, const QString &title, const QString &authid, const QString &format, const QString &authcfg, const QgsHttpHeaders &headers );
QgsArcGisMapServiceLayerItem( QgsDataItem *parent, const QString &name, const QString &url, const QString &id, const QString &title, const QString &authid, const QString &format, const QString &authcfg, const QgsHttpHeaders &headers, const QString &urlPrefix );
void setSupportedFormats( const QString &formats ) { mSupportedFormats = formats; }
QString supportedFormats() const { return mSupportedFormats; }

View File

@ -51,7 +51,7 @@ QgsNewArcGisRestConnectionDialog::QgsNewArcGisRestConnectionDialog( QWidget *par
txtName->setText( connectionName );
txtUrl->setText( QgsArcGisConnectionSettings::settingsUrl->value( connectionName ) );
mHttpHeaders->setHeaders( QgsHttpHeaders( QgsArcGisConnectionSettings::settingsHeaders->value( connectionName ) ) );
mUrlPrefix->setText( QgsArcGisConnectionSettings::settingsUrlPrefix->value( connectionName ) );
// portal
mContentEndPointLineEdit->setText( QgsArcGisConnectionSettings::settingsContentEndpoint->value( connectionName ) );
@ -179,6 +179,7 @@ void QgsNewArcGisRestConnectionDialog::accept()
QgsArcGisConnectionSettings::settingsAuthcfg->setValue( mAuthSettings->configId(), newName );
QgsArcGisConnectionSettings::settingsHeaders->setValue( mHttpHeaders->httpHeaders().headers(), newName );
QgsArcGisConnectionSettings::settingsUrlPrefix->setValue( mUrlPrefix->text(), newName );
QgsArcGisConnectionSettings::sTreeConnectionArcgis->setSelectedItem( newName );

View File

@ -144,6 +144,26 @@
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="TextLabel1_5">
<property name="text">
<string>Prefix</string>
</property>
<property name="margin">
<number>5</number>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLineEdit" name="mUrlPrefix">
<property name="toolTip">
<string>HTTP address Proxy Prefix of the Web Map Server</string>
</property>
<property name="placeholderText">
<string>https://mysite.com/proxy.jsp?</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
@ -201,6 +221,7 @@
<tabstops>
<tabstop>txtName</tabstop>
<tabstop>txtUrl</tabstop>
<tabstop>mUrlPrefix</tabstop>
<tabstop>mCommunityEndPointLineEdit</tabstop>
<tabstop>mContentEndPointLineEdit</tabstop>
<tabstop>mAuthSettings</tabstop>