313 void setAuthHandler( std::unique_ptr< QgsNetworkAuthenticationHandler > handler );
445 static int timeout();
454 static void setTimeout(
int time );
505 QNetworkRequest &request,
506 const QByteArray &data,
507 const QString &authCfg = QString(),
508 bool forceRefresh =
false,
525 static QString setRequestPreprocessor(
const std::function<
void( QNetworkRequest *request )> &processor );
528 static QString setRequestPreprocessor( SIP_PYCALLABLE / AllowNone / );
533 Py_BEGIN_ALLOW_THREADS
538 PyObject *s = sipCallMethod( NULL, a0,
"D", arg, sipType_QNetworkRequest, NULL );
541 QString *t1 =
reinterpret_cast<QString *
>( sipConvertToType( s, sipType_QString, 0, SIP_NOT_NONE, &state, &sipIsError ) );
542 if ( sipIsError == 0 )
544 res = QString( *t1 );
546 sipReleaseType( t1, sipType_QString, state );
552 s = sipConvertFromNewType(
new QString(
id ), sipType_QString, 0 );
569 static bool removeRequestPreprocessor(
const QString &
id );
572 static void removeRequestPreprocessor(
const QString &
id );
576 PyErr_SetString( PyExc_KeyError, u
"No processor with id %1 exists."_s.arg( *a0 ).toUtf8().constData() );
599 static QString setAdvancedRequestPreprocessor(
const std::function<
void( QNetworkRequest *,
int &op, QByteArray *data )> &processor );
602 static QString setAdvancedRequestPreprocessor( SIP_PYCALLABLE / AllowNone / );
607 Py_BEGIN_ALLOW_THREADS
612 PyObject *requestObj = sipConvertFromType( reqArg, sipType_QNetworkRequest, NULL );
613 PyObject *postDataObj = sipConvertFromType(
new QByteArray( *data ), sipType_QByteArray, Py_None );
615 PyObject *result = sipCallMethod( NULL, a0,
"RiR", requestObj, op, postDataObj );
617 Py_XDECREF( requestObj );
618 Py_XDECREF( postDataObj );
620 if ( result && PyTuple_Check( result ) && PyTuple_Size( result ) == 2 )
623 PyObject *opObj = PyTuple_GetItem( result, 0 );
624 if ( opObj && PyLong_Check( opObj ) )
626 op =
static_cast<int>( PyLong_AsLong( opObj ) );
628 PyObject *dataObj = PyTuple_GetItem( result, 1 );
629 if ( dataObj && dataObj != Py_None )
633 QByteArray *modifiedData =
reinterpret_cast<QByteArray *
>( sipConvertToType( dataObj, sipType_QByteArray, 0, SIP_NOT_NONE, &dataState, &sipIsErr ) );
637 data->append( *modifiedData );
638 sipReleaseType( modifiedData, sipType_QByteArray, dataState );
643 Py_XDECREF( result );
648 s = sipConvertFromNewType(
new QString(
id ), sipType_QString, 0 );
665 static bool removeAdvancedRequestPreprocessor(
const QString &
id );
668 static void removeAdvancedRequestPreprocessor(
const QString &
id );
672 PyErr_SetString( PyExc_KeyError, u
"No processor with id %1 exists."_s.arg( *a0 ).toUtf8().constData() );
692 static QString setReplyPreprocessor(
const std::function<
void(
const QNetworkRequest &, QNetworkReply * )> &processor );
695 static QString setReplyPreprocessor( SIP_PYCALLABLE / AllowNone / );
700 Py_BEGIN_ALLOW_THREADS
704 Py_XDECREF( sipCallMethod( NULL, a0,
"ND",
new QNetworkRequest( request ), sipType_QNetworkRequest, NULL, reply, sipType_QNetworkReply, NULL ) );
709 s = sipConvertFromNewType(
new QString(
id ), sipType_QString, 0 );
726 static bool removeReplyPreprocessor(
const QString &
id );
729 static void removeReplyPreprocessor(
const QString &
id );
733 PyErr_SetString( PyExc_KeyError, u
"No processor with id %1 exists."_s.arg( *a0 ).toUtf8().constData() );
746 void requestAuthOpenBrowser(
const QUrl &url )
const;
754 void requestAuthCloseBrowser()
const;
762 void abortAuthBrowser();
912 void sslErrorsOccurred( QNetworkReply *,
const QList<QSslError> &errors );
913 void sslErrorsHandled( QNetworkReply *reply );
932 void authRequestOccurred( QNetworkReply *, QAuthenticator *auth );
933 void authRequestHandled( QNetworkReply *reply );
954 void onReplyFinished( QNetworkReply *reply );
956 void onReplyDownloadProgress( qint64 bytesReceived, qint64 bytesTotal );
958 void onReplySslErrors(
const QList<QSslError> &errors );
960 void handleSslErrors( QNetworkReply *reply,
const QList<QSslError> &errors );
963 void onAuthRequired( QNetworkReply *reply, QAuthenticator *auth );
964 void handleAuthRequest( QNetworkReply *reply, QAuthenticator *auth );
966 void syncCookies(
const QList<QNetworkCookie> &cookies );
969 QNetworkReply *
createRequest( QNetworkAccessManager::Operation op,
const QNetworkRequest &req, QIODevice *outgoingData =
nullptr )
override;
973 void afterSslErrorHandled( QNetworkReply *reply );
976 void afterAuthRequestHandled( QNetworkReply *reply );
978 void pauseTimeout( QNetworkReply *reply );
979 void restartTimeout( QNetworkReply *reply );
980 static int getRequestId( QNetworkReply *reply );
982 QList<QNetworkProxyFactory *> mProxyFactories;
983 QNetworkProxy mFallbackProxy;
984 QStringList mExcludedURLs;
985 QStringList mNoProxyURLs;
986 bool mUseSystemProxy =
false;
987 bool mInitialized =
false;
988 bool mCacheDisabled =
false;
991 std::unique_ptr< QgsSslErrorHandler > mSslErrorHandler;
993 QSemaphore mSslErrorHandlerSemaphore;
996 std::unique_ptr< QgsNetworkAuthenticationHandler > mAuthHandler;
998 QSemaphore mAuthRequestHandlerSemaphore;