mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-05 00:09:32 -04:00
Store preferred http method for connections
This commit is contained in:
parent
e0f5602fed
commit
b774d3ecae
@ -97,6 +97,13 @@ Returns the "test connection" button.
|
||||
|
||||
|
||||
|
||||
Qgis::HttpMethod preferredHttpMethod() const;
|
||||
%Docstring
|
||||
Returns the selected preferred HTTP method.
|
||||
|
||||
.. versionadded:: 3.44
|
||||
%End
|
||||
|
||||
|
||||
virtual QString wfsSettingsKey( const QString &base, const QString &connectionName ) const;
|
||||
%Docstring
|
||||
|
@ -97,6 +97,13 @@ Returns the "test connection" button.
|
||||
|
||||
|
||||
|
||||
Qgis::HttpMethod preferredHttpMethod() const;
|
||||
%Docstring
|
||||
Returns the selected preferred HTTP method.
|
||||
|
||||
.. versionadded:: 3.44
|
||||
%End
|
||||
|
||||
|
||||
virtual QString wfsSettingsKey( const QString &base, const QString &connectionName ) const;
|
||||
%Docstring
|
||||
|
@ -76,6 +76,7 @@ const QgsSettingsEntryString *QgsOwsConnection::settingsUsername = new QgsSettin
|
||||
const QgsSettingsEntryString *QgsOwsConnection::settingsPassword = new QgsSettingsEntryString( QStringLiteral( "password" ), sTreeOwsConnections ) ;
|
||||
const QgsSettingsEntryString *QgsOwsConnection::settingsAuthCfg = new QgsSettingsEntryString( QStringLiteral( "authcfg" ), sTreeOwsConnections ) ;
|
||||
const QgsSettingsEntryInteger *QgsOwsConnection::settingsFeatureCount = new QgsSettingsEntryInteger( QStringLiteral( "feature-count" ), sTreeOwsConnections, 10 );
|
||||
const QgsSettingsEntryEnumFlag<Qgis::HttpMethod> *QgsOwsConnection::settingsPreferredHttpMethod = new QgsSettingsEntryEnumFlag<Qgis::HttpMethod>( QStringLiteral( "http-method" ), sTreeOwsConnections, Qgis::HttpMethod::Get, QString() );
|
||||
|
||||
QgsOwsConnection::QgsOwsConnection( const QString &service, const QString &connName )
|
||||
: mConnName( connName )
|
||||
@ -260,6 +261,24 @@ QgsDataSourceUri &QgsOwsConnection::addWfsConnectionSettings( QgsDataSourceUri &
|
||||
uri.setParam( QStringLiteral( "maxNumFeatures" ), maxnumFeatures );
|
||||
}
|
||||
|
||||
const Qgis::HttpMethod httpMethod = settingsPreferredHttpMethod->value( {service.toLower(), connName} );
|
||||
switch ( httpMethod )
|
||||
{
|
||||
case Qgis::HttpMethod::Get:
|
||||
// default, we don't set to explicitly set
|
||||
break;
|
||||
|
||||
case Qgis::HttpMethod::Post:
|
||||
uri.setParam( QStringLiteral( "httpMethod" ), QStringLiteral( "post" ) );
|
||||
break;
|
||||
|
||||
case Qgis::HttpMethod::Head:
|
||||
case Qgis::HttpMethod::Put:
|
||||
case Qgis::HttpMethod::Delete:
|
||||
// not supported
|
||||
break;
|
||||
}
|
||||
|
||||
return uri;
|
||||
}
|
||||
|
||||
|
@ -116,6 +116,7 @@ class CORE_EXPORT QgsOwsConnection : public QObject
|
||||
static const QgsSettingsEntryString *settingsPassword;
|
||||
static const QgsSettingsEntryString *settingsAuthCfg;
|
||||
static const QgsSettingsEntryInteger *settingsFeatureCount;
|
||||
static const QgsSettingsEntryEnumFlag<Qgis::HttpMethod> *settingsPreferredHttpMethod;
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -527,6 +527,7 @@ QDomDocument QgsManageConnectionsDialog::saveWfsConnections( const QStringList &
|
||||
el.setAttribute( QStringLiteral( "invertAxisOrientation" ), QgsOwsConnection::settingsInvertAxisOrientation->value( { QStringLiteral( "wfs" ), connections[i] } ) );
|
||||
el.setAttribute( QStringLiteral( "username" ), QgsOwsConnection::settingsUsername->value( { QStringLiteral( "wfs" ), connections[i] } ) );
|
||||
el.setAttribute( QStringLiteral( "password" ), QgsOwsConnection::settingsPassword->value( { QStringLiteral( "wfs" ), connections[i] } ) );
|
||||
el.setAttribute( QStringLiteral( "httpMethod" ), QgsOwsConnection::settingsPreferredHttpMethod->value( { QStringLiteral( "wfs" ), connections[i] } ) == Qgis::HttpMethod::Post ? QStringLiteral( "post" ) : QStringLiteral( "get" ) );
|
||||
root.appendChild( el );
|
||||
}
|
||||
|
||||
@ -1080,6 +1081,7 @@ void QgsManageConnectionsDialog::loadWfsConnections( const QDomDocument &doc, co
|
||||
QgsOwsConnection::settingsPagingEnabled->setValue( child.attribute( QStringLiteral( "pagingenabled" ) ), { QStringLiteral( "wfs" ), connectionName } );
|
||||
QgsOwsConnection::settingsIgnoreAxisOrientation->setValue( child.attribute( QStringLiteral( "ignoreAxisOrientation" ) ).toInt(), { QStringLiteral( "wfs" ), connectionName } );
|
||||
QgsOwsConnection::settingsInvertAxisOrientation->setValue( child.attribute( QStringLiteral( "invertAxisOrientation" ) ).toInt(), { QStringLiteral( "wfs" ), connectionName } );
|
||||
QgsOwsConnection::settingsPreferredHttpMethod->setValue( child.attribute( QStringLiteral( "httpMethod" ) ).compare( QLatin1String( "post" ), Qt::CaseInsensitive ) == 0 ? Qgis::HttpMethod::Post : Qgis::HttpMethod::Get, { QStringLiteral( "wfs" ), connectionName } );
|
||||
|
||||
if ( !child.attribute( QStringLiteral( "username" ) ).isEmpty() )
|
||||
{
|
||||
|
@ -89,6 +89,10 @@ QgsNewHttpConnection::QgsNewHttpConnection( QWidget *parent, ConnectionTypes typ
|
||||
cmbVersion->addItem( tr( "OGC API - Features" ) );
|
||||
connect( cmbVersion, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsNewHttpConnection::wfsVersionCurrentIndexChanged );
|
||||
|
||||
mComboHttpMethod->addItem( QStringLiteral( "GET" ), QVariant::fromValue( Qgis::HttpMethod::Get ) );
|
||||
mComboHttpMethod->addItem( QStringLiteral( "POST" ), QVariant::fromValue( Qgis::HttpMethod::Post ) );
|
||||
mComboHttpMethod->setCurrentIndex( mComboHttpMethod->findData( QVariant::fromValue( Qgis::HttpMethod::Get ) ) );
|
||||
|
||||
cmbFeaturePaging->clear();
|
||||
cmbFeaturePaging->addItem( tr( "Default (trust server capabilities)" ) );
|
||||
cmbFeaturePaging->addItem( tr( "Enabled" ) );
|
||||
@ -287,6 +291,11 @@ QLineEdit *QgsNewHttpConnection::wfsPageSizeLineEdit()
|
||||
return txtPageSize;
|
||||
}
|
||||
|
||||
Qgis::HttpMethod QgsNewHttpConnection::preferredHttpMethod() const
|
||||
{
|
||||
return mComboHttpMethod->currentData().value< Qgis::HttpMethod >();
|
||||
}
|
||||
|
||||
QString QgsNewHttpConnection::wfsSettingsKey( const QString &base, const QString &connectionName ) const
|
||||
{
|
||||
return base + connectionName;
|
||||
@ -347,6 +356,7 @@ void QgsNewHttpConnection::updateServiceSpecificSettings()
|
||||
else
|
||||
cmbFeaturePaging->setCurrentIndex( static_cast<int>( QgsNewHttpConnection::WfsFeaturePagingIndex::DEFAULT ) );
|
||||
|
||||
mComboHttpMethod->setCurrentIndex( mComboHttpMethod->findData( QVariant::fromValue( QgsOwsConnection::settingsPreferredHttpMethod->value( detailsParameters ) ) ) );
|
||||
txtPageSize->setText( QgsOwsConnection::settingsPagesize->value( detailsParameters ) );
|
||||
}
|
||||
|
||||
@ -449,6 +459,7 @@ void QgsNewHttpConnection::accept()
|
||||
QgsOwsConnection::settingsVersion->setValue( version, detailsParameters );
|
||||
QgsOwsConnection::settingsMaxNumFeatures->setValue( txtMaxNumFeatures->text(), detailsParameters );
|
||||
QgsOwsConnection::settingsPagesize->setValue( txtPageSize->text(), detailsParameters );
|
||||
QgsOwsConnection::settingsPreferredHttpMethod->setValue( mComboHttpMethod->currentData().value< Qgis::HttpMethod >(), detailsParameters );
|
||||
|
||||
QString pagingEnabled = QStringLiteral( "default" );
|
||||
switch ( cmbFeaturePaging->currentIndex() )
|
||||
|
@ -169,6 +169,13 @@ class GUI_EXPORT QgsNewHttpConnection : public QDialog, private Ui::QgsNewHttpCo
|
||||
*/
|
||||
QLineEdit *wfsPageSizeLineEdit() SIP_SKIP;
|
||||
|
||||
/**
|
||||
* Returns the selected preferred HTTP method.
|
||||
*
|
||||
* \since QGIS 3.44
|
||||
*/
|
||||
Qgis::HttpMethod preferredHttpMethod() const;
|
||||
|
||||
/**
|
||||
* Returns the url.
|
||||
* \since QGIS 3.2
|
||||
|
@ -18,7 +18,7 @@
|
||||
#include "qgswfsconstants.h"
|
||||
#include "qgslogger.h"
|
||||
#include "qgssettingsentryimpl.h"
|
||||
|
||||
#include "qgssettingsentryenumflag.h"
|
||||
|
||||
static const QString SERVICE_WFS = QStringLiteral( "WFS" );
|
||||
|
||||
@ -60,6 +60,27 @@ QgsWfsConnection::QgsWfsConnection( const QString &connName )
|
||||
mUri.setParam( QgsWFSConstants::URI_PARAM_WFST_1_1_PREFER_COORDINATES, settingsPreferCoordinatesForWfsT11->value( detailsParameters ) ? QStringLiteral( "true" ) : QStringLiteral( "false" ) );
|
||||
}
|
||||
|
||||
if ( settingsPreferredHttpMethod->exists( detailsParameters ) )
|
||||
{
|
||||
mUri.removeParam( QgsWFSConstants::URI_PARAM_HTTPMETHOD ); // setParam allow for duplicates!
|
||||
switch ( settingsPreferredHttpMethod->value( detailsParameters ) )
|
||||
{
|
||||
case Qgis::HttpMethod::Get:
|
||||
// default, we don't set to explicitly set
|
||||
break;
|
||||
|
||||
case Qgis::HttpMethod::Post:
|
||||
mUri.setParam( QgsWFSConstants::URI_PARAM_HTTPMETHOD, QStringLiteral( "post" ) );
|
||||
break;
|
||||
|
||||
case Qgis::HttpMethod::Head:
|
||||
case Qgis::HttpMethod::Put:
|
||||
case Qgis::HttpMethod::Delete:
|
||||
// not supported
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
QgsDebugMsgLevel( QStringLiteral( "WFS full uri: '%1'." ).arg( QString( mUri.uri() ) ), 4 );
|
||||
}
|
||||
|
||||
|
@ -44,5 +44,6 @@ const QString QgsWFSConstants::URI_PARAM_WFST_1_1_PREFER_COORDINATES( QStringLit
|
||||
const QString QgsWFSConstants::URI_PARAM_SKIP_INITIAL_GET_FEATURE( QStringLiteral( "skipInitialGetFeature" ) );
|
||||
const QString QgsWFSConstants::URI_PARAM_GEOMETRY_TYPE_FILTER( QStringLiteral( "geometryTypeFilter" ) );
|
||||
const QString QgsWFSConstants::URI_PARAM_SQL( QStringLiteral( "sql" ) );
|
||||
const QString QgsWFSConstants::URI_PARAM_HTTPMETHOD( QStringLiteral( "httpMethod" ) );
|
||||
|
||||
const QString QgsWFSConstants::VERSION_AUTO( QStringLiteral( "auto" ) );
|
||||
|
@ -52,6 +52,7 @@ struct QgsWFSConstants
|
||||
static const QString URI_PARAM_SKIP_INITIAL_GET_FEATURE;
|
||||
static const QString URI_PARAM_GEOMETRY_TYPE_FILTER;
|
||||
static const QString URI_PARAM_SQL;
|
||||
static const QString URI_PARAM_HTTPMETHOD;
|
||||
|
||||
//
|
||||
static const QString VERSION_AUTO;
|
||||
|
@ -22,6 +22,7 @@
|
||||
#include "qgswfsconstants.h"
|
||||
#include "qgswfsdataitems.h"
|
||||
#include "qgsdataitemguiproviderutils.h"
|
||||
#include "qgssettingsentryenumflag.h"
|
||||
|
||||
#include <QFileDialog>
|
||||
#include <QMessageBox>
|
||||
@ -117,6 +118,8 @@ void QgsWfsDataItemGuiProvider::duplicateConnection( QgsDataItem *item )
|
||||
QgsOwsConnection::settingsPagesize->setValue( QgsOwsConnection::settingsPagesize->value( detailsParameters ), newDetailsParameters );
|
||||
QgsOwsConnection::settingsPagingEnabled->setValue( QgsOwsConnection::settingsPagingEnabled->value( detailsParameters ), newDetailsParameters );
|
||||
|
||||
QgsOwsConnection::settingsPreferredHttpMethod->setValue( QgsOwsConnection::settingsPreferredHttpMethod->value( detailsParameters ), newDetailsParameters );
|
||||
|
||||
QgsOwsConnection::settingsUsername->setValue( QgsOwsConnection::settingsUsername->value( detailsParameters ), newDetailsParameters );
|
||||
QgsOwsConnection::settingsPassword->setValue( QgsOwsConnection::settingsPassword->value( detailsParameters ), newDetailsParameters );
|
||||
QgsOwsConnection::settingsAuthCfg->setValue( QgsOwsConnection::settingsAuthCfg->value( detailsParameters ), newDetailsParameters );
|
||||
|
@ -192,6 +192,7 @@ QSet<QString> QgsWFSDataSourceURI::unknownParamKeys() const
|
||||
QgsWFSConstants::URI_PARAM_SKIP_INITIAL_GET_FEATURE,
|
||||
QgsWFSConstants::URI_PARAM_GEOMETRY_TYPE_FILTER,
|
||||
QgsWFSConstants::URI_PARAM_SQL,
|
||||
QgsWFSConstants::URI_PARAM_HTTPMETHOD
|
||||
};
|
||||
|
||||
QSet<QString> l_unknownParamKeys;
|
||||
@ -418,6 +419,19 @@ void QgsWFSDataSourceURI::setOutputFormat( const QString &outputFormat )
|
||||
mURI.setParam( QgsWFSConstants::URI_PARAM_OUTPUTFORMAT, outputFormat );
|
||||
}
|
||||
|
||||
Qgis::HttpMethod QgsWFSDataSourceURI::httpMethod() const
|
||||
{
|
||||
if ( !mURI.hasParam( QgsWFSConstants::URI_PARAM_HTTPMETHOD ) )
|
||||
return Qgis::HttpMethod::Get;
|
||||
|
||||
const QString method = mURI.param( QgsWFSConstants::URI_PARAM_HTTPMETHOD );
|
||||
if ( method.compare( QLatin1String( "post" ), Qt::CaseInsensitive ) == 0 )
|
||||
return Qgis::HttpMethod::Post;
|
||||
|
||||
// default
|
||||
return Qgis::HttpMethod::Get;
|
||||
}
|
||||
|
||||
bool QgsWFSDataSourceURI::isRestrictedToRequestBBOX() const
|
||||
{
|
||||
if ( mURI.hasParam( QgsWFSConstants::URI_PARAM_RESTRICT_TO_REQUEST_BBOX ) && mURI.param( QgsWFSConstants::URI_PARAM_RESTRICT_TO_REQUEST_BBOX ).toInt() == 1 )
|
||||
|
@ -111,6 +111,9 @@ class QgsWFSDataSourceURI
|
||||
//! Sets GetFeature output format
|
||||
void setOutputFormat( const QString &outputFormat );
|
||||
|
||||
//! Returns the preferred HTTP method for requests
|
||||
Qgis::HttpMethod httpMethod() const;
|
||||
|
||||
//! Returns whether GetFeature request should include the request bounding box. Defaults to false
|
||||
bool isRestrictedToRequestBBOX() const;
|
||||
|
||||
|
@ -111,6 +111,16 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="lblVersion_2">
|
||||
<property name="text">
|
||||
<string>Preferred HTTP method</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1" colspan="2">
|
||||
<widget class="QComboBox" name="mComboHttpMethod"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
@ -380,6 +390,7 @@
|
||||
<tabstop>txtUrl</tabstop>
|
||||
<tabstop>cmbVersion</tabstop>
|
||||
<tabstop>mWfsVersionDetectButton</tabstop>
|
||||
<tabstop>mComboHttpMethod</tabstop>
|
||||
<tabstop>txtMaxNumFeatures</tabstop>
|
||||
<tabstop>cmbFeaturePaging</tabstop>
|
||||
<tabstop>txtPageSize</tabstop>
|
||||
|
Loading…
x
Reference in New Issue
Block a user