32 #include <QNetworkReply>
33 #include <QNetworkDiskCache>
49 if ( systemproxies.
size() > 0 )
53 if ( proxies.
size() > 0 )
58 if ( query.queryType() != QNetworkProxyQuery::UrlRequest )
61 QString url = query.url().toString();
67 QgsDebugMsg(
QString(
"using default proxy for %1 [exclude %2]" ).arg( url ).arg( exclude ) );
79 .arg( proxies.
first().hostName() ).arg( proxies.
first().port() ) );
100 , mUseSystemProxy( false )
111 mProxyFactories.
insert( 0, factory );
121 return mProxyFactories;
126 return mExcludedURLs;
131 return mFallbackProxy;
137 .arg( proxy.
type() == QNetworkProxy::DefaultProxy ?
"DefaultProxy" :
138 proxy.
type() == QNetworkProxy::Socks5Proxy ?
"Socks5Proxy" :
139 proxy.
type() == QNetworkProxy::NoProxy ?
"NoProxy" :
140 proxy.
type() == QNetworkProxy::HttpProxy ?
"HttpProxy" :
141 proxy.
type() == QNetworkProxy::HttpCachingProxy ?
"HttpCachingProxy" :
142 proxy.
type() == QNetworkProxy::FtpCachingProxy ?
"FtpCachingProxy" :
149 mFallbackProxy =
proxy;
150 mExcludedURLs = excludes;
172 connect( timer, SIGNAL( timeout() ),
this, SLOT( abortRequest() ) );
174 timer->
start( s.
value(
"/qgis/networkAndProxy/networkTimeout",
"20000" ).
toInt() );
176 connect( reply, SIGNAL( downloadProgress( qint64, qint64 ) ), timer, SLOT( start() ) );
177 connect( reply, SIGNAL( uploadProgress( qint64, qint64 ) ), timer, SLOT( start() ) );
182 void QgsNetworkAccessManager::abortRequest()
200 switch ( theControl )
202 case QNetworkRequest::AlwaysNetwork:
203 return "AlwaysNetwork";
205 case QNetworkRequest::PreferNetwork:
206 return "PreferNetwork";
208 case QNetworkRequest::PreferCache:
209 return "PreferCache";
211 case QNetworkRequest::AlwaysCache:
212 return "AlwaysCache";
217 return "PreferNetwork";
222 if ( theName ==
"AlwaysNetwork" )
224 return QNetworkRequest::AlwaysNetwork;
226 else if ( theName ==
"PreferNetwork" )
228 return QNetworkRequest::PreferNetwork;
230 else if ( theName ==
"PreferCache" )
232 return QNetworkRequest::PreferCache;
234 else if ( theName ==
"AlwaysCache" )
236 return QNetworkRequest::AlwaysCache;
238 return QNetworkRequest::PreferNetwork;
248 mUseSystemProxy =
false;
252 Qt::ConnectionType connectionType =
thread() ==
instance()->
thread() ? Qt::AutoConnection : Qt::BlockingQueuedConnection;
265 #ifndef QT_NO_OPENSSL
273 bool proxyEnabled = settings.
value(
"proxy/proxyEnabled",
false ).
toBool();
276 excludes = settings.
value(
"proxy/proxyExcludedUrls",
"" ).
toString().
split(
"|", QString::SkipEmptyParts );
286 if ( proxyTypeString ==
"DefaultProxy" )
288 mUseSystemProxy =
true;
293 proxy = proxies.
first();
299 QNetworkProxy::ProxyType proxyType = QNetworkProxy::DefaultProxy;
300 if ( proxyTypeString ==
"Socks5Proxy" )
302 proxyType = QNetworkProxy::Socks5Proxy;
304 else if ( proxyTypeString ==
"HttpProxy" )
306 proxyType = QNetworkProxy::HttpProxy;
308 else if ( proxyTypeString ==
"HttpCachingProxy" )
310 proxyType = QNetworkProxy::HttpCachingProxy;
312 else if ( proxyTypeString ==
"FtpCachingProxy" )
314 proxyType = QNetworkProxy::FtpCachingProxy;
318 .arg( proxyHost ).arg( proxyPort )
319 .arg( proxyUser ).arg( proxyPassword )
321 proxy =
QNetworkProxy( proxyType, proxyHost, proxyPort, proxyUser, proxyPassword );
332 qint64 cacheSize = settings.
value(
"cache/size", 50 * 1024 * 1024 ).
toULongLong();
340 if (
cache() != newcache )
static const char * QGIS_VERSION
const QStringList & excludeList() const
retrieve exclude list (urls shouldn't use the fallback proxy)
void requestCreated(QNetworkReply *)
virtual QNetworkReply * createRequest(Operation op, const QNetworkRequest &req, QIODevice *outgoingData)
virtual ~QgsNetworkProxyFactory()
static QString cacheLoadControlName(QNetworkRequest::CacheLoadControl theControl)
Get name for QNetworkRequest::CacheLoadControl.
void sslErrors(QNetworkReply *reply, const QList< QSslError > &errors)
QgsNetworkAccessManager(QObject *parent=0)
QStringList split(const QString &sep, SplitBehavior behavior, Qt::CaseSensitivity cs) const
static QNetworkRequest::CacheLoadControl cacheLoadControlFromName(const QString &theName)
Get QNetworkRequest::CacheLoadControl from name.
const QNetworkProxy & fallbackProxy() const
retrieve fall back proxy (for urls that no factory returned proxies for)
void authenticationRequired(QNetworkReply *reply, QAuthenticator *authenticator)
void setupDefaultProxyAndCache()
Setup the NAM according to the user's settings.
virtual QNetworkReply * createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &req, QIODevice *outgoingData=0) override
QString toString(QFlags< QUrl::FormattingOption > options) const
qulonglong toULongLong(bool *ok) const
static const QString qgisSettingsDirPath()
Returns the path to the settings directory in user's home dir.
QString tr(const char *sourceText, const char *disambiguation, int n)
const QList< QNetworkProxyFactory * > proxyFactories() const
retrieve proxy factory list
QAbstractNetworkCache * cache() const
void setCacheDirectory(const QString &cacheDir)
void setProxyFactory(QNetworkProxyFactory *factory)
static void logMessage(QString message, QString tag=QString::null, MessageLevel level=WARNING)
add a message to the instance (and create it if necessary)
QNetworkProxy proxy() const
~QgsNetworkAccessManager()
destructor
virtual QList< QNetworkProxy > queryProxy(const QNetworkProxyQuery &query)=0
int toInt(bool *ok) const
QNetworkProxy::ProxyType type() const
void requestTimedOut(QNetworkReply *)
int toInt(bool *ok, int base) const
int removeAll(const T &value)
bool startsWith(const QString &s, Qt::CaseSensitivity cs) const
void setMaximumCacheSize(qint64 size)
void removeProxyFactory(QNetworkProxyFactory *factory)
remove a factory from the proxy factories list
QCoreApplication * instance()
void insertProxyFactory(QNetworkProxyFactory *factory)
insert a factory into the proxy factories list
QString cacheDirectory() const
QVariant value(const QString &key, const QVariant &defaultValue) const
static QgsNetworkAccessManager * instance()
returns a pointer to the single instance
void insert(int i, const T &value)
QList< QNetworkProxy > systemProxyForQuery(const QNetworkProxyQuery &query)
void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator)
void setUseSystemConfiguration(bool enable)
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
void requestAboutToBeCreated(QNetworkAccessManager::Operation, const QNetworkRequest &, QIODevice *)
void setCache(QAbstractNetworkCache *cache)
QString arg(qlonglong a, int fieldWidth, int base, const QChar &fillChar) const
void setFallbackProxyAndExcludes(const QNetworkProxy &proxy, const QStringList &excludes)
set fallback proxy and URL that shouldn't use it.
virtual QList< QNetworkProxy > queryProxy(const QNetworkProxyQuery &query=QNetworkProxyQuery()) override
qint64 maximumCacheSize() const
void setSingleShot(bool singleShot)
QByteArray toUtf8() const