mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-17 00:09:36 -04:00
Replace all use of 'referer' http header as single var by QgsHttpHeader class
* add wrappers in QgsHttpHeader to read from/write to QMap, QUrlQuery, DomElement * add QgsHttpHeader in QgsDataSoureUri, QgsXyzConnection, QgsVectorTileProviderConnection::Data, QgsWmsAuthorization * fix tests
This commit is contained in:
parent
cb436fe3d6
commit
60db820f19
@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class QgsHttpHeaders
|
class QgsHttpHeaders
|
||||||
{
|
{
|
||||||
%Docstring(signature="appended")
|
%Docstring(signature="appended")
|
||||||
@ -48,10 +49,27 @@ Constructor from :py:class:`QgsSettings` ``settings`` object and root ``key``
|
|||||||
Constructor from default :py:class:`QgsSettings` object and root ``key``
|
Constructor from default :py:class:`QgsSettings` object and root ``key``
|
||||||
|
|
||||||
:param key:
|
:param key:
|
||||||
|
%End
|
||||||
|
|
||||||
|
QgsHttpHeaders( const QDomElement &element );
|
||||||
|
%Docstring
|
||||||
|
Constructor from a QDomElement ``element``
|
||||||
|
|
||||||
|
:param element:
|
||||||
%End
|
%End
|
||||||
|
|
||||||
virtual ~QgsHttpHeaders();
|
virtual ~QgsHttpHeaders();
|
||||||
|
|
||||||
|
bool updateSettings( QgsSettings &settings, const QString &key = QString() ) const;
|
||||||
|
%Docstring
|
||||||
|
Updates the ``settings`` by adding all the http headers in the path "key/KEY_PREFIX/"
|
||||||
|
|
||||||
|
:param settings:
|
||||||
|
:param key: sub group path
|
||||||
|
|
||||||
|
:return: ``True`` if the update succeed
|
||||||
|
%End
|
||||||
|
|
||||||
bool updateNetworkRequest( QNetworkRequest &request ) const;
|
bool updateNetworkRequest( QNetworkRequest &request ) const;
|
||||||
%Docstring
|
%Docstring
|
||||||
Updates a ``request`` by adding all the HTTP headers
|
Updates a ``request`` by adding all the HTTP headers
|
||||||
@ -59,19 +77,25 @@ Updates a ``request`` by adding all the HTTP headers
|
|||||||
:return: ``True`` if the update succeed
|
:return: ``True`` if the update succeed
|
||||||
%End
|
%End
|
||||||
|
|
||||||
bool updateDataSourceUri( QgsDataSourceUri &uri ) const;
|
bool updateUrlQuery( QUrlQuery &uri ) const;
|
||||||
%Docstring
|
%Docstring
|
||||||
Updates an ``uri`` by adding all the HTTP headers
|
Updates an ``uri`` by adding all the HTTP headers
|
||||||
|
|
||||||
:return: ``True`` if the update succeed
|
:return: ``True`` if the update succeed
|
||||||
%End
|
%End
|
||||||
|
|
||||||
void updateSettings( QgsSettings &settings, const QString &key = QString() ) const;
|
bool updateMap( QVariantMap &map ) const;
|
||||||
%Docstring
|
%Docstring
|
||||||
Updates the ``settings`` by adding all the http headers in the path "key/KEY_PREFIX/"
|
Updates a ``map`` by adding all the HTTP headers
|
||||||
|
|
||||||
:param settings:
|
:return: ``True`` if the update succeed
|
||||||
:param key: sub group path
|
%End
|
||||||
|
|
||||||
|
bool updateDomElement( QDomElement &el ) const;
|
||||||
|
%Docstring
|
||||||
|
Updates a ``map`` by adding all the HTTP headers
|
||||||
|
|
||||||
|
:return: ``True`` if the update succeed
|
||||||
%End
|
%End
|
||||||
|
|
||||||
void setFromSettings( const QgsSettings &settings, const QString &key = QString() );
|
void setFromSettings( const QgsSettings &settings, const QString &key = QString() );
|
||||||
@ -80,6 +104,27 @@ Loads headers from the ``settings``
|
|||||||
|
|
||||||
:param settings:
|
:param settings:
|
||||||
:param key: sub group path
|
:param key: sub group path
|
||||||
|
%End
|
||||||
|
|
||||||
|
void setFromUrlQuery( const QUrlQuery &uri );
|
||||||
|
%Docstring
|
||||||
|
Loads headers from the ``uri``
|
||||||
|
|
||||||
|
:param uri:
|
||||||
|
%End
|
||||||
|
|
||||||
|
void setFromMap( const QVariantMap &map );
|
||||||
|
%Docstring
|
||||||
|
Loads headers from the ``map``
|
||||||
|
|
||||||
|
:param map:
|
||||||
|
%End
|
||||||
|
|
||||||
|
void setFromDomElement( const QDomElement &element );
|
||||||
|
%Docstring
|
||||||
|
Loads headers from the ``element``
|
||||||
|
|
||||||
|
:param element:
|
||||||
%End
|
%End
|
||||||
|
|
||||||
QString sanitizeKey( const QString &key ) const;
|
QString sanitizeKey( const QString &key ) const;
|
||||||
@ -98,6 +143,11 @@ Returns a cleansed ``key``
|
|||||||
:return: the list of all http header keys
|
:return: the list of all http header keys
|
||||||
%End
|
%End
|
||||||
|
|
||||||
|
QString toSpacedString() const;
|
||||||
|
%Docstring
|
||||||
|
Returns key/value pairs as strings separated by space
|
||||||
|
%End
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -353,6 +353,24 @@ Sets geometry column name to ``geometryColumn``
|
|||||||
%Docstring
|
%Docstring
|
||||||
Returns parameter keys used in the uri: specialized ones ("table", "schema", etc.) or generic parameters.
|
Returns parameter keys used in the uri: specialized ones ("table", "schema", etc.) or generic parameters.
|
||||||
|
|
||||||
|
.. versionadded:: 3.26
|
||||||
|
%End
|
||||||
|
|
||||||
|
|
||||||
|
QgsHttpHeaders &httpHeaders();
|
||||||
|
%Docstring
|
||||||
|
Returns http headers
|
||||||
|
%End
|
||||||
|
|
||||||
|
QString httpHeader( const QString &key );
|
||||||
|
%Docstring
|
||||||
|
Returns the http header value according to ``key``
|
||||||
|
%End
|
||||||
|
|
||||||
|
void setHttpHeaders( const QgsHttpHeaders &headers );
|
||||||
|
%Docstring
|
||||||
|
Sets headers to ``headers``
|
||||||
|
|
||||||
.. versionadded:: 3.26
|
.. versionadded:: 3.26
|
||||||
%End
|
%End
|
||||||
|
|
||||||
|
@ -19,13 +19,18 @@
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#include "qgshttpheaders.h"
|
#include "qgshttpheaders.h"
|
||||||
|
#include "qgsdatasourceuri.h"
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
|
#include <QNetworkRequest>
|
||||||
|
#include <QUrlQuery>
|
||||||
|
#include <QDomElement>
|
||||||
|
|
||||||
//
|
//
|
||||||
// QgsHttpHeaders
|
// QgsHttpHeaders
|
||||||
//
|
//
|
||||||
|
|
||||||
const QString QgsHttpHeaders::KEY_PREFIX = "http-header/";
|
const QString QgsHttpHeaders::PATH_PREFIX = "http-header/";
|
||||||
|
const QString QgsHttpHeaders::PARAM_PREFIX = "http-header:";
|
||||||
const QString QgsHttpHeaders::KEY_REFERER = "referer";
|
const QString QgsHttpHeaders::KEY_REFERER = "referer";
|
||||||
|
|
||||||
QgsHttpHeaders::QgsHttpHeaders() = default;
|
QgsHttpHeaders::QgsHttpHeaders() = default;
|
||||||
@ -46,6 +51,11 @@ QgsHttpHeaders::QgsHttpHeaders( const QString &key )
|
|||||||
setFromSettings( QgsSettings(), key );
|
setFromSettings( QgsSettings(), key );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QgsHttpHeaders::QgsHttpHeaders( const QDomElement &element )
|
||||||
|
{
|
||||||
|
setFromDomElement( element );
|
||||||
|
}
|
||||||
|
|
||||||
QgsHttpHeaders::~QgsHttpHeaders() = default;
|
QgsHttpHeaders::~QgsHttpHeaders() = default;
|
||||||
|
|
||||||
bool QgsHttpHeaders::updateNetworkRequest( QNetworkRequest &request ) const
|
bool QgsHttpHeaders::updateNetworkRequest( QNetworkRequest &request ) const
|
||||||
@ -57,22 +67,22 @@ bool QgsHttpHeaders::updateNetworkRequest( QNetworkRequest &request ) const
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QgsHttpHeaders::updateDataSourceUri( QgsDataSourceUri &uri ) const
|
bool QgsHttpHeaders::updateUrlQuery( QUrlQuery &uri ) const
|
||||||
{
|
{
|
||||||
for ( auto ite = mHeaders.constBegin(); ite != mHeaders.constEnd(); ++ite )
|
for ( auto ite = mHeaders.constBegin(); ite != mHeaders.constEnd(); ++ite )
|
||||||
{
|
{
|
||||||
uri.setParam( ite.key().toUtf8(), ite.value().toString().toUtf8() );
|
uri.addQueryItem( QgsHttpHeaders::PARAM_PREFIX + ite.key().toUtf8(), ite.value().toString().toUtf8() );
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QgsHttpHeaders::updateSettings( QgsSettings &settings, const QString &key ) const
|
bool QgsHttpHeaders::updateSettings( QgsSettings &settings, const QString &key ) const
|
||||||
{
|
{
|
||||||
QString keyFixed = sanitizeKey( key );
|
QString keyFixed = sanitizeKey( key );
|
||||||
if ( !keyFixed.isEmpty() )
|
if ( !keyFixed.isEmpty() )
|
||||||
keyFixed = keyFixed + "/";
|
keyFixed = keyFixed + "/";
|
||||||
|
|
||||||
QString keyHH = keyFixed + QgsHttpHeaders::KEY_PREFIX;
|
QString keyHH = keyFixed + QgsHttpHeaders::PATH_PREFIX;
|
||||||
settings.remove( keyHH ); // cleanup
|
settings.remove( keyHH ); // cleanup
|
||||||
for ( auto ite = mHeaders.constBegin(); ite != mHeaders.constEnd(); ++ite )
|
for ( auto ite = mHeaders.constBegin(); ite != mHeaders.constEnd(); ++ite )
|
||||||
{
|
{
|
||||||
@ -90,14 +100,48 @@ void QgsHttpHeaders::updateSettings( QgsSettings &settings, const QString &key )
|
|||||||
if ( k.startsWith( keyFixed ) )
|
if ( k.startsWith( keyFixed ) )
|
||||||
QgsLogger::debug( QString( "updateSettings in settings: %1=%2" ).arg( k, settings.value( k ).toString() ) );
|
QgsLogger::debug( QString( "updateSettings in settings: %1=%2" ).arg( k, settings.value( k ).toString() ) );
|
||||||
#endif
|
#endif
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool QgsHttpHeaders::updateMap( QVariantMap &map ) const
|
||||||
|
{
|
||||||
|
for ( auto ite = mHeaders.constBegin(); ite != mHeaders.constEnd(); ++ite )
|
||||||
|
{
|
||||||
|
map.insert( QgsHttpHeaders::PARAM_PREFIX + ite.key().toUtf8(), ite.value().toString() );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( mHeaders.contains( QgsHttpHeaders::KEY_REFERER ) )
|
||||||
|
{
|
||||||
|
map.insert( QgsHttpHeaders::KEY_REFERER, mHeaders[QgsHttpHeaders::KEY_REFERER].toString() );
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool QgsHttpHeaders::updateDomElement( QDomElement &el ) const
|
||||||
|
{
|
||||||
|
for ( auto ite = mHeaders.constBegin(); ite != mHeaders.constEnd(); ++ite )
|
||||||
|
{
|
||||||
|
el.setAttribute( QgsHttpHeaders::PARAM_PREFIX + ite.key().toUtf8(), ite.value().toString() );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( mHeaders.contains( QgsHttpHeaders::KEY_REFERER ) )
|
||||||
|
{
|
||||||
|
el.setAttribute( QgsHttpHeaders::KEY_REFERER, mHeaders[QgsHttpHeaders::KEY_REFERER].toString() );
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void QgsHttpHeaders::setFromSettings( const QgsSettings &settings, const QString &key )
|
void QgsHttpHeaders::setFromSettings( const QgsSettings &settings, const QString &key )
|
||||||
{
|
{
|
||||||
QString keyFixed = sanitizeKey( key );
|
QString keyFixed = sanitizeKey( key );
|
||||||
if ( !keyFixed.isEmpty() )
|
if ( !keyFixed.isEmpty() )
|
||||||
keyFixed = keyFixed + "/";
|
keyFixed = keyFixed + "/";
|
||||||
QString keyHH = keyFixed + QgsHttpHeaders::KEY_PREFIX;
|
QString keyHH = keyFixed + QgsHttpHeaders::PATH_PREFIX;
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
QgsLogger::debug( QString( "setFromSettings key: %1" ).arg( keyFixed ) );
|
QgsLogger::debug( QString( "setFromSettings key: %1" ).arg( keyFixed ) );
|
||||||
@ -116,6 +160,7 @@ void QgsHttpHeaders::setFromSettings( const QgsSettings &settings, const QString
|
|||||||
mHeaders.insert( name, settings.value( *ite ).toString() );
|
mHeaders.insert( name, settings.value( *ite ).toString() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( settings.contains( keyFixed + QgsHttpHeaders::KEY_REFERER ) ) // backward comptibility
|
if ( settings.contains( keyFixed + QgsHttpHeaders::KEY_REFERER ) ) // backward comptibility
|
||||||
{
|
{
|
||||||
mHeaders[QgsHttpHeaders::KEY_REFERER] = settings.value( keyFixed + QgsHttpHeaders::KEY_REFERER ).toString(); // retrieve value from old location
|
mHeaders[QgsHttpHeaders::KEY_REFERER] = settings.value( keyFixed + QgsHttpHeaders::KEY_REFERER ).toString(); // retrieve value from old location
|
||||||
@ -127,6 +172,75 @@ void QgsHttpHeaders::setFromSettings( const QgsSettings &settings, const QString
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QgsHttpHeaders::setFromUrlQuery( const QUrlQuery &uri )
|
||||||
|
{
|
||||||
|
const auto constQueryItems = uri.queryItems( QUrl::ComponentFormattingOption::FullyDecoded );
|
||||||
|
for ( const QPair<QString, QString> &item : constQueryItems )
|
||||||
|
{
|
||||||
|
const QString &key = item.first;
|
||||||
|
if ( key.startsWith( QgsHttpHeaders::PARAM_PREFIX ) )
|
||||||
|
{
|
||||||
|
QString name = key.right( key.size() - QgsHttpHeaders::PARAM_PREFIX.size() );
|
||||||
|
mHeaders[sanitizeKey( name )] = item.second;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void QgsHttpHeaders::setFromMap( const QVariantMap &map )
|
||||||
|
{
|
||||||
|
for ( auto ite = map.keyBegin(); ite != map.keyEnd(); ++ite )
|
||||||
|
{
|
||||||
|
QString key = *ite;
|
||||||
|
if ( key.startsWith( QgsHttpHeaders::PARAM_PREFIX ) )
|
||||||
|
{
|
||||||
|
QString name = key.right( key.size() - QgsHttpHeaders::PARAM_PREFIX.size() );
|
||||||
|
mHeaders[sanitizeKey( name )] = map [key].toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( map.contains( QgsHttpHeaders::KEY_REFERER ) )
|
||||||
|
{
|
||||||
|
mHeaders[QgsHttpHeaders::KEY_REFERER] = map [QgsHttpHeaders::KEY_REFERER].toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void QgsHttpHeaders::setFromDomElement( const QDomElement &el )
|
||||||
|
{
|
||||||
|
QDomNamedNodeMap attribs = el.attributes();
|
||||||
|
for ( int i = 0; i < attribs.length(); i++ )
|
||||||
|
{
|
||||||
|
QDomNode item = attribs.item( i );
|
||||||
|
QString key = item.nodeName();
|
||||||
|
if ( key.startsWith( QgsHttpHeaders::PARAM_PREFIX ) )
|
||||||
|
{
|
||||||
|
QString name = key.right( key.size() - QgsHttpHeaders::PARAM_PREFIX.size() );
|
||||||
|
mHeaders[sanitizeKey( name )] = item.nodeValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( attribs.contains( QgsHttpHeaders::KEY_REFERER ) )
|
||||||
|
{
|
||||||
|
mHeaders[QgsHttpHeaders::KEY_REFERER] = attribs.namedItem( QgsHttpHeaders::KEY_REFERER ).nodeValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QString QgsHttpHeaders::toSpacedString() const
|
||||||
|
{
|
||||||
|
QString out;
|
||||||
|
for ( auto ite = mHeaders.constBegin(); ite != mHeaders.constEnd(); ++ite )
|
||||||
|
{
|
||||||
|
out += QStringLiteral( " %1%2='%3'" ).arg( QgsHttpHeaders::PARAM_PREFIX, ite.key(), ite.value().toString() );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !mHeaders [ QgsHttpHeaders::KEY_REFERER ].toString().isEmpty() )
|
||||||
|
out += QStringLiteral( " %1='%2'" ).arg( QgsHttpHeaders::KEY_REFERER, mHeaders [QgsHttpHeaders::KEY_REFERER].toString() );
|
||||||
|
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// To clean the path
|
// To clean the path
|
||||||
QString QgsHttpHeaders::sanitizeKey( const QString &key ) const
|
QString QgsHttpHeaders::sanitizeKey( const QString &key ) const
|
||||||
{
|
{
|
||||||
|
@ -21,12 +21,14 @@
|
|||||||
#ifndef QGSHTTPHEADERS_H
|
#ifndef QGSHTTPHEADERS_H
|
||||||
#define QGSHTTPHEADERS_H
|
#define QGSHTTPHEADERS_H
|
||||||
|
|
||||||
#include <QNetworkRequest>
|
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
#include "qgis_core.h"
|
#include "qgis_core.h"
|
||||||
#include "qgis_sip.h"
|
#include "qgis_sip.h"
|
||||||
#include "qgssettingsentry.h"
|
#include "qgssettingsentry.h"
|
||||||
#include "qgsdatasourceuri.h"
|
|
||||||
|
class QNetworkRequest;
|
||||||
|
class QUrlQuery;
|
||||||
|
class QDomElement;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \ingroup core
|
* \ingroup core
|
||||||
@ -39,15 +41,15 @@ class CORE_EXPORT QgsHttpHeaders
|
|||||||
|
|
||||||
#ifndef SIP_RUN
|
#ifndef SIP_RUN
|
||||||
|
|
||||||
/**
|
//! Used in settings as the group name
|
||||||
* Used in settings as the group name
|
static const QString PATH_PREFIX;
|
||||||
*/
|
|
||||||
static const QString KEY_PREFIX;
|
|
||||||
|
|
||||||
/**
|
//! Used in settings as the referer key
|
||||||
* Used in settings as the referer key
|
|
||||||
*/
|
|
||||||
static const QString KEY_REFERER;
|
static const QString KEY_REFERER;
|
||||||
|
|
||||||
|
//! Used in uri to pass headers as params
|
||||||
|
static const QString PARAM_PREFIX;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -74,8 +76,23 @@ class CORE_EXPORT QgsHttpHeaders
|
|||||||
*/
|
*/
|
||||||
QgsHttpHeaders( const QString &key );
|
QgsHttpHeaders( const QString &key );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Constructor from a QDomElement \a element
|
||||||
|
* \param element
|
||||||
|
*/
|
||||||
|
QgsHttpHeaders( const QDomElement &element );
|
||||||
|
|
||||||
|
//! default detructor
|
||||||
virtual ~QgsHttpHeaders();
|
virtual ~QgsHttpHeaders();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Updates the \a settings by adding all the http headers in the path "key/KEY_PREFIX/"
|
||||||
|
* \param settings
|
||||||
|
* \param key sub group path
|
||||||
|
* \return TRUE if the update succeed
|
||||||
|
*/
|
||||||
|
bool updateSettings( QgsSettings &settings, const QString &key = QString() ) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Updates a \a request by adding all the HTTP headers
|
* \brief Updates a \a request by adding all the HTTP headers
|
||||||
* \return TRUE if the update succeed
|
* \return TRUE if the update succeed
|
||||||
@ -86,14 +103,19 @@ class CORE_EXPORT QgsHttpHeaders
|
|||||||
* \brief Updates an \a uri by adding all the HTTP headers
|
* \brief Updates an \a uri by adding all the HTTP headers
|
||||||
* \return TRUE if the update succeed
|
* \return TRUE if the update succeed
|
||||||
*/
|
*/
|
||||||
bool updateDataSourceUri( QgsDataSourceUri &uri ) const;
|
bool updateUrlQuery( QUrlQuery &uri ) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Updates the \a settings by adding all the http headers in the path "key/KEY_PREFIX/"
|
* \brief Updates a \a map by adding all the HTTP headers
|
||||||
* \param settings
|
* \return TRUE if the update succeed
|
||||||
* \param key sub group path
|
|
||||||
*/
|
*/
|
||||||
void updateSettings( QgsSettings &settings, const QString &key = QString() ) const;
|
bool updateMap( QVariantMap &map ) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Updates a \a map by adding all the HTTP headers
|
||||||
|
* \return TRUE if the update succeed
|
||||||
|
*/
|
||||||
|
bool updateDomElement( QDomElement &el ) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Loads headers from the \a settings
|
* \brief Loads headers from the \a settings
|
||||||
@ -102,6 +124,24 @@ class CORE_EXPORT QgsHttpHeaders
|
|||||||
*/
|
*/
|
||||||
void setFromSettings( const QgsSettings &settings, const QString &key = QString() );
|
void setFromSettings( const QgsSettings &settings, const QString &key = QString() );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Loads headers from the \a uri
|
||||||
|
* \param uri
|
||||||
|
*/
|
||||||
|
void setFromUrlQuery( const QUrlQuery &uri );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Loads headers from the \a map
|
||||||
|
* \param map
|
||||||
|
*/
|
||||||
|
void setFromMap( const QVariantMap &map );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Loads headers from the \a element
|
||||||
|
* \param element
|
||||||
|
*/
|
||||||
|
void setFromDomElement( const QDomElement &element );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Returns a cleansed \a key
|
* \brief Returns a cleansed \a key
|
||||||
* \param key a key to be sanitized
|
* \param key a key to be sanitized
|
||||||
@ -121,6 +161,9 @@ class CORE_EXPORT QgsHttpHeaders
|
|||||||
*/
|
*/
|
||||||
QList<QString> keys() const;
|
QList<QString> keys() const;
|
||||||
|
|
||||||
|
//! Returns key/value pairs as strings separated by space
|
||||||
|
QString toSpacedString() const;
|
||||||
|
|
||||||
#ifndef SIP_RUN
|
#ifndef SIP_RUN
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -445,15 +445,12 @@ QgsArcGisAsyncQuery::~QgsArcGisAsyncQuery()
|
|||||||
mReply->deleteLater();
|
mReply->deleteLater();
|
||||||
}
|
}
|
||||||
|
|
||||||
void QgsArcGisAsyncQuery::start( const QUrl &url, const QString &authCfg, QByteArray *result, bool allowCache, const QgsStringMap &headers )
|
void QgsArcGisAsyncQuery::start( const QUrl &url, const QString &authCfg, QByteArray *result, bool allowCache, const QgsHttpHeaders &headers )
|
||||||
{
|
{
|
||||||
mResult = result;
|
mResult = result;
|
||||||
QNetworkRequest request( url );
|
QNetworkRequest request( url );
|
||||||
|
|
||||||
for ( auto it = headers.constBegin(); it != headers.constEnd(); ++it )
|
headers.updateNetworkRequest( request );
|
||||||
{
|
|
||||||
request.setRawHeader( it.key().toUtf8(), it.value().toUtf8() );
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( !authCfg.isEmpty() && !QgsApplication::authManager()->updateNetworkRequest( request, authCfg ) )
|
if ( !authCfg.isEmpty() && !QgsApplication::authManager()->updateNetworkRequest( request, authCfg ) )
|
||||||
{
|
{
|
||||||
|
@ -117,7 +117,7 @@ class CORE_EXPORT QgsArcGisAsyncQuery : public QObject
|
|||||||
QgsArcGisAsyncQuery( QObject *parent = nullptr );
|
QgsArcGisAsyncQuery( QObject *parent = nullptr );
|
||||||
~QgsArcGisAsyncQuery() override;
|
~QgsArcGisAsyncQuery() override;
|
||||||
|
|
||||||
void start( const QUrl &url, const QString &authCfg, QByteArray *result, bool allowCache = false, const QgsStringMap &headers = QgsStringMap() );
|
void start( const QUrl &url, const QString &authCfg, QByteArray *result, bool allowCache = false, const QgsHttpHeaders &headers = QgsHttpHeaders() );
|
||||||
signals:
|
signals:
|
||||||
void finished();
|
void finished();
|
||||||
void failed( QString errorTitle, QString errorName );
|
void failed( QString errorTitle, QString errorName );
|
||||||
|
@ -578,6 +578,8 @@ QString QgsDataSourceUri::uri( bool expandAuthConfig ) const
|
|||||||
uri += ' ' + it.key() + "='" + escape( it.value() ) + '\'';
|
uri += ' ' + it.key() + "='" + escape( it.value() ) + '\'';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uri += mHttpHeaders.toSpacedString();
|
||||||
|
|
||||||
QString columnName( mGeometryColumn );
|
QString columnName( mGeometryColumn );
|
||||||
columnName.replace( '\\', QLatin1String( "\\\\" ) );
|
columnName.replace( '\\', QLatin1String( "\\\\" ) );
|
||||||
columnName.replace( ')', QLatin1String( "\\)" ) );
|
columnName.replace( ')', QLatin1String( "\\)" ) );
|
||||||
@ -626,6 +628,8 @@ QByteArray QgsDataSourceUri::encodedUri() const
|
|||||||
if ( !mAuthConfigId.isEmpty() )
|
if ( !mAuthConfigId.isEmpty() )
|
||||||
url.addQueryItem( QStringLiteral( "authcfg" ), mAuthConfigId );
|
url.addQueryItem( QStringLiteral( "authcfg" ), mAuthConfigId );
|
||||||
|
|
||||||
|
mHttpHeaders.updateUrlQuery( url );
|
||||||
|
|
||||||
return toLatin1_helper( url.toString( QUrl::FullyEncoded ) );
|
return toLatin1_helper( url.toString( QUrl::FullyEncoded ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -640,8 +644,12 @@ void QgsDataSourceUri::setEncodedUri( const QByteArray &uri )
|
|||||||
url.setQuery( QString::fromLatin1( uri ) );
|
url.setQuery( QString::fromLatin1( uri ) );
|
||||||
const QUrlQuery query( url );
|
const QUrlQuery query( url );
|
||||||
|
|
||||||
|
mHttpHeaders.setFromUrlQuery( query );
|
||||||
|
|
||||||
const auto constQueryItems = query.queryItems( QUrl::ComponentFormattingOption::FullyDecoded );
|
const auto constQueryItems = query.queryItems( QUrl::ComponentFormattingOption::FullyDecoded );
|
||||||
for ( const QPair<QString, QString> &item : constQueryItems )
|
for ( const QPair<QString, QString> &item : constQueryItems )
|
||||||
|
{
|
||||||
|
if ( !item.first.startsWith( QgsHttpHeaders::PARAM_PREFIX ) )
|
||||||
{
|
{
|
||||||
if ( item.first == QLatin1String( "username" ) )
|
if ( item.first == QLatin1String( "username" ) )
|
||||||
mUsername = item.second;
|
mUsername = item.second;
|
||||||
@ -653,6 +661,7 @@ void QgsDataSourceUri::setEncodedUri( const QByteArray &uri )
|
|||||||
mParams.insert( item.first, item.second );
|
mParams.insert( item.first, item.second );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void QgsDataSourceUri::setEncodedUri( const QString &uri )
|
void QgsDataSourceUri::setEncodedUri( const QString &uri )
|
||||||
{
|
{
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
#include "qgis_core.h"
|
#include "qgis_core.h"
|
||||||
#include "qgis_sip.h"
|
#include "qgis_sip.h"
|
||||||
#include "qgswkbtypes.h"
|
#include "qgswkbtypes.h"
|
||||||
|
#include "qgshttpheaders.h"
|
||||||
|
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
#include <QSet>
|
#include <QSet>
|
||||||
@ -325,6 +326,23 @@ class CORE_EXPORT QgsDataSourceUri
|
|||||||
*/
|
*/
|
||||||
QSet<QString> parameterKeys() const;
|
QSet<QString> parameterKeys() const;
|
||||||
|
|
||||||
|
#ifndef SIP_RUN
|
||||||
|
//! Returns http headers
|
||||||
|
QgsHttpHeaders httpHeaders() const { return mHttpHeaders; }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//! Returns http headers
|
||||||
|
QgsHttpHeaders &httpHeaders() { return mHttpHeaders; }
|
||||||
|
|
||||||
|
//! Returns the http header value according to \a key
|
||||||
|
QString httpHeader( const QString &key ) { return mHttpHeaders[key].toString(); }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets headers to \a headers
|
||||||
|
* \since QGIS 3.26
|
||||||
|
*/
|
||||||
|
void setHttpHeaders( const QgsHttpHeaders &headers ) { mHttpHeaders = headers; }
|
||||||
|
|
||||||
#ifdef SIP_RUN
|
#ifdef SIP_RUN
|
||||||
SIP_PYOBJECT __repr__();
|
SIP_PYOBJECT __repr__();
|
||||||
% MethodCode
|
% MethodCode
|
||||||
@ -380,6 +398,8 @@ class CORE_EXPORT QgsDataSourceUri
|
|||||||
QString mSrid;
|
QString mSrid;
|
||||||
//! Generic params store
|
//! Generic params store
|
||||||
QMultiMap<QString, QString> mParams;
|
QMultiMap<QString, QString> mParams;
|
||||||
|
//! http header store
|
||||||
|
QgsHttpHeaders mHttpHeaders;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //QGSDATASOURCEURI_H
|
#endif //QGSDATASOURCEURI_H
|
||||||
|
@ -62,10 +62,10 @@ QgsOwsConnection::QgsOwsConnection( const QString &service, const QString &connN
|
|||||||
mConnectionInfo.append( ",authcfg=" + authcfg );
|
mConnectionInfo.append( ",authcfg=" + authcfg );
|
||||||
|
|
||||||
QgsHttpHeaders httpHeaders( QString( "%3/connections-%1/%2/" ).arg( mService.toLower(), mConnName, QgsSettings::Prefix::QGIS ) );
|
QgsHttpHeaders httpHeaders( QString( "%3/connections-%1/%2/" ).arg( mService.toLower(), mConnName, QgsSettings::Prefix::QGIS ) );
|
||||||
|
mUri.setHttpHeaders( httpHeaders );
|
||||||
const QString referer = httpHeaders[QgsHttpHeaders::KEY_REFERER].toString();
|
const QString referer = httpHeaders[QgsHttpHeaders::KEY_REFERER].toString();
|
||||||
if ( !referer.isEmpty() )
|
if ( !referer.isEmpty() )
|
||||||
{
|
{
|
||||||
mUri.setParam( QStringLiteral( "referer" ), referer );
|
|
||||||
mConnectionInfo.append( ",referer=" + referer );
|
mConnectionInfo.append( ",referer=" + referer );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -109,8 +109,7 @@ QgsDataSourceUri &QgsOwsConnection::addWmsWcsConnectionSettings( QgsDataSourceUr
|
|||||||
Q_NOWARN_DEPRECATED_POP
|
Q_NOWARN_DEPRECATED_POP
|
||||||
|
|
||||||
const QgsSettings settings;
|
const QgsSettings settings;
|
||||||
QgsHttpHeaders httpHeaders( settings, settingsKey );
|
uri.httpHeaders().setFromSettings( settings, settingsKey );
|
||||||
httpHeaders.updateDataSourceUri( uri );
|
|
||||||
|
|
||||||
if ( settings.value( settingsKey + QStringLiteral( "/ignoreGetMapURI" ), false ).toBool() )
|
if ( settings.value( settingsKey + QStringLiteral( "/ignoreGetMapURI" ), false ).toBool() )
|
||||||
{
|
{
|
||||||
@ -141,8 +140,9 @@ QgsDataSourceUri &QgsOwsConnection::addWmsWcsConnectionSettings( QgsDataSourceUr
|
|||||||
{
|
{
|
||||||
addCommonConnectionSettings( uri, service, connName );
|
addCommonConnectionSettings( uri, service, connName );
|
||||||
|
|
||||||
QgsHttpHeaders httpHeaders( QString( "%3/connections-%1/%2/" ).arg( service.toLower(), connName, QgsSettings::Prefix::QGIS ) );
|
QString settingsKey = QString( "%3/connections-%1/%2/" ).arg( service.toLower(), connName, QgsSettings::Prefix::QGIS );
|
||||||
httpHeaders.updateDataSourceUri( uri );
|
const QgsSettings settings;
|
||||||
|
uri.httpHeaders().setFromSettings( settings, settingsKey );
|
||||||
|
|
||||||
if ( settingsConnectionIgnoreGetMapURI.value( {service.toLower(), connName} ) )
|
if ( settingsConnectionIgnoreGetMapURI.value( {service.toLower(), connName} ) )
|
||||||
{
|
{
|
||||||
|
@ -50,11 +50,11 @@ QString QgsVectorTileProviderConnection::encodedUri( const QgsVectorTileProvider
|
|||||||
uri.setUsername( conn.username );
|
uri.setUsername( conn.username );
|
||||||
if ( !conn.password.isEmpty() )
|
if ( !conn.password.isEmpty() )
|
||||||
uri.setPassword( conn.password );
|
uri.setPassword( conn.password );
|
||||||
if ( !conn.referer.isEmpty() )
|
|
||||||
uri.setParam( QStringLiteral( "referer" ), conn.referer );
|
|
||||||
if ( !conn.styleUrl.isEmpty() )
|
if ( !conn.styleUrl.isEmpty() )
|
||||||
uri.setParam( QStringLiteral( "styleUrl" ), conn.styleUrl );
|
uri.setParam( QStringLiteral( "styleUrl" ), conn.styleUrl );
|
||||||
|
|
||||||
|
uri.setHttpHeaders( conn.httpHeaders );
|
||||||
|
|
||||||
switch ( conn.serviceType )
|
switch ( conn.serviceType )
|
||||||
{
|
{
|
||||||
case Generic:
|
case Generic:
|
||||||
@ -80,9 +80,10 @@ QgsVectorTileProviderConnection::Data QgsVectorTileProviderConnection::decodedUr
|
|||||||
conn.authCfg = dsUri.authConfigId();
|
conn.authCfg = dsUri.authConfigId();
|
||||||
conn.username = dsUri.username();
|
conn.username = dsUri.username();
|
||||||
conn.password = dsUri.password();
|
conn.password = dsUri.password();
|
||||||
conn.referer = dsUri.param( QStringLiteral( "referer" ) );
|
|
||||||
conn.styleUrl = dsUri.param( QStringLiteral( "styleUrl" ) );
|
conn.styleUrl = dsUri.param( QStringLiteral( "styleUrl" ) );
|
||||||
|
|
||||||
|
conn.httpHeaders = dsUri.httpHeaders();
|
||||||
|
|
||||||
if ( dsUri.hasParam( QStringLiteral( "serviceType" ) ) )
|
if ( dsUri.hasParam( QStringLiteral( "serviceType" ) ) )
|
||||||
{
|
{
|
||||||
if ( dsUri.param( QStringLiteral( "serviceType" ) ) == QLatin1String( "arcgis" ) )
|
if ( dsUri.param( QStringLiteral( "serviceType" ) ) == QLatin1String( "arcgis" ) )
|
||||||
@ -118,11 +119,11 @@ QString QgsVectorTileProviderConnection::encodedLayerUri( const QgsVectorTilePro
|
|||||||
uri.setUsername( conn.username );
|
uri.setUsername( conn.username );
|
||||||
if ( !conn.password.isEmpty() )
|
if ( !conn.password.isEmpty() )
|
||||||
uri.setPassword( conn.password );
|
uri.setPassword( conn.password );
|
||||||
if ( !conn.referer.isEmpty() )
|
|
||||||
uri.setParam( QStringLiteral( "referer" ), conn.referer );
|
|
||||||
if ( !conn.styleUrl.isEmpty() )
|
if ( !conn.styleUrl.isEmpty() )
|
||||||
uri.setParam( QStringLiteral( "styleUrl" ), conn.styleUrl );
|
uri.setParam( QStringLiteral( "styleUrl" ), conn.styleUrl );
|
||||||
|
|
||||||
|
uri.setHttpHeaders( conn.httpHeaders );
|
||||||
|
|
||||||
switch ( conn.serviceType )
|
switch ( conn.serviceType )
|
||||||
{
|
{
|
||||||
case Generic:
|
case Generic:
|
||||||
@ -160,9 +161,10 @@ QgsVectorTileProviderConnection::Data QgsVectorTileProviderConnection::connectio
|
|||||||
conn.authCfg = settings.value( QStringLiteral( "authcfg" ) ).toString();
|
conn.authCfg = settings.value( QStringLiteral( "authcfg" ) ).toString();
|
||||||
conn.username = settings.value( QStringLiteral( "username" ) ).toString();
|
conn.username = settings.value( QStringLiteral( "username" ) ).toString();
|
||||||
conn.password = settings.value( QStringLiteral( "password" ) ).toString();
|
conn.password = settings.value( QStringLiteral( "password" ) ).toString();
|
||||||
conn.referer = QgsHttpHeaders( settings )[ QStringLiteral( "referer" ) ].toString();
|
|
||||||
conn.styleUrl = settings.value( QStringLiteral( "styleUrl" ) ).toString();
|
conn.styleUrl = settings.value( QStringLiteral( "styleUrl" ) ).toString();
|
||||||
|
|
||||||
|
conn.httpHeaders = QgsHttpHeaders( settings );
|
||||||
|
|
||||||
if ( settings.contains( QStringLiteral( "serviceType" ) ) )
|
if ( settings.contains( QStringLiteral( "serviceType" ) ) )
|
||||||
{
|
{
|
||||||
if ( settings.value( QStringLiteral( "serviceType" ) ) == QLatin1String( "arcgis" ) )
|
if ( settings.value( QStringLiteral( "serviceType" ) ) == QLatin1String( "arcgis" ) )
|
||||||
@ -189,9 +191,10 @@ void QgsVectorTileProviderConnection::addConnection( const QString &name, QgsVec
|
|||||||
settings.setValue( QStringLiteral( "authcfg" ), conn.authCfg );
|
settings.setValue( QStringLiteral( "authcfg" ), conn.authCfg );
|
||||||
settings.setValue( QStringLiteral( "username" ), conn.username );
|
settings.setValue( QStringLiteral( "username" ), conn.username );
|
||||||
settings.setValue( QStringLiteral( "password" ), conn.password );
|
settings.setValue( QStringLiteral( "password" ), conn.password );
|
||||||
QgsHttpHeaders( QVariantMap( { {QStringLiteral( "referer" ), conn.referer}} ) ).updateSettings( settings );
|
|
||||||
settings.setValue( QStringLiteral( "styleUrl" ), conn.styleUrl );
|
settings.setValue( QStringLiteral( "styleUrl" ), conn.styleUrl );
|
||||||
|
|
||||||
|
conn.httpHeaders.updateSettings( settings );
|
||||||
|
|
||||||
switch ( conn.serviceType )
|
switch ( conn.serviceType )
|
||||||
{
|
{
|
||||||
case Generic:
|
case Generic:
|
||||||
|
@ -61,8 +61,8 @@ class CORE_EXPORT QgsVectorTileProviderConnection : public QgsAbstractProviderCo
|
|||||||
QString username;
|
QString username;
|
||||||
//! HTTP Basic password
|
//! HTTP Basic password
|
||||||
QString password;
|
QString password;
|
||||||
//! Referer
|
//! HTTP headers
|
||||||
QString referer;
|
QgsHttpHeaders httpHeaders;
|
||||||
|
|
||||||
//! Optional style URL (will override any default styles)
|
//! Optional style URL (will override any default styles)
|
||||||
QString styleUrl;
|
QString styleUrl;
|
||||||
|
@ -812,10 +812,8 @@ QByteArray QgsVectorTileLayer::getRawTile( QgsTileXYZ tileID )
|
|||||||
QgsDataSourceUri dsUri;
|
QgsDataSourceUri dsUri;
|
||||||
dsUri.setEncodedUri( mDataSource );
|
dsUri.setEncodedUri( mDataSource );
|
||||||
const QString authcfg = dsUri.authConfigId();
|
const QString authcfg = dsUri.authConfigId();
|
||||||
QgsHttpHeaders headers;
|
|
||||||
headers [QStringLiteral( "referer" ) ] = dsUri.param( QStringLiteral( "referer" ) );
|
|
||||||
|
|
||||||
QList<QgsVectorTileRawData> rawTiles = QgsVectorTileLoader::blockingFetchTileRawData( mSourceType, mSourcePath, tileMatrix, QPointF(), tileRange, authcfg, headers );
|
QList<QgsVectorTileRawData> rawTiles = QgsVectorTileLoader::blockingFetchTileRawData( mSourceType, mSourcePath, tileMatrix, QPointF(), tileRange, authcfg, dsUri.httpHeaders() );
|
||||||
if ( rawTiles.isEmpty() )
|
if ( rawTiles.isEmpty() )
|
||||||
return QByteArray();
|
return QByteArray();
|
||||||
return rawTiles.first().data;
|
return rawTiles.first().data;
|
||||||
|
@ -45,7 +45,7 @@ QgsVectorTileLayerRenderer::QgsVectorTileLayerRenderer( QgsVectorTileLayer *laye
|
|||||||
QgsDataSourceUri dsUri;
|
QgsDataSourceUri dsUri;
|
||||||
dsUri.setEncodedUri( layer->source() );
|
dsUri.setEncodedUri( layer->source() );
|
||||||
mAuthCfg = dsUri.authConfigId();
|
mAuthCfg = dsUri.authConfigId();
|
||||||
mHeaders [QStringLiteral( "referer" ) ] = dsUri.param( QStringLiteral( "referer" ) );
|
mHeaders = dsUri.httpHeaders();
|
||||||
|
|
||||||
if ( QgsLabelingEngine *engine = context.labelingEngine() )
|
if ( QgsLabelingEngine *engine = context.labelingEngine() )
|
||||||
{
|
{
|
||||||
|
@ -86,8 +86,8 @@ QVariantMap QgsVectorTileProviderMetadata::decodeUri( const QString &uri ) const
|
|||||||
if ( dsUri.hasParam( QStringLiteral( "zmax" ) ) )
|
if ( dsUri.hasParam( QStringLiteral( "zmax" ) ) )
|
||||||
uriComponents.insert( QStringLiteral( "zmax" ), dsUri.param( QStringLiteral( "zmax" ) ) );
|
uriComponents.insert( QStringLiteral( "zmax" ), dsUri.param( QStringLiteral( "zmax" ) ) );
|
||||||
|
|
||||||
if ( dsUri.hasParam( QStringLiteral( "referer" ) ) )
|
dsUri.httpHeaders().updateMap( uriComponents );
|
||||||
uriComponents.insert( QStringLiteral( "referer" ), dsUri.param( QStringLiteral( "referer" ) ) );
|
|
||||||
if ( dsUri.hasParam( QStringLiteral( "styleUrl" ) ) )
|
if ( dsUri.hasParam( QStringLiteral( "styleUrl" ) ) )
|
||||||
uriComponents.insert( QStringLiteral( "styleUrl" ), dsUri.param( QStringLiteral( "styleUrl" ) ) );
|
uriComponents.insert( QStringLiteral( "styleUrl" ), dsUri.param( QStringLiteral( "styleUrl" ) ) );
|
||||||
|
|
||||||
@ -111,8 +111,8 @@ QString QgsVectorTileProviderMetadata::encodeUri( const QVariantMap &parts ) con
|
|||||||
if ( parts.contains( QStringLiteral( "zmax" ) ) )
|
if ( parts.contains( QStringLiteral( "zmax" ) ) )
|
||||||
dsUri.setParam( QStringLiteral( "zmax" ), parts[ QStringLiteral( "zmax" ) ].toString() );
|
dsUri.setParam( QStringLiteral( "zmax" ), parts[ QStringLiteral( "zmax" ) ].toString() );
|
||||||
|
|
||||||
if ( parts.contains( QStringLiteral( "referer" ) ) )
|
dsUri.httpHeaders().setFromMap( parts );
|
||||||
dsUri.setParam( QStringLiteral( "referer" ), parts[ QStringLiteral( "referer" ) ].toString() );
|
|
||||||
if ( parts.contains( QStringLiteral( "styleUrl" ) ) )
|
if ( parts.contains( QStringLiteral( "styleUrl" ) ) )
|
||||||
dsUri.setParam( QStringLiteral( "styleUrl" ), parts[ QStringLiteral( "styleUrl" ) ].toString() );
|
dsUri.setParam( QStringLiteral( "styleUrl" ), parts[ QStringLiteral( "styleUrl" ) ].toString() );
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
#include "qgssettings.h"
|
#include "qgssettings.h"
|
||||||
#include "qgsmanageconnectionsdialog.h"
|
#include "qgsmanageconnectionsdialog.h"
|
||||||
|
#include "qgshttpheaders.h"
|
||||||
|
|
||||||
QgsManageConnectionsDialog::QgsManageConnectionsDialog( QWidget *parent, Mode mode, Type type, const QString &fileName )
|
QgsManageConnectionsDialog::QgsManageConnectionsDialog( QWidget *parent, Mode mode, Type type, const QString &fileName )
|
||||||
: QDialog( parent )
|
: QDialog( parent )
|
||||||
@ -457,9 +457,11 @@ QDomDocument QgsManageConnectionsDialog::saveOWSConnections( const QStringList &
|
|||||||
el.setAttribute( QStringLiteral( "ignoreGetFeatureInfoURI" ), settings.value( path + connections[i] + "/ignoreGetFeatureInfoURI", false ).toBool() ? "true" : "false" );
|
el.setAttribute( QStringLiteral( "ignoreGetFeatureInfoURI" ), settings.value( path + connections[i] + "/ignoreGetFeatureInfoURI", false ).toBool() ? "true" : "false" );
|
||||||
el.setAttribute( QStringLiteral( "ignoreAxisOrientation" ), settings.value( path + connections[i] + "/ignoreAxisOrientation", false ).toBool() ? "true" : "false" );
|
el.setAttribute( QStringLiteral( "ignoreAxisOrientation" ), settings.value( path + connections[i] + "/ignoreAxisOrientation", false ).toBool() ? "true" : "false" );
|
||||||
el.setAttribute( QStringLiteral( "invertAxisOrientation" ), settings.value( path + connections[i] + "/invertAxisOrientation", false ).toBool() ? "true" : "false" );
|
el.setAttribute( QStringLiteral( "invertAxisOrientation" ), settings.value( path + connections[i] + "/invertAxisOrientation", false ).toBool() ? "true" : "false" );
|
||||||
el.setAttribute( QStringLiteral( "referer" ), settings.value( path + connections[ i ] + "/referer" ).toString() );
|
|
||||||
el.setAttribute( QStringLiteral( "smoothPixmapTransform" ), settings.value( path + connections[i] + "/smoothPixmapTransform", false ).toBool() ? "true" : "false" );
|
el.setAttribute( QStringLiteral( "smoothPixmapTransform" ), settings.value( path + connections[i] + "/smoothPixmapTransform", false ).toBool() ? "true" : "false" );
|
||||||
el.setAttribute( QStringLiteral( "dpiMode" ), settings.value( path + connections[i] + "/dpiMode", "7" ).toInt() );
|
el.setAttribute( QStringLiteral( "dpiMode" ), settings.value( path + connections[i] + "/dpiMode", "7" ).toInt() );
|
||||||
|
|
||||||
|
QgsHttpHeaders httpHeader( path + connections[ i ] );
|
||||||
|
httpHeader.updateDomElement( el );
|
||||||
}
|
}
|
||||||
|
|
||||||
path = "/qgis/" + service.toUpper() + '/';
|
path = "/qgis/" + service.toUpper() + '/';
|
||||||
@ -730,9 +732,11 @@ QDomDocument QgsManageConnectionsDialog::saveXyzTilesConnections( const QStringL
|
|||||||
el.setAttribute( QStringLiteral( "authcfg" ), settings.value( path + "/authcfg" ).toString() );
|
el.setAttribute( QStringLiteral( "authcfg" ), settings.value( path + "/authcfg" ).toString() );
|
||||||
el.setAttribute( QStringLiteral( "username" ), settings.value( path + "/username" ).toString() );
|
el.setAttribute( QStringLiteral( "username" ), settings.value( path + "/username" ).toString() );
|
||||||
el.setAttribute( QStringLiteral( "password" ), settings.value( path + "/password" ).toString() );
|
el.setAttribute( QStringLiteral( "password" ), settings.value( path + "/password" ).toString() );
|
||||||
el.setAttribute( QStringLiteral( "referer" ), settings.value( path + "/referer" ).toString() );
|
|
||||||
el.setAttribute( QStringLiteral( "tilePixelRatio" ), settings.value( path + "/tilePixelRatio", 0 ).toDouble() );
|
el.setAttribute( QStringLiteral( "tilePixelRatio" ), settings.value( path + "/tilePixelRatio", 0 ).toDouble() );
|
||||||
|
|
||||||
|
QgsHttpHeaders httpHeader( path );
|
||||||
|
httpHeader.updateDomElement( el );
|
||||||
|
|
||||||
root.appendChild( el );
|
root.appendChild( el );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -754,7 +758,9 @@ QDomDocument QgsManageConnectionsDialog::saveArcgisConnections( const QStringLis
|
|||||||
QDomElement el = doc.createElement( service.toLower() );
|
QDomElement el = doc.createElement( service.toLower() );
|
||||||
el.setAttribute( QStringLiteral( "name" ), connections[ i ] );
|
el.setAttribute( QStringLiteral( "name" ), connections[ i ] );
|
||||||
el.setAttribute( QStringLiteral( "url" ), settings.value( path + connections[ i ] + "/url" ).toString() );
|
el.setAttribute( QStringLiteral( "url" ), settings.value( path + connections[ i ] + "/url" ).toString() );
|
||||||
el.setAttribute( QStringLiteral( "referer" ), settings.value( path + connections[ i ] + "/referer" ).toString() );
|
|
||||||
|
QgsHttpHeaders httpHeader( path + connections[ i ] );
|
||||||
|
httpHeader.updateDomElement( el );
|
||||||
|
|
||||||
path = "/qgis/" + service.toUpper() + '/';
|
path = "/qgis/" + service.toUpper() + '/';
|
||||||
el.setAttribute( QStringLiteral( "username" ), settings.value( path + connections[ i ] + "/username" ).toString() );
|
el.setAttribute( QStringLiteral( "username" ), settings.value( path + connections[ i ] + "/username" ).toString() );
|
||||||
@ -788,9 +794,11 @@ QDomDocument QgsManageConnectionsDialog::saveVectorTileConnections( const QStrin
|
|||||||
el.setAttribute( QStringLiteral( "authcfg" ), settings.value( path + "/authcfg" ).toString() );
|
el.setAttribute( QStringLiteral( "authcfg" ), settings.value( path + "/authcfg" ).toString() );
|
||||||
el.setAttribute( QStringLiteral( "username" ), settings.value( path + "/username" ).toString() );
|
el.setAttribute( QStringLiteral( "username" ), settings.value( path + "/username" ).toString() );
|
||||||
el.setAttribute( QStringLiteral( "password" ), settings.value( path + "/password" ).toString() );
|
el.setAttribute( QStringLiteral( "password" ), settings.value( path + "/password" ).toString() );
|
||||||
el.setAttribute( QStringLiteral( "referer" ), settings.value( path + "/referer" ).toString() );
|
|
||||||
el.setAttribute( QStringLiteral( "styleUrl" ), settings.value( path + "/styleUrl" ).toString() );
|
el.setAttribute( QStringLiteral( "styleUrl" ), settings.value( path + "/styleUrl" ).toString() );
|
||||||
|
|
||||||
|
QgsHttpHeaders httpHeader( path );
|
||||||
|
httpHeader.updateDomElement( el );
|
||||||
|
|
||||||
root.appendChild( el );
|
root.appendChild( el );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -875,9 +883,12 @@ void QgsManageConnectionsDialog::loadOWSConnections( const QDomDocument &doc, co
|
|||||||
settings.setValue( QString( '/' + connectionName + "/ignoreGetFeatureInfoURI" ), child.attribute( QStringLiteral( "ignoreGetFeatureInfoURI" ) ) == QLatin1String( "true" ) );
|
settings.setValue( QString( '/' + connectionName + "/ignoreGetFeatureInfoURI" ), child.attribute( QStringLiteral( "ignoreGetFeatureInfoURI" ) ) == QLatin1String( "true" ) );
|
||||||
settings.setValue( QString( '/' + connectionName + "/ignoreAxisOrientation" ), child.attribute( QStringLiteral( "ignoreAxisOrientation" ) ) == QLatin1String( "true" ) );
|
settings.setValue( QString( '/' + connectionName + "/ignoreAxisOrientation" ), child.attribute( QStringLiteral( "ignoreAxisOrientation" ) ) == QLatin1String( "true" ) );
|
||||||
settings.setValue( QString( '/' + connectionName + "/invertAxisOrientation" ), child.attribute( QStringLiteral( "invertAxisOrientation" ) ) == QLatin1String( "true" ) );
|
settings.setValue( QString( '/' + connectionName + "/invertAxisOrientation" ), child.attribute( QStringLiteral( "invertAxisOrientation" ) ) == QLatin1String( "true" ) );
|
||||||
settings.setValue( QString( '/' + connectionName + "/referer" ), child.attribute( QStringLiteral( "referer" ) ) );
|
|
||||||
settings.setValue( QString( '/' + connectionName + "/smoothPixmapTransform" ), child.attribute( QStringLiteral( "smoothPixmapTransform" ) ) == QLatin1String( "true" ) );
|
settings.setValue( QString( '/' + connectionName + "/smoothPixmapTransform" ), child.attribute( QStringLiteral( "smoothPixmapTransform" ) ) == QLatin1String( "true" ) );
|
||||||
settings.setValue( QString( '/' + connectionName + "/dpiMode" ), child.attribute( QStringLiteral( "dpiMode" ), QStringLiteral( "7" ) ).toInt() );
|
settings.setValue( QString( '/' + connectionName + "/dpiMode" ), child.attribute( QStringLiteral( "dpiMode" ), QStringLiteral( "7" ) ).toInt() );
|
||||||
|
|
||||||
|
QgsHttpHeaders httpHeader( child );
|
||||||
|
httpHeader.updateSettings( settings, QString( '/' + connectionName ) );
|
||||||
|
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
if ( !child.attribute( QStringLiteral( "username" ) ).isEmpty() )
|
if ( !child.attribute( QStringLiteral( "username" ) ).isEmpty() )
|
||||||
@ -1538,8 +1549,11 @@ void QgsManageConnectionsDialog::loadXyzTilesConnections( const QDomDocument &do
|
|||||||
settings.setValue( QStringLiteral( "authcfg" ), child.attribute( QStringLiteral( "authcfg" ) ) );
|
settings.setValue( QStringLiteral( "authcfg" ), child.attribute( QStringLiteral( "authcfg" ) ) );
|
||||||
settings.setValue( QStringLiteral( "username" ), child.attribute( QStringLiteral( "username" ) ) );
|
settings.setValue( QStringLiteral( "username" ), child.attribute( QStringLiteral( "username" ) ) );
|
||||||
settings.setValue( QStringLiteral( "password" ), child.attribute( QStringLiteral( "password" ) ) );
|
settings.setValue( QStringLiteral( "password" ), child.attribute( QStringLiteral( "password" ) ) );
|
||||||
settings.setValue( QStringLiteral( "referer" ), child.attribute( QStringLiteral( "referer" ) ) );
|
|
||||||
settings.setValue( QStringLiteral( "tilePixelRatio" ), child.attribute( QStringLiteral( "tilePixelRatio" ) ) );
|
settings.setValue( QStringLiteral( "tilePixelRatio" ), child.attribute( QStringLiteral( "tilePixelRatio" ) ) );
|
||||||
|
|
||||||
|
QgsHttpHeaders httpHeader( child );
|
||||||
|
httpHeader.updateSettings( settings );
|
||||||
|
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
child = child.nextSiblingElement();
|
child = child.nextSiblingElement();
|
||||||
@ -1620,7 +1634,10 @@ void QgsManageConnectionsDialog::loadArcgisConnections( const QDomDocument &doc,
|
|||||||
// no dups detected or overwrite is allowed
|
// no dups detected or overwrite is allowed
|
||||||
settings.beginGroup( "/qgis/connections-" + service.toLower() );
|
settings.beginGroup( "/qgis/connections-" + service.toLower() );
|
||||||
settings.setValue( QString( '/' + connectionName + "/url" ), child.attribute( QStringLiteral( "url" ) ) );
|
settings.setValue( QString( '/' + connectionName + "/url" ), child.attribute( QStringLiteral( "url" ) ) );
|
||||||
settings.setValue( QString( '/' + connectionName + "/referer" ), child.attribute( QStringLiteral( "referer" ) ) );
|
|
||||||
|
QgsHttpHeaders httpHeader( child );
|
||||||
|
httpHeader.updateSettings( settings, QString( '/' + connectionName ) );
|
||||||
|
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
settings.beginGroup( "/qgis/" + service.toUpper() + '/' + connectionName );
|
settings.beginGroup( "/qgis/" + service.toUpper() + '/' + connectionName );
|
||||||
@ -1712,9 +1729,11 @@ void QgsManageConnectionsDialog::loadVectorTileConnections( const QDomDocument &
|
|||||||
settings.setValue( QStringLiteral( "authcfg" ), child.attribute( QStringLiteral( "authcfg" ) ) );
|
settings.setValue( QStringLiteral( "authcfg" ), child.attribute( QStringLiteral( "authcfg" ) ) );
|
||||||
settings.setValue( QStringLiteral( "username" ), child.attribute( QStringLiteral( "username" ) ) );
|
settings.setValue( QStringLiteral( "username" ), child.attribute( QStringLiteral( "username" ) ) );
|
||||||
settings.setValue( QStringLiteral( "password" ), child.attribute( QStringLiteral( "password" ) ) );
|
settings.setValue( QStringLiteral( "password" ), child.attribute( QStringLiteral( "password" ) ) );
|
||||||
settings.setValue( QStringLiteral( "referer" ), child.attribute( QStringLiteral( "referer" ) ) );
|
|
||||||
settings.setValue( QStringLiteral( "styleUrl" ), child.attribute( QStringLiteral( "styleUrl" ) ) );
|
settings.setValue( QStringLiteral( "styleUrl" ), child.attribute( QStringLiteral( "styleUrl" ) ) );
|
||||||
|
|
||||||
|
QgsHttpHeaders httpHeader( child );
|
||||||
|
httpHeader.updateSettings( settings );
|
||||||
|
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
child = child.nextSiblingElement();
|
child = child.nextSiblingElement();
|
||||||
|
@ -57,7 +57,7 @@ void QgsArcgisVectorTileConnectionDialog::setConnection( const QString &name, co
|
|||||||
|
|
||||||
mAuthSettings->setUsername( conn.username );
|
mAuthSettings->setUsername( conn.username );
|
||||||
mAuthSettings->setPassword( conn.password );
|
mAuthSettings->setPassword( conn.password );
|
||||||
mEditReferer->setText( conn.referer );
|
mEditReferer->setText( conn.httpHeaders[QgsHttpHeaders::KEY_REFERER].toString() );
|
||||||
mAuthSettings->setConfigId( conn.authCfg );
|
mAuthSettings->setConfigId( conn.authCfg );
|
||||||
|
|
||||||
mEditStyleUrl->setText( conn.styleUrl );
|
mEditStyleUrl->setText( conn.styleUrl );
|
||||||
@ -79,7 +79,7 @@ QString QgsArcgisVectorTileConnectionDialog::connectionUri() const
|
|||||||
|
|
||||||
conn.username = mAuthSettings->username();
|
conn.username = mAuthSettings->username();
|
||||||
conn.password = mAuthSettings->password();
|
conn.password = mAuthSettings->password();
|
||||||
conn.referer = mEditReferer->text();
|
conn.httpHeaders[QgsHttpHeaders::KEY_REFERER] = mEditReferer->text();
|
||||||
conn.authCfg = mAuthSettings->configId( );
|
conn.authCfg = mAuthSettings->configId( );
|
||||||
|
|
||||||
conn.styleUrl = mEditStyleUrl->text();
|
conn.styleUrl = mEditStyleUrl->text();
|
||||||
|
@ -56,7 +56,7 @@ void QgsVectorTileConnectionDialog::setConnection( const QString &name, const QS
|
|||||||
|
|
||||||
mAuthSettings->setUsername( conn.username );
|
mAuthSettings->setUsername( conn.username );
|
||||||
mAuthSettings->setPassword( conn.password );
|
mAuthSettings->setPassword( conn.password );
|
||||||
mEditReferer->setText( conn.referer );
|
mEditReferer->setText( conn.httpHeaders[QgsHttpHeaders::KEY_REFERER].toString() );
|
||||||
mAuthSettings->setConfigId( conn.authCfg );
|
mAuthSettings->setConfigId( conn.authCfg );
|
||||||
|
|
||||||
mEditStyleUrl->setText( conn.styleUrl );
|
mEditStyleUrl->setText( conn.styleUrl );
|
||||||
@ -72,7 +72,7 @@ QString QgsVectorTileConnectionDialog::connectionUri() const
|
|||||||
conn.zMax = mSpinZMax->value();
|
conn.zMax = mSpinZMax->value();
|
||||||
conn.username = mAuthSettings->username();
|
conn.username = mAuthSettings->username();
|
||||||
conn.password = mAuthSettings->password();
|
conn.password = mAuthSettings->password();
|
||||||
conn.referer = mEditReferer->text();
|
conn.httpHeaders[QgsHttpHeaders::KEY_REFERER] = mEditReferer->text();
|
||||||
conn.authCfg = mAuthSettings->configId( );
|
conn.authCfg = mAuthSettings->configId( );
|
||||||
conn.styleUrl = mEditStyleUrl->text();
|
conn.styleUrl = mEditStyleUrl->text();
|
||||||
return QgsVectorTileProviderConnection::encodedUri( conn );
|
return QgsVectorTileProviderConnection::encodedUri( conn );
|
||||||
|
@ -45,9 +45,7 @@ QgsAfsProvider::QgsAfsProvider( const QString &uri, const ProviderOptions &optio
|
|||||||
// Get layer info
|
// Get layer info
|
||||||
QString errorTitle, errorMessage;
|
QString errorTitle, errorMessage;
|
||||||
|
|
||||||
const QString referer = mSharedData->mDataSource.param( QStringLiteral( "referer" ) );
|
mRequestHeaders = mSharedData->mDataSource.httpHeaders();
|
||||||
if ( !referer.isEmpty() )
|
|
||||||
mRequestHeaders[ QStringLiteral( "referer" )] = referer;
|
|
||||||
|
|
||||||
std::unique_ptr< QgsScopedRuntimeProfile > profile;
|
std::unique_ptr< QgsScopedRuntimeProfile > profile;
|
||||||
if ( QgsApplication::profiler()->groupIsActive( QStringLiteral( "projectload" ) ) )
|
if ( QgsApplication::profiler()->groupIsActive( QStringLiteral( "projectload" ) ) )
|
||||||
@ -433,10 +431,9 @@ QVariantMap QgsAfsProviderMetadata::decodeUri( const QString &uri ) const
|
|||||||
if ( xminOk && yminOk && xmaxOk && ymaxOk )
|
if ( xminOk && yminOk && xmaxOk && ymaxOk )
|
||||||
components.insert( QStringLiteral( "bounds" ), r );
|
components.insert( QStringLiteral( "bounds" ), r );
|
||||||
}
|
}
|
||||||
if ( !dsUri.param( QStringLiteral( "referer" ) ).isEmpty() )
|
|
||||||
{
|
dsUri.httpHeaders().updateMap( components );
|
||||||
components.insert( QStringLiteral( "referer" ), dsUri.param( QStringLiteral( "referer" ) ) );
|
|
||||||
}
|
|
||||||
if ( !dsUri.param( QStringLiteral( "crs" ) ).isEmpty() )
|
if ( !dsUri.param( QStringLiteral( "crs" ) ).isEmpty() )
|
||||||
{
|
{
|
||||||
components.insert( QStringLiteral( "crs" ), dsUri.param( QStringLiteral( "crs" ) ) );
|
components.insert( QStringLiteral( "crs" ), dsUri.param( QStringLiteral( "crs" ) ) );
|
||||||
@ -463,10 +460,9 @@ QString QgsAfsProviderMetadata::encodeUri( const QVariantMap &parts ) const
|
|||||||
{
|
{
|
||||||
dsUri.setParam( QStringLiteral( "crs" ), parts.value( QStringLiteral( "crs" ) ).toString() );
|
dsUri.setParam( QStringLiteral( "crs" ), parts.value( QStringLiteral( "crs" ) ).toString() );
|
||||||
}
|
}
|
||||||
if ( !parts.value( QStringLiteral( "referer" ) ).toString().isEmpty() )
|
|
||||||
{
|
dsUri.httpHeaders().setFromMap( parts );
|
||||||
dsUri.setParam( QStringLiteral( "referer" ), parts.value( QStringLiteral( "referer" ) ).toString() );
|
|
||||||
}
|
|
||||||
if ( !parts.value( QStringLiteral( "authcfg" ) ).toString().isEmpty() )
|
if ( !parts.value( QStringLiteral( "authcfg" ) ).toString().isEmpty() )
|
||||||
{
|
{
|
||||||
dsUri.setAuthConfigId( parts.value( QStringLiteral( "authcfg" ) ).toString() );
|
dsUri.setAuthConfigId( parts.value( QStringLiteral( "authcfg" ) ).toString() );
|
||||||
|
@ -60,15 +60,10 @@ bool QgsAfsSharedData::getFeature( QgsFeatureId id, QgsFeature &f, const QgsRect
|
|||||||
QString errorTitle, errorMessage;
|
QString errorTitle, errorMessage;
|
||||||
|
|
||||||
const QString authcfg = mDataSource.authConfigId();
|
const QString authcfg = mDataSource.authConfigId();
|
||||||
QgsHttpHeaders headers;
|
|
||||||
const QString referer = mDataSource.param( QStringLiteral( "referer" ) );
|
|
||||||
if ( !referer.isEmpty() )
|
|
||||||
headers[ QStringLiteral( "Referer" )] = referer;
|
|
||||||
|
|
||||||
const QVariantMap queryData = QgsArcGisRestQueryUtils::getObjects(
|
const QVariantMap queryData = QgsArcGisRestQueryUtils::getObjects(
|
||||||
mDataSource.param( QStringLiteral( "url" ) ), authcfg, objectIds, mDataSource.param( QStringLiteral( "crs" ) ), true,
|
mDataSource.param( QStringLiteral( "url" ) ), authcfg, objectIds, mDataSource.param( QStringLiteral( "crs" ) ), true,
|
||||||
QStringList(), QgsWkbTypes::hasM( mGeometryType ), QgsWkbTypes::hasZ( mGeometryType ),
|
QStringList(), QgsWkbTypes::hasM( mGeometryType ), QgsWkbTypes::hasZ( mGeometryType ),
|
||||||
filterRect, errorTitle, errorMessage, headers, feedback );
|
filterRect, errorTitle, errorMessage, mDataSource.httpHeaders(), feedback );
|
||||||
|
|
||||||
if ( queryData.isEmpty() )
|
if ( queryData.isEmpty() )
|
||||||
{
|
{
|
||||||
@ -151,12 +146,8 @@ QgsFeatureIds QgsAfsSharedData::getFeatureIdsInExtent( const QgsRectangle &exten
|
|||||||
QString errorText;
|
QString errorText;
|
||||||
|
|
||||||
const QString authcfg = mDataSource.authConfigId();
|
const QString authcfg = mDataSource.authConfigId();
|
||||||
QgsHttpHeaders headers;
|
|
||||||
const QString referer = mDataSource.param( QStringLiteral( "referer" ) );
|
|
||||||
if ( !referer.isEmpty() )
|
|
||||||
headers[ QStringLiteral( "Referer" )] = referer;
|
|
||||||
const QList<quint32> featuresInRect = QgsArcGisRestQueryUtils::getObjectIdsByExtent( mDataSource.param( QStringLiteral( "url" ) ),
|
const QList<quint32> featuresInRect = QgsArcGisRestQueryUtils::getObjectIdsByExtent( mDataSource.param( QStringLiteral( "url" ) ),
|
||||||
extent, errorTitle, errorText, authcfg, headers, feedback );
|
extent, errorTitle, errorText, authcfg, mDataSource.httpHeaders(), feedback );
|
||||||
|
|
||||||
QgsFeatureIds ids;
|
QgsFeatureIds ids;
|
||||||
for ( const quint32 id : featuresInRect )
|
for ( const quint32 id : featuresInRect )
|
||||||
|
@ -81,16 +81,12 @@ void QgsAmsLegendFetcher::start()
|
|||||||
// http://sampleserver5.arcgisonline.com/arcgis/rest/services/CommunityAddressing/MapServer/legend?f=pjson
|
// http://sampleserver5.arcgisonline.com/arcgis/rest/services/CommunityAddressing/MapServer/legend?f=pjson
|
||||||
QgsDataSourceUri dataSource( mProvider->dataSourceUri() );
|
QgsDataSourceUri dataSource( mProvider->dataSourceUri() );
|
||||||
const QString authCfg = dataSource.authConfigId();
|
const QString authCfg = dataSource.authConfigId();
|
||||||
const QString referer = dataSource.param( QStringLiteral( "referer" ) );
|
|
||||||
QgsStringMap headers;
|
|
||||||
if ( !referer.isEmpty() )
|
|
||||||
headers[ QStringLiteral( "referer" )] = referer;
|
|
||||||
|
|
||||||
QUrl queryUrl( dataSource.param( QStringLiteral( "url" ) ) + "/legend" );
|
QUrl queryUrl( dataSource.param( QStringLiteral( "url" ) ) + "/legend" );
|
||||||
QUrlQuery query( queryUrl );
|
QUrlQuery query( queryUrl );
|
||||||
query.addQueryItem( QStringLiteral( "f" ), QStringLiteral( "json" ) );
|
query.addQueryItem( QStringLiteral( "f" ), QStringLiteral( "json" ) );
|
||||||
queryUrl.setQuery( query );
|
queryUrl.setQuery( query );
|
||||||
mQuery->start( queryUrl, authCfg, &mQueryReply, false, headers );
|
mQuery->start( queryUrl, authCfg, &mQueryReply, false, dataSource.httpHeaders() );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -196,9 +192,7 @@ QgsAmsProvider::QgsAmsProvider( const QString &uri, const ProviderOptions &optio
|
|||||||
: QgsRasterDataProvider( uri, options, flags )
|
: QgsRasterDataProvider( uri, options, flags )
|
||||||
{
|
{
|
||||||
QgsDataSourceUri dataSource( dataSourceUri() );
|
QgsDataSourceUri dataSource( dataSourceUri() );
|
||||||
const QString referer = dataSource.param( QStringLiteral( "referer" ) );
|
mRequestHeaders = dataSource.httpHeaders();
|
||||||
if ( !referer.isEmpty() )
|
|
||||||
mRequestHeaders[ QStringLiteral( "referer" )] = referer;
|
|
||||||
|
|
||||||
mLegendFetcher = new QgsAmsLegendFetcher( this, QImage() );
|
mLegendFetcher = new QgsAmsLegendFetcher( this, QImage() );
|
||||||
|
|
||||||
@ -1258,10 +1252,8 @@ QVariantMap QgsAmsProviderMetadata::decodeUri( const QString &uri ) const
|
|||||||
QVariantMap components;
|
QVariantMap components;
|
||||||
components.insert( QStringLiteral( "url" ), dsUri.param( QStringLiteral( "url" ) ) );
|
components.insert( QStringLiteral( "url" ), dsUri.param( QStringLiteral( "url" ) ) );
|
||||||
|
|
||||||
if ( !dsUri.param( QStringLiteral( "referer" ) ).isEmpty() )
|
dsUri.httpHeaders().updateMap( components );
|
||||||
{
|
|
||||||
components.insert( QStringLiteral( "referer" ), dsUri.param( QStringLiteral( "referer" ) ) );
|
|
||||||
}
|
|
||||||
if ( !dsUri.param( QStringLiteral( "crs" ) ).isEmpty() )
|
if ( !dsUri.param( QStringLiteral( "crs" ) ).isEmpty() )
|
||||||
{
|
{
|
||||||
components.insert( QStringLiteral( "crs" ), dsUri.param( QStringLiteral( "crs" ) ) );
|
components.insert( QStringLiteral( "crs" ), dsUri.param( QStringLiteral( "crs" ) ) );
|
||||||
@ -1291,10 +1283,9 @@ QString QgsAmsProviderMetadata::encodeUri( const QVariantMap &parts ) const
|
|||||||
{
|
{
|
||||||
dsUri.setParam( QStringLiteral( "crs" ), parts.value( QStringLiteral( "crs" ) ).toString() );
|
dsUri.setParam( QStringLiteral( "crs" ), parts.value( QStringLiteral( "crs" ) ).toString() );
|
||||||
}
|
}
|
||||||
if ( !parts.value( QStringLiteral( "referer" ) ).toString().isEmpty() )
|
|
||||||
{
|
dsUri.httpHeaders().setFromMap( parts );
|
||||||
dsUri.setParam( QStringLiteral( "referer" ), parts.value( QStringLiteral( "referer" ) ).toString() );
|
|
||||||
}
|
|
||||||
if ( !parts.value( QStringLiteral( "authcfg" ) ).toString().isEmpty() )
|
if ( !parts.value( QStringLiteral( "authcfg" ) ).toString().isEmpty() )
|
||||||
{
|
{
|
||||||
dsUri.setAuthConfigId( parts.value( QStringLiteral( "authcfg" ) ).toString() );
|
dsUri.setAuthConfigId( parts.value( QStringLiteral( "authcfg" ) ).toString() );
|
||||||
|
@ -195,15 +195,13 @@ QVector<QgsDataItem *> QgsArcGisRestConnectionItem::createChildren()
|
|||||||
const QgsOwsConnection connection( QStringLiteral( "ARCGISFEATURESERVER" ), mConnName );
|
const QgsOwsConnection connection( QStringLiteral( "ARCGISFEATURESERVER" ), mConnName );
|
||||||
const QString url = connection.uri().param( QStringLiteral( "url" ) );
|
const QString url = connection.uri().param( QStringLiteral( "url" ) );
|
||||||
const QString authcfg = connection.uri().authConfigId();
|
const QString authcfg = connection.uri().authConfigId();
|
||||||
const QString referer = connection.uri().param( QStringLiteral( "referer" ) );
|
|
||||||
QgsHttpHeaders headers;
|
QgsHttpHeaders headers = connection.uri().httpHeaders();
|
||||||
if ( ! referer.isEmpty() )
|
|
||||||
headers[ QStringLiteral( "referer" )] = referer;
|
|
||||||
|
|
||||||
QVector<QgsDataItem *> items;
|
QVector<QgsDataItem *> items;
|
||||||
if ( !mPortalCommunityEndpoint.isEmpty() && !mPortalContentEndpoint.isEmpty() )
|
if ( !mPortalCommunityEndpoint.isEmpty() && !mPortalContentEndpoint.isEmpty() )
|
||||||
{
|
{
|
||||||
items << new QgsArcGisPortalGroupsItem( this, QStringLiteral( "groups" ), authcfg, headers, mPortalCommunityEndpoint, mPortalContentEndpoint );
|
items << new QgsArcGisPortalGroupsItem( this, QStringLiteral( "groups" ), authcfg, connection.uri().httpHeaders(), mPortalCommunityEndpoint, mPortalContentEndpoint );
|
||||||
items << new QgsArcGisRestServicesItem( this, url, QStringLiteral( "services" ), authcfg, headers );
|
items << new QgsArcGisRestServicesItem( this, url, QStringLiteral( "services" ), authcfg, headers );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -573,8 +571,9 @@ QgsArcGisFeatureServiceLayerItem::QgsArcGisFeatureServiceLayerItem( QgsDataItem
|
|||||||
mUri = QStringLiteral( "crs='%1' url='%2'" ).arg( authid, url );
|
mUri = QStringLiteral( "crs='%1' url='%2'" ).arg( authid, url );
|
||||||
if ( !authcfg.isEmpty() )
|
if ( !authcfg.isEmpty() )
|
||||||
mUri += QStringLiteral( " authcfg='%1'" ).arg( authcfg );
|
mUri += QStringLiteral( " authcfg='%1'" ).arg( authcfg );
|
||||||
if ( !headers [ QStringLiteral( "referer" ) ].toString().isEmpty() )
|
|
||||||
mUri += QStringLiteral( " referer='%1'" ).arg( headers[ QStringLiteral( "referer" ) ].toString() );
|
mUri += headers.toSpacedString();
|
||||||
|
|
||||||
setState( Qgis::BrowserItemState::Populated );
|
setState( Qgis::BrowserItemState::Populated );
|
||||||
setToolTip( url );
|
setToolTip( url );
|
||||||
}
|
}
|
||||||
@ -590,8 +589,9 @@ QgsArcGisMapServiceLayerItem::QgsArcGisMapServiceLayerItem( QgsDataItem *parent,
|
|||||||
mUri = QStringLiteral( "crs='%1' format='%2' layer='%3' url='%4'" ).arg( authid, format, id, trimmedUrl );
|
mUri = QStringLiteral( "crs='%1' format='%2' layer='%3' url='%4'" ).arg( authid, format, id, trimmedUrl );
|
||||||
if ( !authcfg.isEmpty() )
|
if ( !authcfg.isEmpty() )
|
||||||
mUri += QStringLiteral( " authcfg='%1'" ).arg( authcfg );
|
mUri += QStringLiteral( " authcfg='%1'" ).arg( authcfg );
|
||||||
if ( !headers [ QStringLiteral( "referer" ) ].toString().isEmpty() )
|
|
||||||
mUri += QStringLiteral( " referer='%1'" ).arg( headers [ QStringLiteral( "referer" ) ].toString() );
|
mUri += headers.toSpacedString();
|
||||||
|
|
||||||
setState( Qgis::BrowserItemState::Populated );
|
setState( Qgis::BrowserItemState::Populated );
|
||||||
setToolTip( mPath );
|
setToolTip( mPath );
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ bool QgsWmsSettings::parseUri( const QString &uriString )
|
|||||||
mAuth.mAuthCfg = uri.authConfigId();
|
mAuth.mAuthCfg = uri.authConfigId();
|
||||||
}
|
}
|
||||||
|
|
||||||
mAuth.mReferer = uri.param( QStringLiteral( "referer" ) );
|
mAuth.mHttpHeaders = uri.httpHeaders();
|
||||||
mXyz = false; // assume WMS / WMTS
|
mXyz = false; // assume WMS / WMTS
|
||||||
|
|
||||||
if ( uri.hasParam( QStringLiteral( "interpretation" ) ) )
|
if ( uri.hasParam( QStringLiteral( "interpretation" ) ) )
|
||||||
|
@ -656,10 +656,10 @@ struct QgsWmsParserSettings
|
|||||||
|
|
||||||
struct QgsWmsAuthorization
|
struct QgsWmsAuthorization
|
||||||
{
|
{
|
||||||
QgsWmsAuthorization( const QString &userName = QString(), const QString &password = QString(), const QString &referer = QString(), const QString &authcfg = QString() )
|
QgsWmsAuthorization( const QString &userName = QString(), const QString &password = QString(), const QgsHttpHeaders &httpHeaders = QgsHttpHeaders(), const QString &authcfg = QString() )
|
||||||
: mUserName( userName )
|
: mUserName( userName )
|
||||||
, mPassword( password )
|
, mPassword( password )
|
||||||
, mReferer( referer )
|
, mHttpHeaders( httpHeaders )
|
||||||
, mAuthCfg( authcfg )
|
, mAuthCfg( authcfg )
|
||||||
{}
|
{}
|
||||||
|
|
||||||
@ -674,10 +674,8 @@ struct QgsWmsAuthorization
|
|||||||
request.setRawHeader( "Authorization", "Basic " + QStringLiteral( "%1:%2" ).arg( mUserName, mPassword ).toUtf8().toBase64() );
|
request.setRawHeader( "Authorization", "Basic " + QStringLiteral( "%1:%2" ).arg( mUserName, mPassword ).toUtf8().toBase64() );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !mReferer.isEmpty() )
|
mHttpHeaders.updateNetworkRequest( request );
|
||||||
{
|
|
||||||
request.setRawHeader( "Referer", mReferer.toLatin1() );
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
//! Sets authorization reply
|
//! Sets authorization reply
|
||||||
@ -696,8 +694,8 @@ struct QgsWmsAuthorization
|
|||||||
//! Password for basic http authentication
|
//! Password for basic http authentication
|
||||||
QString mPassword;
|
QString mPassword;
|
||||||
|
|
||||||
//! Referer for http requests
|
//! headers for http requests
|
||||||
QString mReferer;
|
QgsHttpHeaders mHttpHeaders;
|
||||||
|
|
||||||
//! Authentication configuration ID
|
//! Authentication configuration ID
|
||||||
QString mAuthCfg;
|
QString mAuthCfg;
|
||||||
|
@ -34,8 +34,9 @@ QString QgsXyzConnection::encodedUri() const
|
|||||||
uri.setUsername( username );
|
uri.setUsername( username );
|
||||||
if ( ! password.isEmpty() )
|
if ( ! password.isEmpty() )
|
||||||
uri.setPassword( password );
|
uri.setPassword( password );
|
||||||
if ( ! referer.isEmpty() )
|
|
||||||
uri.setParam( QStringLiteral( "referer" ), referer );
|
uri.setHttpHeaders( httpHeaders );
|
||||||
|
|
||||||
if ( tilePixelRatio != 0 )
|
if ( tilePixelRatio != 0 )
|
||||||
uri.setParam( QStringLiteral( "tilePixelRatio" ), QString::number( tilePixelRatio ) );
|
uri.setParam( QStringLiteral( "tilePixelRatio" ), QString::number( tilePixelRatio ) );
|
||||||
if ( !interpretation.isEmpty() )
|
if ( !interpretation.isEmpty() )
|
||||||
@ -93,7 +94,9 @@ QgsXyzConnection QgsXyzConnectionUtils::connection( const QString &name )
|
|||||||
conn.authCfg = settings.value( QStringLiteral( "authcfg" ) ).toString();
|
conn.authCfg = settings.value( QStringLiteral( "authcfg" ) ).toString();
|
||||||
conn.username = settings.value( QStringLiteral( "username" ) ).toString();
|
conn.username = settings.value( QStringLiteral( "username" ) ).toString();
|
||||||
conn.password = settings.value( QStringLiteral( "password" ) ).toString();
|
conn.password = settings.value( QStringLiteral( "password" ) ).toString();
|
||||||
conn.referer = settings.value( QStringLiteral( "referer" ) ).toString();
|
|
||||||
|
conn.httpHeaders.setFromSettings( settings );
|
||||||
|
|
||||||
conn.tilePixelRatio = settings.value( QStringLiteral( "tilePixelRatio" ), 0 ).toDouble();
|
conn.tilePixelRatio = settings.value( QStringLiteral( "tilePixelRatio" ), 0 ).toDouble();
|
||||||
conn.hidden = settings.value( QStringLiteral( "hidden" ) ).toBool();
|
conn.hidden = settings.value( QStringLiteral( "hidden" ) ).toBool();
|
||||||
conn.interpretation = settings.value( QStringLiteral( "interpretation" ), QString() ).toString();
|
conn.interpretation = settings.value( QStringLiteral( "interpretation" ), QString() ).toString();
|
||||||
@ -137,7 +140,9 @@ void QgsXyzConnectionUtils::addConnection( const QgsXyzConnection &conn )
|
|||||||
settings.setValue( QStringLiteral( "authcfg" ), conn.authCfg );
|
settings.setValue( QStringLiteral( "authcfg" ), conn.authCfg );
|
||||||
settings.setValue( QStringLiteral( "username" ), conn.username );
|
settings.setValue( QStringLiteral( "username" ), conn.username );
|
||||||
settings.setValue( QStringLiteral( "password" ), conn.password );
|
settings.setValue( QStringLiteral( "password" ), conn.password );
|
||||||
settings.setValue( QStringLiteral( "referer" ), conn.referer );
|
|
||||||
|
conn.httpHeaders.updateSettings( settings );
|
||||||
|
|
||||||
settings.setValue( QStringLiteral( "tilePixelRatio" ), conn.tilePixelRatio );
|
settings.setValue( QStringLiteral( "tilePixelRatio" ), conn.tilePixelRatio );
|
||||||
settings.setValue( QStringLiteral( "interpretation" ), conn.interpretation );
|
settings.setValue( QStringLiteral( "interpretation" ), conn.interpretation );
|
||||||
if ( addHiddenProperty )
|
if ( addHiddenProperty )
|
||||||
|
@ -17,6 +17,8 @@
|
|||||||
#define QGSXYZCONNECTION_H
|
#define QGSXYZCONNECTION_H
|
||||||
|
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
|
#include "qgshttpheaders.h"
|
||||||
|
|
||||||
|
|
||||||
struct QgsXyzConnection
|
struct QgsXyzConnection
|
||||||
{
|
{
|
||||||
@ -30,8 +32,8 @@ struct QgsXyzConnection
|
|||||||
QString username;
|
QString username;
|
||||||
// HTTP Basic password
|
// HTTP Basic password
|
||||||
QString password;
|
QString password;
|
||||||
// Referer
|
// http headers
|
||||||
QString referer;
|
QgsHttpHeaders httpHeaders;
|
||||||
// tile pixel ratio (0 = unknown (not scaled), 1.0 = 256x256, 2.0 = 512x512)
|
// tile pixel ratio (0 = unknown (not scaled), 1.0 = 256x256, 2.0 = 512x512)
|
||||||
double tilePixelRatio = 0;
|
double tilePixelRatio = 0;
|
||||||
bool hidden = false;
|
bool hidden = false;
|
||||||
|
@ -49,7 +49,7 @@ void QgsXyzConnectionDialog::setConnection( const QgsXyzConnection &conn )
|
|||||||
mSourceWidget->setZMax( conn.zMax );
|
mSourceWidget->setZMax( conn.zMax );
|
||||||
mSourceWidget->setUsername( conn.username );
|
mSourceWidget->setUsername( conn.username );
|
||||||
mSourceWidget->setPassword( conn.password );
|
mSourceWidget->setPassword( conn.password );
|
||||||
mSourceWidget->setReferer( conn.referer );
|
mSourceWidget->setReferer( conn.httpHeaders[QgsHttpHeaders::KEY_REFERER].toString() );
|
||||||
mSourceWidget->setTilePixelRatio( conn.tilePixelRatio );
|
mSourceWidget->setTilePixelRatio( conn.tilePixelRatio );
|
||||||
mSourceWidget->setAuthCfg( conn.authCfg );
|
mSourceWidget->setAuthCfg( conn.authCfg );
|
||||||
mSourceWidget->setInterpretation( conn.interpretation );
|
mSourceWidget->setInterpretation( conn.interpretation );
|
||||||
@ -64,7 +64,7 @@ QgsXyzConnection QgsXyzConnectionDialog::connection() const
|
|||||||
conn.zMax = mSourceWidget->zMax();
|
conn.zMax = mSourceWidget->zMax();
|
||||||
conn.username = mSourceWidget->username();
|
conn.username = mSourceWidget->username();
|
||||||
conn.password = mSourceWidget->password();
|
conn.password = mSourceWidget->password();
|
||||||
conn.referer = mSourceWidget->referer();
|
conn.httpHeaders[QgsHttpHeaders::KEY_REFERER] = mSourceWidget->referer();
|
||||||
conn.tilePixelRatio = mSourceWidget->tilePixelRatio();
|
conn.tilePixelRatio = mSourceWidget->tilePixelRatio();
|
||||||
conn.authCfg = mSourceWidget->authcfg( );
|
conn.authCfg = mSourceWidget->authcfg( );
|
||||||
conn.interpretation = mSourceWidget->interpretation();
|
conn.interpretation = mSourceWidget->interpretation();
|
||||||
|
@ -75,8 +75,8 @@ void TestQgsHttpheaders::setFromSettings( const QString &keyBase )
|
|||||||
settings.remove( keyBase ); // cleanup
|
settings.remove( keyBase ); // cleanup
|
||||||
|
|
||||||
settings.setValue( keyBase + outOfHeaderKey, "value" );
|
settings.setValue( keyBase + outOfHeaderKey, "value" );
|
||||||
settings.setValue( keyBase + QgsHttpHeaders::KEY_PREFIX + "key1", "value1" );
|
settings.setValue( keyBase + QgsHttpHeaders::PATH_PREFIX + "key1", "value1" );
|
||||||
settings.setValue( keyBase + QgsHttpHeaders::KEY_PREFIX + QgsHttpHeaders::KEY_REFERER, "valueHH_R" );
|
settings.setValue( keyBase + QgsHttpHeaders::PATH_PREFIX + QgsHttpHeaders::KEY_REFERER, "valueHH_R" );
|
||||||
|
|
||||||
QgsHttpHeaders h( settings, keyBase );
|
QgsHttpHeaders h( settings, keyBase );
|
||||||
QVERIFY( ! h.keys().contains( outOfHeaderKey ) );
|
QVERIFY( ! h.keys().contains( outOfHeaderKey ) );
|
||||||
@ -99,26 +99,26 @@ void TestQgsHttpheaders::updateSettings()
|
|||||||
|
|
||||||
QgsHttpHeaders h( QVariantMap( { {QStringLiteral( "key1" ), "value1"}} ) );
|
QgsHttpHeaders h( QVariantMap( { {QStringLiteral( "key1" ), "value1"}} ) );
|
||||||
h.updateSettings( settings, keyBase );
|
h.updateSettings( settings, keyBase );
|
||||||
QVERIFY( settings.contains( keyBase + QgsHttpHeaders::KEY_PREFIX + "key1" ) );
|
QVERIFY( settings.contains( keyBase + QgsHttpHeaders::PATH_PREFIX + "key1" ) );
|
||||||
QCOMPARE( settings.value( keyBase + QgsHttpHeaders::KEY_PREFIX + "key1" ).toString(), "value1" );
|
QCOMPARE( settings.value( keyBase + QgsHttpHeaders::PATH_PREFIX + "key1" ).toString(), "value1" );
|
||||||
|
|
||||||
QVERIFY( ! settings.contains( keyBase + QgsHttpHeaders::KEY_REFERER ) );
|
QVERIFY( ! settings.contains( keyBase + QgsHttpHeaders::KEY_REFERER ) );
|
||||||
QVERIFY( ! settings.contains( keyBase + QgsHttpHeaders::KEY_PREFIX + QgsHttpHeaders::KEY_REFERER ) );
|
QVERIFY( ! settings.contains( keyBase + QgsHttpHeaders::PATH_PREFIX + QgsHttpHeaders::KEY_REFERER ) );
|
||||||
|
|
||||||
// at old location
|
// at old location
|
||||||
settings.remove( keyBase + QgsHttpHeaders::KEY_REFERER );
|
settings.remove( keyBase + QgsHttpHeaders::KEY_REFERER );
|
||||||
h [QgsHttpHeaders::KEY_REFERER] = QStringLiteral( "http://gg.com" );
|
h [QgsHttpHeaders::KEY_REFERER] = QStringLiteral( "http://gg.com" );
|
||||||
|
|
||||||
h.updateSettings( settings, keyBase );
|
h.updateSettings( settings, keyBase );
|
||||||
QVERIFY( settings.contains( keyBase + QgsHttpHeaders::KEY_PREFIX + QgsHttpHeaders::KEY_REFERER ) );
|
QVERIFY( settings.contains( keyBase + QgsHttpHeaders::PATH_PREFIX + QgsHttpHeaders::KEY_REFERER ) );
|
||||||
QCOMPARE( settings.value( keyBase + QgsHttpHeaders::KEY_PREFIX + QgsHttpHeaders::KEY_REFERER ).toString(), "http://gg.com" );
|
QCOMPARE( settings.value( keyBase + QgsHttpHeaders::PATH_PREFIX + QgsHttpHeaders::KEY_REFERER ).toString(), "http://gg.com" );
|
||||||
QVERIFY( ! settings.contains( keyBase + QgsHttpHeaders::KEY_REFERER ) );
|
QVERIFY( ! settings.contains( keyBase + QgsHttpHeaders::KEY_REFERER ) );
|
||||||
|
|
||||||
// test backward compatibility
|
// test backward compatibility
|
||||||
settings.setValue( keyBase + QgsHttpHeaders::KEY_REFERER, "paf" ) ; // legacy referer, should be overridden
|
settings.setValue( keyBase + QgsHttpHeaders::KEY_REFERER, "paf" ) ; // legacy referer, should be overridden
|
||||||
h.updateSettings( settings, keyBase );
|
h.updateSettings( settings, keyBase );
|
||||||
QVERIFY( settings.contains( keyBase + QgsHttpHeaders::KEY_PREFIX + QgsHttpHeaders::KEY_REFERER ) );
|
QVERIFY( settings.contains( keyBase + QgsHttpHeaders::PATH_PREFIX + QgsHttpHeaders::KEY_REFERER ) );
|
||||||
QCOMPARE( settings.value( keyBase + QgsHttpHeaders::KEY_PREFIX + QgsHttpHeaders::KEY_REFERER ).toString(), "http://gg.com" );
|
QCOMPARE( settings.value( keyBase + QgsHttpHeaders::PATH_PREFIX + QgsHttpHeaders::KEY_REFERER ).toString(), "http://gg.com" );
|
||||||
QVERIFY( settings.contains( keyBase + QgsHttpHeaders::KEY_REFERER ) );
|
QVERIFY( settings.contains( keyBase + QgsHttpHeaders::KEY_REFERER ) );
|
||||||
QCOMPARE( settings.value( keyBase + QgsHttpHeaders::KEY_REFERER ).toString(), "http://gg.com" );
|
QCOMPARE( settings.value( keyBase + QgsHttpHeaders::KEY_REFERER ).toString(), "http://gg.com" );
|
||||||
}
|
}
|
||||||
@ -127,18 +127,18 @@ void TestQgsHttpheaders::updateSettings()
|
|||||||
void TestQgsHttpheaders::createQgsOwsConnection()
|
void TestQgsHttpheaders::createQgsOwsConnection()
|
||||||
{
|
{
|
||||||
QgsSettings settings;
|
QgsSettings settings;
|
||||||
settings.setValue( QString( QgsSettings::Prefix::QGIS ) + "/connections-service/name/" + QgsHttpHeaders::KEY_PREFIX + QgsHttpHeaders::KEY_REFERER,
|
settings.setValue( QString( QgsSettings::Prefix::QGIS ) + "/connections-service/name/" + QgsHttpHeaders::PATH_PREFIX + QgsHttpHeaders::KEY_REFERER,
|
||||||
"http://test.com" );
|
"http://test.com" );
|
||||||
settings.setValue( QString( QgsSettings::Prefix::QGIS ) + "/connections-service/name/" + QgsHttpHeaders::KEY_PREFIX + "other_http_header",
|
settings.setValue( QString( QgsSettings::Prefix::QGIS ) + "/connections-service/name/" + QgsHttpHeaders::PATH_PREFIX + "other_http_header",
|
||||||
"value" );
|
"value" );
|
||||||
|
|
||||||
QgsOwsConnection ows( "service", "name" );
|
QgsOwsConnection ows( "service", "name" );
|
||||||
QCOMPARE( ows.connectionInfo(), ",authcfg=,referer=http://test.com" );
|
QCOMPARE( ows.connectionInfo(), ",authcfg=,referer=http://test.com" );
|
||||||
QCOMPARE( ows.uri().encodedUri(), "referer=http://test.com&url" );
|
QCOMPARE( ows.uri().encodedUri(), "url&http-header:other_http_header=value&http-header:referer=http://test.com" );
|
||||||
|
|
||||||
QgsDataSourceUri uri( QString( "https://www.ogc.org/?p1=v1" ) );
|
QgsDataSourceUri uri( QString( "https://www.ogc.org/?p1=v1" ) );
|
||||||
QgsDataSourceUri uri2 = ows.addWmsWcsConnectionSettings( uri, "service", "name" );
|
QgsDataSourceUri uri2 = ows.addWmsWcsConnectionSettings( uri, "service", "name" );
|
||||||
QCOMPARE( uri2.encodedUri(), "https://www.ogc.org/?p1=v1&other_http_header=value&referer=http://test.com" );
|
QCOMPARE( uri2.encodedUri(), "https://www.ogc.org/?p1=v1&http-header:other_http_header=value&http-header:referer=http://test.com" );
|
||||||
}
|
}
|
||||||
|
|
||||||
QGSTEST_MAIN( TestQgsHttpheaders )
|
QGSTEST_MAIN( TestQgsHttpheaders )
|
||||||
|
@ -478,7 +478,7 @@ class TestPyQgsAFSProvider(unittest.TestCase, ProviderTestCase):
|
|||||||
"""
|
"""
|
||||||
parts = {'url': 'http://blah.com', 'crs': 'epsg:4326', 'referer': 'me', 'bounds': QgsRectangle(1, 2, 3, 4)}
|
parts = {'url': 'http://blah.com', 'crs': 'epsg:4326', 'referer': 'me', 'bounds': QgsRectangle(1, 2, 3, 4)}
|
||||||
uri = QgsProviderRegistry.instance().encodeUri(self.vl.dataProvider().name(), parts)
|
uri = QgsProviderRegistry.instance().encodeUri(self.vl.dataProvider().name(), parts)
|
||||||
self.assertEqual(uri, " bbox='1,2,3,4' crs='epsg:4326' referer='me' url='http://blah.com'")
|
self.assertEqual(uri, " bbox='1,2,3,4' crs='epsg:4326' url='http://blah.com' http-header:referer='me' referer='me'")
|
||||||
|
|
||||||
def testObjectIdDifferentName(self):
|
def testObjectIdDifferentName(self):
|
||||||
""" Test that object id fields not named OBJECTID work correctly """
|
""" Test that object id fields not named OBJECTID work correctly """
|
||||||
|
@ -57,7 +57,7 @@ class TestQgsGeoNodeConnection(unittest.TestCase):
|
|||||||
uri = c.uri()
|
uri = c.uri()
|
||||||
c.addWmsConnectionSettings(uri)
|
c.addWmsConnectionSettings(uri)
|
||||||
|
|
||||||
self.assertEqual(uri.param('referer'), 'my_ref')
|
self.assertEqual(uri.httpHeader('referer'), 'my_ref')
|
||||||
self.assertEqual(uri.param('IgnoreGetMapUrl'), '1')
|
self.assertEqual(uri.param('IgnoreGetMapUrl'), '1')
|
||||||
self.assertEqual(uri.param('IgnoreGetFeatureInfoUrl'), '1')
|
self.assertEqual(uri.param('IgnoreGetFeatureInfoUrl'), '1')
|
||||||
self.assertEqual(uri.param('SmoothPixmapTransform'), '1')
|
self.assertEqual(uri.param('SmoothPixmapTransform'), '1')
|
||||||
|
@ -54,7 +54,7 @@ class TestQgsOwsConnection(unittest.TestCase):
|
|||||||
uri = c.uri()
|
uri = c.uri()
|
||||||
|
|
||||||
self.assertEqual(uri.param('url'), 'aaa.bbb.com')
|
self.assertEqual(uri.param('url'), 'aaa.bbb.com')
|
||||||
self.assertEqual(uri.param('referer'), 'my_ref')
|
self.assertEqual(uri.httpHeader('referer'), 'my_ref')
|
||||||
self.assertEqual(uri.param('IgnoreGetMapUrl'), '1')
|
self.assertEqual(uri.param('IgnoreGetMapUrl'), '1')
|
||||||
self.assertEqual(uri.param('IgnoreGetFeatureInfoUrl'), '1')
|
self.assertEqual(uri.param('IgnoreGetFeatureInfoUrl'), '1')
|
||||||
self.assertEqual(uri.param('SmoothPixmapTransform'), '1')
|
self.assertEqual(uri.param('SmoothPixmapTransform'), '1')
|
||||||
@ -66,7 +66,7 @@ class TestQgsOwsConnection(unittest.TestCase):
|
|||||||
uri = QgsDataSourceUri()
|
uri = QgsDataSourceUri()
|
||||||
QgsOwsConnection.addWmsWcsConnectionSettings(uri, 'qgis/connections-wms/test/')
|
QgsOwsConnection.addWmsWcsConnectionSettings(uri, 'qgis/connections-wms/test/')
|
||||||
|
|
||||||
self.assertEqual(uri.param('referer'), 'my_ref')
|
self.assertEqual(uri.httpHeader('referer'), 'my_ref')
|
||||||
self.assertEqual(uri.param('IgnoreGetMapUrl'), '1')
|
self.assertEqual(uri.param('IgnoreGetMapUrl'), '1')
|
||||||
self.assertEqual(uri.param('IgnoreGetFeatureInfoUrl'), '1')
|
self.assertEqual(uri.param('IgnoreGetFeatureInfoUrl'), '1')
|
||||||
self.assertEqual(uri.param('SmoothPixmapTransform'), '1')
|
self.assertEqual(uri.param('SmoothPixmapTransform'), '1')
|
||||||
|
@ -110,13 +110,13 @@ class TestVectorTile(unittest.TestCase):
|
|||||||
uri = md.encodeUri(parts)
|
uri = md.encodeUri(parts)
|
||||||
self.assertEqual(uri, 'type=xyz&url=https://fake.new.server/%7Bx%7D/%7By%7D/%7Bz%7D.png&zmax=2&zmin=0')
|
self.assertEqual(uri, 'type=xyz&url=https://fake.new.server/%7Bx%7D/%7By%7D/%7Bz%7D.png&zmax=2&zmin=0')
|
||||||
|
|
||||||
uri = 'type=xyz&serviceType=arcgis&url=https://fake.server/%7Bx%7D/%7By%7D/%7Bz%7D.png&zmax=2&referer=https://qgis.org/&styleUrl=https://qgis.org/'
|
uri = 'type=xyz&serviceType=arcgis&url=https://fake.server/%7Bx%7D/%7By%7D/%7Bz%7D.png&zmax=2&http-header:referer=https://qgis.org/&styleUrl=https://qgis.org/'
|
||||||
parts = md.decodeUri(uri)
|
parts = md.decodeUri(uri)
|
||||||
self.assertEqual(parts, {'type': 'xyz', 'serviceType': 'arcgis', 'url': 'https://fake.server/{x}/{y}/{z}.png', 'zmax': '2', 'referer': 'https://qgis.org/', 'styleUrl': 'https://qgis.org/'})
|
self.assertEqual(parts, {'type': 'xyz', 'serviceType': 'arcgis', 'url': 'https://fake.server/{x}/{y}/{z}.png', 'zmax': '2', 'http-header:referer': 'https://qgis.org/', 'referer': 'https://qgis.org/', 'styleUrl': 'https://qgis.org/'})
|
||||||
|
|
||||||
parts['url'] = 'https://fake.new.server/{x}/{y}/{z}.png'
|
parts['url'] = 'https://fake.new.server/{x}/{y}/{z}.png'
|
||||||
uri = md.encodeUri(parts)
|
uri = md.encodeUri(parts)
|
||||||
self.assertEqual(uri, 'referer=https://qgis.org/&serviceType=arcgis&styleUrl=https://qgis.org/&type=xyz&url=https://fake.new.server/%7Bx%7D/%7By%7D/%7Bz%7D.png&zmax=2')
|
self.assertEqual(uri, 'serviceType=arcgis&styleUrl=https://qgis.org/&type=xyz&url=https://fake.new.server/%7Bx%7D/%7By%7D/%7Bz%7D.png&zmax=2&http-header:referer=https://qgis.org/')
|
||||||
|
|
||||||
def testZoomRange(self):
|
def testZoomRange(self):
|
||||||
"""
|
"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user