324 void setAuthHandler( std::unique_ptr< QgsNetworkAuthenticationHandler > handler );
456 static int timeout();
465 static void setTimeout(
int time );
527 static QString setRequestPreprocessor(
const std::function<
void( QNetworkRequest *request )> &processor );
529 static QString setRequestPreprocessor( SIP_PYCALLABLE / AllowNone / );
534 Py_BEGIN_ALLOW_THREADS
539 PyObject *s = sipCallMethod( NULL, a0,
"D", arg, sipType_QNetworkRequest, NULL );
542 QString *t1 =
reinterpret_cast<QString *
>( sipConvertToType( s, sipType_QString, 0, SIP_NOT_NONE, &state, &sipIsError ) );
543 if ( sipIsError == 0 )
545 res = QString( *t1 );
547 sipReleaseType( t1, sipType_QString, state );
553 s = sipConvertFromNewType(
new QString(
id ), sipType_QString, 0 );
569 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() );
597 static QString setAdvancedRequestPreprocessor(
const std::function<
void( QNetworkRequest *,
int &op, QByteArray *data )> &processor );
599 static QString setAdvancedRequestPreprocessor( SIP_PYCALLABLE / AllowNone / );
604 Py_BEGIN_ALLOW_THREADS
609 PyObject *requestObj = sipConvertFromType( reqArg, sipType_QNetworkRequest, NULL );
610 PyObject *postDataObj = sipConvertFromType(
new QByteArray( *data ), sipType_QByteArray, Py_None );
612 PyObject *result = sipCallMethod( NULL, a0,
"RiR", requestObj, op, postDataObj );
614 Py_XDECREF( requestObj );
615 Py_XDECREF( postDataObj );
617 if ( result && PyTuple_Check( result ) && PyTuple_Size( result ) == 2 )
620 PyObject *opObj = PyTuple_GetItem( result, 0 );
621 if ( opObj && PyLong_Check( opObj ) )
623 op =
static_cast<int>( PyLong_AsLong( opObj ) );
625 PyObject *dataObj = PyTuple_GetItem( result, 1 );
626 if ( dataObj && dataObj != Py_None )
630 QByteArray *modifiedData =
reinterpret_cast<QByteArray *
>( sipConvertToType( dataObj, sipType_QByteArray, 0, SIP_NOT_NONE, &dataState, &sipIsErr ) );
634 data->append( *modifiedData );
635 sipReleaseType( modifiedData, sipType_QByteArray, dataState );
640 Py_XDECREF( result );
645 s = sipConvertFromNewType(
new QString(
id ), sipType_QString, 0 );
661 static bool removeAdvancedRequestPreprocessor(
const QString &
id );
663 static void removeAdvancedRequestPreprocessor(
const QString &
id );
667 PyErr_SetString( PyExc_KeyError, u
"No processor with id %1 exists."_s.arg( *a0 ).toUtf8().constData() );
686 static QString setReplyPreprocessor(
const std::function<
void (
const QNetworkRequest &, QNetworkReply * )> &processor );
688 static QString setReplyPreprocessor( SIP_PYCALLABLE / AllowNone / );
693 Py_BEGIN_ALLOW_THREADS
697 Py_XDECREF( sipCallMethod( NULL, a0,
"ND",
new QNetworkRequest( request ), sipType_QNetworkRequest, NULL, reply, sipType_QNetworkReply, NULL ) );
702 s = sipConvertFromNewType(
new QString(
id ), sipType_QString, 0 );
718 static bool removeReplyPreprocessor(
const QString &
id );
720 static void removeReplyPreprocessor(
const QString &
id );
724 PyErr_SetString( PyExc_KeyError, u
"No processor with id %1 exists."_s.arg( *a0 ).toUtf8().constData() );
736 void requestAuthOpenBrowser(
const QUrl &url )
const;
744 void requestAuthCloseBrowser()
const;
752 void abortAuthBrowser();
902 void sslErrorsOccurred( QNetworkReply *,
const QList<QSslError> &errors );
903 void sslErrorsHandled( QNetworkReply *reply );
922 void authRequestOccurred( QNetworkReply *, QAuthenticator *auth );
923 void authRequestHandled( QNetworkReply *reply );
944 void onReplyFinished( QNetworkReply *reply );
946 void onReplyDownloadProgress( qint64 bytesReceived, qint64 bytesTotal );
948 void onReplySslErrors(
const QList<QSslError> &errors );
950 void handleSslErrors( QNetworkReply *reply,
const QList<QSslError> &errors );
953 void onAuthRequired( QNetworkReply *reply, QAuthenticator *auth );
954 void handleAuthRequest( QNetworkReply *reply, QAuthenticator *auth );
956 void syncCookies(
const QList<QNetworkCookie> &cookies );
959 QNetworkReply *
createRequest( QNetworkAccessManager::Operation op,
const QNetworkRequest &req, QIODevice *outgoingData =
nullptr )
override;
963 void afterSslErrorHandled( QNetworkReply *reply );
966 void afterAuthRequestHandled( QNetworkReply *reply );
968 void pauseTimeout( QNetworkReply *reply );
969 void restartTimeout( QNetworkReply *reply );
970 static int getRequestId( QNetworkReply *reply );
972 QList<QNetworkProxyFactory *> mProxyFactories;
973 QNetworkProxy mFallbackProxy;
974 QStringList mExcludedURLs;
975 QStringList mNoProxyURLs;
976 bool mUseSystemProxy =
false;
977 bool mInitialized =
false;
978 bool mCacheDisabled =
false;
981 std::unique_ptr< QgsSslErrorHandler > mSslErrorHandler;
983 QSemaphore mSslErrorHandlerSemaphore;
986 std::unique_ptr< QgsNetworkAuthenticationHandler > mAuthHandler;
988 QSemaphore mAuthRequestHandlerSemaphore;