Remove duplicate http method enums

This commit is contained in:
Nyall Dawson 2025-02-27 10:15:45 +10:00
parent 5ae0af9aaa
commit a2f9868f6f
No known key found for this signature in database
GPG Key ID: 4C61673F0BF197FC
12 changed files with 84 additions and 42 deletions

View File

@ -1889,12 +1889,27 @@ Qgis.BrowserDirectoryMonitoring.baseClass = Qgis
# monkey patching scoped based enum # monkey patching scoped based enum
Qgis.HttpMethod.Get.__doc__ = "GET method" Qgis.HttpMethod.Get.__doc__ = "GET method"
Qgis.HttpMethod.Post.__doc__ = "POST method" Qgis.HttpMethod.Post.__doc__ = "POST method"
Qgis.HttpMethod.Head.__doc__ = "HEAD method. \n.. versionadded:: 3.44"
Qgis.HttpMethod.Put.__doc__ = "PUT method. \n.. versionadded:: 3.44"
Qgis.HttpMethod.Delete.__doc__ = "DELETE method. \n.. versionadded:: 3.44"
Qgis.HttpMethod.__doc__ = """Different methods of HTTP requests Qgis.HttpMethod.__doc__ = """Different methods of HTTP requests
.. versionadded:: 3.22 .. versionadded:: 3.22
* ``Get``: GET method * ``Get``: GET method
* ``Post``: POST method * ``Post``: POST method
* ``Head``: HEAD method.
.. versionadded:: 3.44
* ``Put``: PUT method.
.. versionadded:: 3.44
* ``Delete``: DELETE method.
.. versionadded:: 3.44
""" """
# -- # --

View File

@ -615,7 +615,10 @@ The development version
enum class HttpMethod /BaseType=IntEnum/ enum class HttpMethod /BaseType=IntEnum/
{ {
Get, Get,
Post Post,
Head,
Put,
Delete,
}; };
enum class VectorExportResult /BaseType=IntEnum/ enum class VectorExportResult /BaseType=IntEnum/

View File

@ -1865,12 +1865,27 @@ Qgis.BrowserDirectoryMonitoring.baseClass = Qgis
# monkey patching scoped based enum # monkey patching scoped based enum
Qgis.HttpMethod.Get.__doc__ = "GET method" Qgis.HttpMethod.Get.__doc__ = "GET method"
Qgis.HttpMethod.Post.__doc__ = "POST method" Qgis.HttpMethod.Post.__doc__ = "POST method"
Qgis.HttpMethod.Head.__doc__ = "HEAD method. \n.. versionadded:: 3.44"
Qgis.HttpMethod.Put.__doc__ = "PUT method. \n.. versionadded:: 3.44"
Qgis.HttpMethod.Delete.__doc__ = "DELETE method. \n.. versionadded:: 3.44"
Qgis.HttpMethod.__doc__ = """Different methods of HTTP requests Qgis.HttpMethod.__doc__ = """Different methods of HTTP requests
.. versionadded:: 3.22 .. versionadded:: 3.22
* ``Get``: GET method * ``Get``: GET method
* ``Post``: POST method * ``Post``: POST method
* ``Head``: HEAD method.
.. versionadded:: 3.44
* ``Put``: PUT method.
.. versionadded:: 3.44
* ``Delete``: DELETE method.
.. versionadded:: 3.44
""" """
# -- # --

View File

@ -615,7 +615,10 @@ The development version
enum class HttpMethod enum class HttpMethod
{ {
Get, Get,
Post Post,
Head,
Put,
Delete,
}; };
enum class VectorExportResult enum class VectorExportResult

View File

@ -148,6 +148,11 @@ QVariantMap QgsHttpRequestAlgorithm::processAlgorithm( const QVariantMap &parame
errorCode = blockingRequest.post( request, data.toUtf8() ); errorCode = blockingRequest.post( request, data.toUtf8() );
break; break;
} }
case Qgis::HttpMethod::Head:
case Qgis::HttpMethod::Put:
case Qgis::HttpMethod::Delete:
throw QgsProcessingException( QObject::tr( "Unsupported HTTP method: %1" ).arg( qgsEnumValueToKey( httpMethod ) ) );
} }
// Handle reply // Handle reply

View File

@ -59,7 +59,7 @@ void QgsBlockingNetworkRequest::setAuthCfg( const QString &authCfg )
QgsBlockingNetworkRequest::ErrorCode QgsBlockingNetworkRequest::get( QNetworkRequest &request, bool forceRefresh, QgsFeedback *feedback, RequestFlags requestFlags ) QgsBlockingNetworkRequest::ErrorCode QgsBlockingNetworkRequest::get( QNetworkRequest &request, bool forceRefresh, QgsFeedback *feedback, RequestFlags requestFlags )
{ {
return doRequest( Get, request, forceRefresh, feedback, requestFlags ); return doRequest( Qgis::HttpMethod::Get, request, forceRefresh, feedback, requestFlags );
} }
QgsBlockingNetworkRequest::ErrorCode QgsBlockingNetworkRequest::post( QNetworkRequest &request, const QByteArray &data, bool forceRefresh, QgsFeedback *feedback ) QgsBlockingNetworkRequest::ErrorCode QgsBlockingNetworkRequest::post( QNetworkRequest &request, const QByteArray &data, bool forceRefresh, QgsFeedback *feedback )
@ -73,12 +73,12 @@ QgsBlockingNetworkRequest::ErrorCode QgsBlockingNetworkRequest::post( QNetworkRe
QgsBlockingNetworkRequest::ErrorCode QgsBlockingNetworkRequest::post( QNetworkRequest &request, QIODevice *data, bool forceRefresh, QgsFeedback *feedback ) QgsBlockingNetworkRequest::ErrorCode QgsBlockingNetworkRequest::post( QNetworkRequest &request, QIODevice *data, bool forceRefresh, QgsFeedback *feedback )
{ {
mPayloadData = data; mPayloadData = data;
return doRequest( Post, request, forceRefresh, feedback ); return doRequest( Qgis::HttpMethod::Post, request, forceRefresh, feedback );
} }
QgsBlockingNetworkRequest::ErrorCode QgsBlockingNetworkRequest::head( QNetworkRequest &request, bool forceRefresh, QgsFeedback *feedback ) QgsBlockingNetworkRequest::ErrorCode QgsBlockingNetworkRequest::head( QNetworkRequest &request, bool forceRefresh, QgsFeedback *feedback )
{ {
return doRequest( Head, request, forceRefresh, feedback ); return doRequest( Qgis::HttpMethod::Head, request, forceRefresh, feedback );
} }
QgsBlockingNetworkRequest::ErrorCode QgsBlockingNetworkRequest::put( QNetworkRequest &request, const QByteArray &data, QgsFeedback *feedback ) QgsBlockingNetworkRequest::ErrorCode QgsBlockingNetworkRequest::put( QNetworkRequest &request, const QByteArray &data, QgsFeedback *feedback )
@ -92,41 +92,41 @@ QgsBlockingNetworkRequest::ErrorCode QgsBlockingNetworkRequest::put( QNetworkReq
QgsBlockingNetworkRequest::ErrorCode QgsBlockingNetworkRequest::put( QNetworkRequest &request, QIODevice *data, QgsFeedback *feedback ) QgsBlockingNetworkRequest::ErrorCode QgsBlockingNetworkRequest::put( QNetworkRequest &request, QIODevice *data, QgsFeedback *feedback )
{ {
mPayloadData = data; mPayloadData = data;
return doRequest( Put, request, true, feedback ); return doRequest( Qgis::HttpMethod::Put, request, true, feedback );
} }
QgsBlockingNetworkRequest::ErrorCode QgsBlockingNetworkRequest::deleteResource( QNetworkRequest &request, QgsFeedback *feedback ) QgsBlockingNetworkRequest::ErrorCode QgsBlockingNetworkRequest::deleteResource( QNetworkRequest &request, QgsFeedback *feedback )
{ {
return doRequest( Delete, request, true, feedback ); return doRequest( Qgis::HttpMethod::Delete, request, true, feedback );
} }
void QgsBlockingNetworkRequest::sendRequestToNetworkAccessManager( const QNetworkRequest &request ) void QgsBlockingNetworkRequest::sendRequestToNetworkAccessManager( const QNetworkRequest &request )
{ {
switch ( mMethod ) switch ( mMethod )
{ {
case Get: case Qgis::HttpMethod::Get:
mReply = QgsNetworkAccessManager::instance()->get( request ); mReply = QgsNetworkAccessManager::instance()->get( request );
break; break;
case Post: case Qgis::HttpMethod::Post:
mReply = QgsNetworkAccessManager::instance()->post( request, mPayloadData ); mReply = QgsNetworkAccessManager::instance()->post( request, mPayloadData );
break; break;
case Head: case Qgis::HttpMethod::Head:
mReply = QgsNetworkAccessManager::instance()->head( request ); mReply = QgsNetworkAccessManager::instance()->head( request );
break; break;
case Put: case Qgis::HttpMethod::Put:
mReply = QgsNetworkAccessManager::instance()->put( request, mPayloadData ); mReply = QgsNetworkAccessManager::instance()->put( request, mPayloadData );
break; break;
case Delete: case Qgis::HttpMethod::Delete:
mReply = QgsNetworkAccessManager::instance()->deleteResource( request ); mReply = QgsNetworkAccessManager::instance()->deleteResource( request );
break; break;
}; };
} }
QgsBlockingNetworkRequest::ErrorCode QgsBlockingNetworkRequest::doRequest( QgsBlockingNetworkRequest::Method method, QNetworkRequest &request, bool forceRefresh, QgsFeedback *feedback, RequestFlags requestFlags ) QgsBlockingNetworkRequest::ErrorCode QgsBlockingNetworkRequest::doRequest( Qgis::HttpMethod method, QNetworkRequest &request, bool forceRefresh, QgsFeedback *feedback, RequestFlags requestFlags )
{ {
mMethod = method; mMethod = method;
mFeedback = feedback; mFeedback = feedback;
@ -329,7 +329,7 @@ void QgsBlockingNetworkRequest::replyProgress( qint64 bytesReceived, qint64 byte
} }
} }
if ( mMethod == Put || mMethod == Post ) if ( mMethod == Qgis::HttpMethod::Put || mMethod == Qgis::HttpMethod::Post )
emit uploadProgress( bytesReceived, bytesTotal ); emit uploadProgress( bytesReceived, bytesTotal );
else else
emit downloadProgress( bytesReceived, bytesTotal ); emit downloadProgress( bytesReceived, bytesTotal );
@ -451,7 +451,7 @@ void QgsBlockingNetworkRequest::replyFinished()
mReplyContent = QgsNetworkReplyContent( mReply ); mReplyContent = QgsNetworkReplyContent( mReply );
const QByteArray content = mReply->readAll(); const QByteArray content = mReply->readAll();
if ( !( mRequestFlags & RequestFlag::EmptyResponseIsValid ) && content.isEmpty() && !mGotNonEmptyResponse && mMethod == Get ) if ( !( mRequestFlags & RequestFlag::EmptyResponseIsValid ) && content.isEmpty() && !mGotNonEmptyResponse && mMethod == Qgis::HttpMethod::Get )
{ {
mErrorMessage = tr( "empty response: %1" ).arg( mReply->errorString() ); mErrorMessage = tr( "empty response: %1" ).arg( mReply->errorString() );
mErrorCode = ServerExceptionError; mErrorCode = ServerExceptionError;

View File

@ -257,19 +257,10 @@ class CORE_EXPORT QgsBlockingNetworkRequest : public QObject
private : private :
enum Method
{
Get,
Post,
Head,
Put,
Delete
};
//! The reply to the request //! The reply to the request
QNetworkReply *mReply = nullptr; QNetworkReply *mReply = nullptr;
Method mMethod = Get; Qgis::HttpMethod mMethod = Qgis::HttpMethod::Get;
//! payload data used in PUT/POST request //! payload data used in PUT/POST request
QIODevice *mPayloadData; QIODevice *mPayloadData;
@ -304,7 +295,7 @@ class CORE_EXPORT QgsBlockingNetworkRequest : public QObject
QPointer< QgsFeedback > mFeedback; QPointer< QgsFeedback > mFeedback;
ErrorCode doRequest( Method method, QNetworkRequest &request, bool forceRefresh, QgsFeedback *feedback = nullptr, RequestFlags requestFlags = RequestFlags() ); ErrorCode doRequest( Qgis::HttpMethod method, QNetworkRequest &request, bool forceRefresh, QgsFeedback *feedback = nullptr, RequestFlags requestFlags = RequestFlags() );
QString errorMessageFailedAuth(); QString errorMessageFailedAuth();

View File

@ -20,6 +20,7 @@
#include "qgsapplication.h" #include "qgsapplication.h"
#include "qgsauthmanager.h" #include "qgsauthmanager.h"
#include "qgsvariantutils.h" #include "qgsvariantutils.h"
#include "qgslogger.h"
#include <QNetworkAccessManager> #include <QNetworkAccessManager>
#include <QNetworkRequest> #include <QNetworkRequest>
@ -84,6 +85,13 @@ void QgsFileDownloader::startDownload()
mReply = nam->post( request, mData ); mReply = nam->post( request, mData );
break; break;
} }
case Qgis::HttpMethod::Head:
case Qgis::HttpMethod::Put:
case Qgis::HttpMethod::Delete:
QgsDebugError( QStringLiteral( "Unsupported HTTP method: %1" ).arg( qgsEnumValueToKey( mHttpMethod ) ) );
// not supported
break;
} }
if ( !mAuthCfg.isEmpty() ) if ( !mAuthCfg.isEmpty() )

View File

@ -1000,7 +1000,10 @@ class CORE_EXPORT Qgis
enum class HttpMethod : int enum class HttpMethod : int
{ {
Get = 0, //!< GET method Get = 0, //!< GET method
Post = 1 //!< POST method Post = 1, //!< POST method
Head, //!< HEAD method. \since QGIS 3.44
Put, //!< PUT method. \since QGIS 3.44
Delete, //!< DELETE method. \since QGIS 3.44
}; };
Q_ENUM( HttpMethod ) Q_ENUM( HttpMethod )

View File

@ -17,7 +17,6 @@
#include "qgswfsconstants.h" #include "qgswfsconstants.h"
#include "qgswfsdatasourceuri.h" #include "qgswfsdatasourceuri.h"
#include "qgsmessagelog.h"
#include <QUrlQuery> #include <QUrlQuery>
@ -242,18 +241,18 @@ QUrl QgsWFSDataSourceURI::baseURL( bool bIncludeServiceWFS ) const
return url; return url;
} }
QUrl QgsWFSDataSourceURI::requestUrl( const QString &request, const Method &method ) const QUrl QgsWFSDataSourceURI::requestUrl( const QString &request, Qgis::HttpMethod method ) const
{ {
QUrl url; QUrl url;
QUrlQuery urlQuery; QUrlQuery urlQuery;
switch ( method ) switch ( method )
{ {
case Post: case Qgis::HttpMethod::Post:
url = QUrl( mPostEndpoints.contains( request ) ? mPostEndpoints[request] : mURI.param( QgsWFSConstants::URI_PARAM_URL ) ); url = QUrl( mPostEndpoints.contains( request ) ? mPostEndpoints[request] : mURI.param( QgsWFSConstants::URI_PARAM_URL ) );
urlQuery = QUrlQuery( url ); urlQuery = QUrlQuery( url );
break; break;
default:
case Get: case Qgis::HttpMethod::Get:
{ {
const auto defaultUrl( QUrl( mURI.param( QgsWFSConstants::URI_PARAM_URL ) ) ); const auto defaultUrl( QUrl( mURI.param( QgsWFSConstants::URI_PARAM_URL ) ) );
if ( mGetEndpoints.contains( request ) ) if ( mGetEndpoints.contains( request ) )
@ -288,9 +287,16 @@ QUrl QgsWFSDataSourceURI::requestUrl( const QString &request, const Method &meth
} }
break; break;
} }
case Qgis::HttpMethod::Head:
case Qgis::HttpMethod::Put:
case Qgis::HttpMethod::Delete:
// not supported, impossible to reach
break;
} }
urlQuery.addQueryItem( QStringLiteral( "SERVICE" ), QStringLiteral( "WFS" ) ); urlQuery.addQueryItem( QStringLiteral( "SERVICE" ), QStringLiteral( "WFS" ) );
if ( method == Method::Get && !request.isEmpty() ) if ( method == Qgis::HttpMethod::Get && !request.isEmpty() )
urlQuery.addQueryItem( QStringLiteral( "REQUEST" ), request ); urlQuery.addQueryItem( QStringLiteral( "REQUEST" ), request );
url.setQuery( urlQuery ); url.setQuery( urlQuery );
return url; return url;

View File

@ -32,13 +32,6 @@
class QgsWFSDataSourceURI class QgsWFSDataSourceURI
{ {
public: public:
//! Http method for DCP URIs
enum Method
{
Get,
Post
};
explicit QgsWFSDataSourceURI( const QString &uri ); explicit QgsWFSDataSourceURI( const QString &uri );
//! Copy constructor //! Copy constructor
@ -54,7 +47,7 @@ class QgsWFSDataSourceURI
QUrl baseURL( bool bIncludeServiceWFS = true ) const; QUrl baseURL( bool bIncludeServiceWFS = true ) const;
//! Returns request URL (with SERVICE=WFS parameter) //! Returns request URL (with SERVICE=WFS parameter)
QUrl requestUrl( const QString &request, const Method &method = Method::Get ) const; QUrl requestUrl( const QString &request, Qgis::HttpMethod method = Qgis::HttpMethod::Get ) const;
//! Gets WFS version. Can be auto, 1.0.0, 1.1.0 or 2.0.0. //! Gets WFS version. Can be auto, 1.0.0, 1.1.0 or 2.0.0.
QString version() const; QString version() const;

View File

@ -24,7 +24,7 @@ QgsWFSTransactionRequest::QgsWFSTransactionRequest( const QgsWFSDataSourceURI &u
bool QgsWFSTransactionRequest::send( const QDomDocument &doc, QDomDocument &serverResponse ) bool QgsWFSTransactionRequest::send( const QDomDocument &doc, QDomDocument &serverResponse )
{ {
const QUrl url( mUri.requestUrl( QStringLiteral( "Transaction" ), QgsWFSDataSourceURI::Method::Post ) ); const QUrl url( mUri.requestUrl( QStringLiteral( "Transaction" ), Qgis::HttpMethod::Post ) );
QgsDebugMsgLevel( doc.toString(), 4 ); QgsDebugMsgLevel( doc.toString(), 4 );