AusweisApp2
NetworkManager.h
gehe zur Dokumentation dieser Datei
1/*
2 * \brief Wrapper around QNetworkAccessManager
3 *
4 * \copyright Copyright (c) 2014-2022 Governikus GmbH & Co. KG, Germany
5 */
6
7#pragma once
8
9#include "Env.h"
10#include "GlobalStatus.h"
11#include "LogHandler.h"
12
13#include <QAtomicInt>
14#include <QAuthenticator>
15#include <QDebug>
16#include <QNetworkAccessManager>
17#include <QNetworkProxy>
18#include <QNetworkReply>
19#include <QSsl>
20
21class test_NetworkManager;
22
23namespace governikus
24{
25
27 : public QObject
28{
29 Q_OBJECT
30 friend class Env;
31 friend class ::test_NetworkManager;
32
33 private:
34 static bool mLockProxy;
35
36 QNetworkAccessManager mNetAccessManager;
37 bool mApplicationExitInProgress;
38 QAtomicInt mOpenConnectionCount;
39 QSet<QByteArray> mUpdaterSessions;
40
41 bool prepareConnection(QNetworkRequest& pRequest);
42 [[nodiscard]] QSharedPointer<QNetworkReply> trackConnection(QNetworkReply* pResponse);
43 [[nodiscard]] QSharedPointer<QNetworkReply> processRequest(QNetworkRequest& pRequest,
44 const std::function<QSharedPointer<QNetworkReply>(QNetworkRequest&)>& pInvoke);
45 [[nodiscard]] QSharedPointer<QNetworkReply> processUpdaterRequest(QNetworkRequest& pRequest,
46 const std::function<QSharedPointer<QNetworkReply>(QNetworkRequest&)>& pInvoke);
47
48 [[nodiscard]] QString getUserAgentHeader() const;
49
50 public Q_SLOTS:
51 void onShutdown();
52 void onProxyChanged();
53
54 protected:
56 ~NetworkManager() override = default;
57
58 public:
59 enum class NetworkError
60 {
61 ServiceUnavailable,
62 TimeOut,
63 ProxyError,
64 SecurityError,
65 OtherError,
66 };
67 Q_ENUM(NetworkError)
68
69 static void setApplicationProxyFactory();
70 static void lockProxy(bool pLocked)
71 {
72 mLockProxy = pLocked;
73 }
74
75
76 [[nodiscard]] static bool isLoggingAllowed(const QSharedPointer<const QNetworkReply>& pReply);
77 [[nodiscard]] static int getLoggedStatusCode(const QSharedPointer<const QNetworkReply>& pReply, const MessageLogger& pLogger);
78 [[nodiscard]] static NetworkError toNetworkError(const QSharedPointer<const QNetworkReply>& pNetworkReply);
79 [[nodiscard]] static GlobalStatus toTrustedChannelStatus(const QSharedPointer<const QNetworkReply>& pNetworkReply);
80 [[nodiscard]] static GlobalStatus toStatus(const QSharedPointer<const QNetworkReply>& pNetworkReply);
81 [[nodiscard]] static QString getTlsVersionString(QSsl::SslProtocol pProtocol);
82 [[nodiscard]] static QByteArray getStatusMessage(int pStatus);
83 [[nodiscard]] static QString getFormattedStatusMessage(int pStatus);
84
85 virtual void clearConnections();
86 [[nodiscard]] virtual QSharedPointer<QNetworkReply> paos(QNetworkRequest& pRequest,
87 const QByteArray& pNamespace,
88 const QByteArray& pData,
89 bool pUsePsk = true,
90 const QByteArray& pSslSession = QByteArray());
91 [[nodiscard]] virtual QSharedPointer<QNetworkReply> get(QNetworkRequest& pRequest);
92 [[nodiscard]] virtual QSharedPointer<QNetworkReply> post(QNetworkRequest& pRequest,
93 const QByteArray& pData);
94 [[nodiscard]] virtual QSharedPointer<QNetworkReply> deleteResource(QNetworkRequest& pRequest);
95
96 [[nodiscard]] QSharedPointer<QNetworkReply> getAsUpdater(QNetworkRequest& pRequest);
97 [[nodiscard]] QSharedPointer<QNetworkReply> postAsUpdater(QNetworkRequest& pRequest,
98 const QByteArray& pData);
99
100 [[nodiscard]] int getOpenConnectionCount() const;
101
102 Q_SIGNALS:
103 void fireProxyAuthenticationRequired(const QNetworkProxy& pProxy, QAuthenticator* pAuthenticator);
105};
106
107} // namespace governikus
108
109QDebug operator <<(QDebug pDbg, QSsl::SslProtocol pProtocol);
QDebug operator<<(QDebug pDbg, QSsl::SslProtocol pProtocol)
Definition: Env.h:44
Definition: GlobalStatus.h:20
Definition: LogHandler.h:33
Definition: NetworkManager.h:28
QSharedPointer< QNetworkReply > getAsUpdater(QNetworkRequest &pRequest)
Definition: NetworkManager.cpp:105
virtual QSharedPointer< QNetworkReply > get(QNetworkRequest &pRequest)
Definition: NetworkManager.cpp:78
virtual QSharedPointer< QNetworkReply > paos(QNetworkRequest &pRequest, const QByteArray &pNamespace, const QByteArray &pData, bool pUsePsk=true, const QByteArray &pSslSession=QByteArray())
Definition: NetworkManager.cpp:57
NetworkError
Definition: NetworkManager.h:60
void onShutdown()
Definition: NetworkManager.cpp:204
virtual QSharedPointer< QNetworkReply > post(QNetworkRequest &pRequest, const QByteArray &pData)
Definition: NetworkManager.cpp:86
virtual QSharedPointer< QNetworkReply > deleteResource(QNetworkRequest &pRequest)
Definition: NetworkManager.cpp:97
~NetworkManager() override=default
NetworkManager()
Definition: NetworkManager.cpp:30
QSharedPointer< QNetworkReply > postAsUpdater(QNetworkRequest &pRequest, const QByteArray &pData)
Definition: NetworkManager.cpp:113
void onProxyChanged()
Definition: NetworkManager.cpp:213
virtual void clearConnections()
Definition: NetworkManager.cpp:50
static GlobalStatus toStatus(const QSharedPointer< const QNetworkReply > &pNetworkReply)
Definition: NetworkManager.cpp:276
static QString getFormattedStatusMessage(int pStatus)
Definition: NetworkManager.cpp:360
static void setApplicationProxyFactory()
Definition: NetworkManager.cpp:470
static NetworkError toNetworkError(const QSharedPointer< const QNetworkReply > &pNetworkReply)
Definition: NetworkManager.cpp:219
static int getLoggedStatusCode(const QSharedPointer< const QNetworkReply > &pReply, const MessageLogger &pLogger)
Definition: NetworkManager.cpp:379
static QByteArray getStatusMessage(int pStatus)
Definition: NetworkManager.cpp:345
static void lockProxy(bool pLocked)
Definition: NetworkManager.h:70
static GlobalStatus toTrustedChannelStatus(const QSharedPointer< const QNetworkReply > &pNetworkReply)
Definition: NetworkManager.cpp:249
int getOpenConnectionCount() const
Definition: NetworkManager.cpp:44
static bool isLoggingAllowed(const QSharedPointer< const QNetworkReply > &pReply)
Definition: NetworkManager.cpp:366
static QString getTlsVersionString(QSsl::SslProtocol pProtocol)
void fireProxyAuthenticationRequired(const QNetworkProxy &pProxy, QAuthenticator *pAuthenticator)
A simple template renderer.
Definition: ActivationContext.h:15