2017-07-03 09:30:10 +02:00
|
|
|
/*
|
|
|
|
* \brief Wrapper around QNetworkAccessManager
|
|
|
|
*
|
2017-12-20 14:54:05 +01:00
|
|
|
* \copyright Copyright (c) 2014-2017 Governikus GmbH & Co. KG, Germany
|
2017-07-03 09:30:10 +02:00
|
|
|
*/
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
2017-07-03 09:33:28 +02:00
|
|
|
#include "GlobalStatus.h"
|
|
|
|
|
2017-07-03 09:30:10 +02:00
|
|
|
#include <QAtomicInt>
|
|
|
|
#include <QAuthenticator>
|
|
|
|
#include <QDebug>
|
|
|
|
#include <QNetworkAccessManager>
|
|
|
|
#include <QNetworkProxy>
|
|
|
|
#include <QNetworkReply>
|
|
|
|
#include <QSsl>
|
|
|
|
|
|
|
|
namespace governikus
|
|
|
|
{
|
|
|
|
|
|
|
|
class NetworkManager
|
|
|
|
: public QObject
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
private:
|
|
|
|
bool mApplicationExitInProgress;
|
|
|
|
QAtomicInt mOpenConnectionCount;
|
|
|
|
void trackConnection(QNetworkReply* pResponse, const int pTimeoutInMilliSeconds);
|
|
|
|
|
|
|
|
static bool mLockProxy;
|
|
|
|
QScopedPointer<QNetworkAccessManager, QScopedPointerDeleteLater> mNetAccessManager;
|
|
|
|
|
|
|
|
QString getUserAgentHeader() const;
|
|
|
|
|
|
|
|
public Q_SLOTS:
|
|
|
|
void onShutdown();
|
|
|
|
|
2017-12-20 14:54:05 +01:00
|
|
|
protected:
|
|
|
|
NetworkManager();
|
|
|
|
virtual ~NetworkManager();
|
|
|
|
|
2017-07-03 09:30:10 +02:00
|
|
|
public:
|
2017-07-03 09:33:28 +02:00
|
|
|
enum class NetworkError
|
|
|
|
{
|
2017-12-20 14:54:05 +01:00
|
|
|
ServiceUnavailable,
|
2017-07-03 09:33:28 +02:00
|
|
|
TimeOut,
|
|
|
|
ProxyError,
|
|
|
|
SslError,
|
|
|
|
OtherError,
|
|
|
|
};
|
|
|
|
Q_ENUM(NetworkError)
|
|
|
|
|
|
|
|
static void setApplicationProxyFactory();
|
2017-07-03 09:30:10 +02:00
|
|
|
static void lockProxy(bool pLocked)
|
|
|
|
{
|
|
|
|
mLockProxy = pLocked;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2017-12-20 14:54:05 +01:00
|
|
|
static NetworkManager& getInstance();
|
2017-07-03 09:33:28 +02:00
|
|
|
static NetworkError toNetworkError(const QNetworkReply* const pNetworkReply);
|
|
|
|
static GlobalStatus toTrustedChannelStatus(const QNetworkReply* const pNetworkReply);
|
|
|
|
static GlobalStatus toStatus(const QNetworkReply* const pNetworkReply);
|
2017-07-03 09:30:10 +02:00
|
|
|
static QString getTlsVersionString(QSsl::SslProtocol pProtocol);
|
|
|
|
|
2017-12-20 14:54:05 +01:00
|
|
|
virtual void clearConnections();
|
|
|
|
virtual QNetworkReply* paos(QNetworkRequest& pRequest, const QByteArray& pNamespace, const QByteArray& pData, bool pUsePsk = true, int pTimeoutInMilliSeconds = 30000);
|
2017-07-03 09:30:10 +02:00
|
|
|
virtual QNetworkReply* get(QNetworkRequest& pRequest, int pTimeoutInMilliSeconds = 30000);
|
|
|
|
|
2017-12-20 14:54:05 +01:00
|
|
|
virtual bool checkUpdateServerCertificate(const QNetworkReply& pReply);
|
|
|
|
|
|
|
|
int getOpenConnectionCount();
|
2017-07-03 09:30:10 +02:00
|
|
|
|
|
|
|
Q_SIGNALS:
|
|
|
|
void fireProxyAuthenticationRequired(const QNetworkProxy& pProxy, QAuthenticator* pAuthenticator);
|
|
|
|
void fireShutdown();
|
|
|
|
};
|
|
|
|
|
|
|
|
} /* namespace governikus */
|
|
|
|
|
|
|
|
QDebug operator <<(QDebug pDbg, QSsl::SslProtocol pProtocol);
|