312 void setAuthHandler( std::unique_ptr< QgsNetworkAuthenticationHandler > handler );
444 static int timeout();
453 static void setTimeout(
int time );
504 QNetworkRequest &request,
505 const QByteArray &data,
506 const QString &authCfg = QString(),
507 bool forceRefresh =
false,
524 static QString setRequestPreprocessor(
const std::function<
void( QNetworkRequest *request )> &processor );
527 static QString setRequestPreprocessor( SIP_PYCALLABLE / AllowNone / );
532 Py_BEGIN_ALLOW_THREADS
537 PyObject *s = sipCallMethod( NULL, a0,
"D", arg, sipType_QNetworkRequest, NULL );
540 QString *t1 =
reinterpret_cast<QString *
>( sipConvertToType( s, sipType_QString, 0, SIP_NOT_NONE, &state, &sipIsError ) );
541 if ( sipIsError == 0 )
543 res = QString( *t1 );
545 sipReleaseType( t1, sipType_QString, state );
551 s = sipConvertFromNewType(
new QString(
id ), sipType_QString, 0 );
568 static bool removeRequestPreprocessor(
const QString &
id );
571 static void removeRequestPreprocessor(
const QString &
id );
575 PyErr_SetString( PyExc_KeyError, u
"No processor with id %1 exists."_s.arg( *a0 ).toUtf8().constData() );
598 static QString setAdvancedRequestPreprocessor(
const std::function<
void( QNetworkRequest *,
int &op, QByteArray *data )> &processor );
601 static QString setAdvancedRequestPreprocessor( SIP_PYCALLABLE / AllowNone / );
606 Py_BEGIN_ALLOW_THREADS
611 PyObject *requestObj = sipConvertFromType( reqArg, sipType_QNetworkRequest, NULL );
612 PyObject *postDataObj = sipConvertFromType(
new QByteArray( *data ), sipType_QByteArray, Py_None );
614 PyObject *result = sipCallMethod( NULL, a0,
"RiR", requestObj, op, postDataObj );
616 Py_XDECREF( requestObj );
617 Py_XDECREF( postDataObj );
619 if ( result && PyTuple_Check( result ) && PyTuple_Size( result ) == 2 )
622 PyObject *opObj = PyTuple_GetItem( result, 0 );
623 if ( opObj && PyLong_Check( opObj ) )
625 op =
static_cast<int>( PyLong_AsLong( opObj ) );
627 PyObject *dataObj = PyTuple_GetItem( result, 1 );
628 if ( dataObj && dataObj != Py_None )
632 QByteArray *modifiedData =
reinterpret_cast<QByteArray *
>( sipConvertToType( dataObj, sipType_QByteArray, 0, SIP_NOT_NONE, &dataState, &sipIsErr ) );
636 data->append( *modifiedData );
637 sipReleaseType( modifiedData, sipType_QByteArray, dataState );
642 Py_XDECREF( result );
647 s = sipConvertFromNewType(
new QString(
id ), sipType_QString, 0 );
664 static bool removeAdvancedRequestPreprocessor(
const QString &
id );
667 static void removeAdvancedRequestPreprocessor(
const QString &
id );
671 PyErr_SetString( PyExc_KeyError, u
"No processor with id %1 exists."_s.arg( *a0 ).toUtf8().constData() );
691 static QString setReplyPreprocessor(
const std::function<
void(
const QNetworkRequest &, QNetworkReply * )> &processor );
694 static QString setReplyPreprocessor( SIP_PYCALLABLE / AllowNone / );
699 Py_BEGIN_ALLOW_THREADS
703 Py_XDECREF( sipCallMethod( NULL, a0,
"ND",
new QNetworkRequest( request ), sipType_QNetworkRequest, NULL, reply, sipType_QNetworkReply, NULL ) );
708 s = sipConvertFromNewType(
new QString(
id ), sipType_QString, 0 );
725 static bool removeReplyPreprocessor(
const QString &
id );
728 static void removeReplyPreprocessor(
const QString &
id );
732 PyErr_SetString( PyExc_KeyError, u
"No processor with id %1 exists."_s.arg( *a0 ).toUtf8().constData() );
745 void requestAuthOpenBrowser(
const QUrl &url )
const;
753 void requestAuthCloseBrowser()
const;
761 void abortAuthBrowser();
911 void sslErrorsOccurred( QNetworkReply *,
const QList<QSslError> &errors );
912 void sslErrorsHandled( QNetworkReply *reply );
931 void authRequestOccurred( QNetworkReply *, QAuthenticator *auth );
932 void authRequestHandled( QNetworkReply *reply );
953 void onReplyFinished( QNetworkReply *reply );
955 void onReplyDownloadProgress( qint64 bytesReceived, qint64 bytesTotal );
957 void onReplySslErrors(
const QList<QSslError> &errors );
959 void handleSslErrors( QNetworkReply *reply,
const QList<QSslError> &errors );
962 void onAuthRequired( QNetworkReply *reply, QAuthenticator *auth );
963 void handleAuthRequest( QNetworkReply *reply, QAuthenticator *auth );
965 void syncCookies(
const QList<QNetworkCookie> &cookies );
968 QNetworkReply *
createRequest( QNetworkAccessManager::Operation op,
const QNetworkRequest &req, QIODevice *outgoingData =
nullptr )
override;
972 void afterSslErrorHandled( QNetworkReply *reply );
975 void afterAuthRequestHandled( QNetworkReply *reply );
977 void pauseTimeout( QNetworkReply *reply );
978 void restartTimeout( QNetworkReply *reply );
979 static int getRequestId( QNetworkReply *reply );
981 QList<QNetworkProxyFactory *> mProxyFactories;
982 QNetworkProxy mFallbackProxy;
983 QStringList mExcludedURLs;
984 QStringList mNoProxyURLs;
985 bool mUseSystemProxy =
false;
986 bool mInitialized =
false;
987 bool mCacheDisabled =
false;
990 std::unique_ptr< QgsSslErrorHandler > mSslErrorHandler;
992 QSemaphore mSslErrorHandlerSemaphore;
995 std::unique_ptr< QgsNetworkAuthenticationHandler > mAuthHandler;
997 QSemaphore mAuthRequestHandlerSemaphore;