AusweisApp2
NetworkManager.h
gehe zur Dokumentation dieser Datei
1 /*
2  * \brief Wrapper around QNetworkAccessManager
3  *
4  * \copyright Copyright (c) 2014-2021 Governikus GmbH & Co. KG, Germany
5  */
6 
7 #pragma once
8 
9 #include "Env.h"
10 #include "GlobalStatus.h"
11 
12 #include <QAtomicInt>
13 #include <QAuthenticator>
14 #include <QDebug>
15 #include <QMessageLogger>
16 #include <QNetworkAccessManager>
17 #include <QNetworkProxy>
18 #include <QNetworkReply>
19 #include <QSsl>
20 
21 namespace governikus
22 {
23 
25  : public QObject
26 {
27  Q_OBJECT
28  friend class Env;
29 
30  private:
31  static bool mLockProxy;
32 
33  QNetworkAccessManager mNetAccessManager;
34  bool mApplicationExitInProgress;
35  QAtomicInt mOpenConnectionCount;
36 
37  void trackConnection(QNetworkReply* pResponse, const int pTimeoutInMilliSeconds);
38 
39  [[nodiscard]] QString getUserAgentHeader() const;
40 
41  public Q_SLOTS:
42  void onShutdown();
43  void onProxyChanged();
44 
45  protected:
47  ~NetworkManager() override;
48 
49  public:
50  enum class NetworkError
51  {
53  TimeOut,
54  ProxyError,
56  OtherError,
57  };
58  Q_ENUM(NetworkError)
59 
60  static void setApplicationProxyFactory();
61  static void lockProxy(bool pLocked)
62  {
63  mLockProxy = pLocked;
64  }
65 
66 
67  static int getLoggedStatusCode(const QSharedPointer<const QNetworkReply>& pReply, const QMessageLogger& pLogger);
68  static NetworkError toNetworkError(const QSharedPointer<const QNetworkReply>& pNetworkReply);
69  static GlobalStatus toTrustedChannelStatus(const QSharedPointer<const QNetworkReply>& pNetworkReply);
70  static GlobalStatus toStatus(const QSharedPointer<const QNetworkReply>& pNetworkReply);
71  static QString getTlsVersionString(QSsl::SslProtocol pProtocol);
72  static QByteArray getStatusMessage(int pStatus);
73 
74  virtual void clearConnections();
75  virtual QNetworkReply* paos(QNetworkRequest& pRequest,
76  const QByteArray& pNamespace,
77  const QByteArray& pData,
78  bool pUsePsk = true,
79  const QByteArray& pSslSession = QByteArray(),
80  int pTimeoutInMilliSeconds = 30000);
81  virtual QNetworkReply* get(QNetworkRequest& pRequest,
82  const QByteArray& pSslSession = QByteArray(),
83  int pTimeoutInMilliSeconds = 30000);
84 
85  virtual QNetworkReply* post(QNetworkRequest& pRequest,
86  const QByteArray& pData,
87  int pTimeoutInMilliSeconds = 30000);
88 
89  virtual bool checkUpdateServerCertificate(const QSharedPointer<const QNetworkReply>& pReply);
90 
92 
93  Q_SIGNALS:
94  void fireProxyAuthenticationRequired(const QNetworkProxy& pProxy, QAuthenticator* pAuthenticator);
95  void fireShutdown();
96 };
97 
98 } // namespace governikus
99 
100 QDebug operator <<(QDebug pDbg, QSsl::SslProtocol pProtocol);
static QByteArray getStatusMessage(int pStatus)
Definition: NetworkManager.cpp:259
Definition: NetworkManager.h:24
void fireProxyAuthenticationRequired(const QNetworkProxy &pProxy, QAuthenticator *pAuthenticator)
virtual void clearConnections()
Definition: NetworkManager.cpp:49
void onProxyChanged()
Definition: NetworkManager.cpp:152
Definition: GlobalStatus.h:19
NetworkManager()
Definition: NetworkManager.cpp:26
static QString getTlsVersionString(QSsl::SslProtocol pProtocol)
void onShutdown()
Definition: NetworkManager.cpp:143
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:14
QDebug operator<<(QDebug pDbg, QSsl::SslProtocol pProtocol)
static GlobalStatus toStatus(const QSharedPointer< const QNetworkReply > &pNetworkReply)
Definition: NetworkManager.cpp:215
static int getLoggedStatusCode(const QSharedPointer< const QNetworkReply > &pReply, const QMessageLogger &pLogger)
Definition: NetworkManager.cpp:274
static void lockProxy(bool pLocked)
Definition: NetworkManager.h:61
virtual QNetworkReply * paos(QNetworkRequest &pRequest, const QByteArray &pNamespace, const QByteArray &pData, bool pUsePsk=true, const QByteArray &pSslSession=QByteArray(), int pTimeoutInMilliSeconds=30000)
Definition: NetworkManager.cpp:55
static GlobalStatus toTrustedChannelStatus(const QSharedPointer< const QNetworkReply > &pNetworkReply)
Definition: NetworkManager.cpp:188
static void setApplicationProxyFactory()
Definition: NetworkManager.cpp:360
virtual bool checkUpdateServerCertificate(const QSharedPointer< const QNetworkReply > &pReply)
Definition: NetworkManager.cpp:126
Definition: Env.h:43
static NetworkError toNetworkError(const QSharedPointer< const QNetworkReply > &pNetworkReply)
Definition: NetworkManager.cpp:158
virtual QNetworkReply * post(QNetworkRequest &pRequest, const QByteArray &pData, int pTimeoutInMilliSeconds=30000)
Definition: NetworkManager.cpp:105
int getOpenConnectionCount()
Definition: NetworkManager.cpp:43
~NetworkManager() override
Definition: NetworkManager.cpp:38
NetworkError
Definition: NetworkManager.h:50