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
Qgis.HttpMethod.Get.__doc__ = "GET 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
.. versionadded:: 3.22
* ``Get``: GET 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/
{
Get,
Post
Post,
Head,
Put,
Delete,
};
enum class VectorExportResult /BaseType=IntEnum/

View File

@ -1865,12 +1865,27 @@ Qgis.BrowserDirectoryMonitoring.baseClass = Qgis
# monkey patching scoped based enum
Qgis.HttpMethod.Get.__doc__ = "GET 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
.. versionadded:: 3.22
* ``Get``: GET 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
{
Get,
Post
Post,
Head,
Put,
Delete,
};
enum class VectorExportResult

View File

@ -148,6 +148,11 @@ QVariantMap QgsHttpRequestAlgorithm::processAlgorithm( const QVariantMap &parame
errorCode = blockingRequest.post( request, data.toUtf8() );
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

View File

@ -59,7 +59,7 @@ void QgsBlockingNetworkRequest::setAuthCfg( const QString &authCfg )
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 )
@ -73,12 +73,12 @@ QgsBlockingNetworkRequest::ErrorCode QgsBlockingNetworkRequest::post( QNetworkRe
QgsBlockingNetworkRequest::ErrorCode QgsBlockingNetworkRequest::post( QNetworkRequest &request, QIODevice *data, bool forceRefresh, QgsFeedback *feedback )
{
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 )
{
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 )
@ -92,41 +92,41 @@ QgsBlockingNetworkRequest::ErrorCode QgsBlockingNetworkRequest::put( QNetworkReq
QgsBlockingNetworkRequest::ErrorCode QgsBlockingNetworkRequest::put( QNetworkRequest &request, QIODevice *data, QgsFeedback *feedback )
{
mPayloadData = data;
return doRequest( Put, request, true, feedback );
return doRequest( Qgis::HttpMethod::Put, request, true, 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 )
{
switch ( mMethod )
{
case Get:
case Qgis::HttpMethod::Get:
mReply = QgsNetworkAccessManager::instance()->get( request );
break;
case Post:
case Qgis::HttpMethod::Post:
mReply = QgsNetworkAccessManager::instance()->post( request, mPayloadData );
break;
case Head:
case Qgis::HttpMethod::Head:
mReply = QgsNetworkAccessManager::instance()->head( request );
break;
case Put:
case Qgis::HttpMethod::Put:
mReply = QgsNetworkAccessManager::instance()->put( request, mPayloadData );
break;
case Delete:
case Qgis::HttpMethod::Delete:
mReply = QgsNetworkAccessManager::instance()->deleteResource( request );
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;
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 );
else
emit downloadProgress( bytesReceived, bytesTotal );
@ -451,7 +451,7 @@ void QgsBlockingNetworkRequest::replyFinished()
mReplyContent = QgsNetworkReplyContent( mReply );
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() );
mErrorCode = ServerExceptionError;

View File

@ -257,19 +257,10 @@ class CORE_EXPORT QgsBlockingNetworkRequest : public QObject
private :
enum Method
{
Get,
Post,
Head,
Put,
Delete
};
//! The reply to the request
QNetworkReply *mReply = nullptr;
Method mMethod = Get;
Qgis::HttpMethod mMethod = Qgis::HttpMethod::Get;
//! payload data used in PUT/POST request
QIODevice *mPayloadData;
@ -304,7 +295,7 @@ class CORE_EXPORT QgsBlockingNetworkRequest : public QObject
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();

View File

@ -20,6 +20,7 @@
#include "qgsapplication.h"
#include "qgsauthmanager.h"
#include "qgsvariantutils.h"
#include "qgslogger.h"
#include <QNetworkAccessManager>
#include <QNetworkRequest>
@ -84,6 +85,13 @@ void QgsFileDownloader::startDownload()
mReply = nam->post( request, mData );
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() )

View File

@ -1000,7 +1000,10 @@ class CORE_EXPORT Qgis
enum class HttpMethod : int
{
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 )

View File

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

View File

@ -32,13 +32,6 @@
class QgsWFSDataSourceURI
{
public:
//! Http method for DCP URIs
enum Method
{
Get,
Post
};
explicit QgsWFSDataSourceURI( const QString &uri );
//! Copy constructor
@ -54,7 +47,7 @@ class QgsWFSDataSourceURI
QUrl baseURL( bool bIncludeServiceWFS = true ) const;
//! 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.
QString version() const;

View File

@ -24,7 +24,7 @@ QgsWFSTransactionRequest::QgsWFSTransactionRequest( const QgsWFSDataSourceURI &u
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 );