AusweisApp2
GlobalStatus.h
gehe zur Dokumentation dieser Datei
1
7#pragma once
8
9#include "EnumHelper.h"
10
11#include <QCoreApplication>
12#include <QMap>
13#include <QPair>
14#include <QSharedData>
15
16namespace governikus
17{
18
20{
21 Q_GADGET
22 Q_DECLARE_TR_FUNCTIONS(governikus::GlobalStatus)
23
24 public:
25 enum class Code
26 {
27 Unknown_Error,
28 No_Error,
29
30 Network_ServiceUnavailable,
31 Network_Ssl_Establishment_Error,
32 Network_TimeOut,
33 Network_Proxy_Error,
34 Network_Other_Error,
35
36 Downloader_File_Not_Found,
37 Downloader_Cannot_Save_File,
38 Downloader_Data_Corrupted,
39 Downloader_Missing_Platform,
40 Downloader_Aborted,
41
42 Update_Execution_Failed,
43
44 Workflow_AlreadyInProgress_Error,
45 Workflow_Communication_Missing_Redirect_Url,
46 Workflow_InternalError_BeforeTcToken,
47 Workflow_Cancellation_By_User,
48 Workflow_Card_Removed,
49 Workflow_Cannot_Confirm_IdCard_Authenticity,
50 Workflow_Unknown_Paos_From_EidServer,
51 Workflow_Unexpected_Message_From_EidServer,
52 Workflow_Preverification_Developermode_Error,
53 Workflow_Preverification_Error,
54 Workflow_No_Unique_AtCvc,
55 Workflow_No_Unique_DvCvc,
56 Workflow_No_Permission_Error,
57 Workflow_No_Extended_Length_Error,
58 Workflow_Certificate_No_Description,
59 Workflow_Certificate_No_Url_In_Description,
60 Workflow_Certificate_Hash_Error,
61 Workflow_Certificate_Sop_Error,
62 Workflow_Error_Page_Transmission_Error,
63 Workflow_Redirect_Transmission_Error,
64 Workflow_Processing_Error,
65 Workflow_TrustedChannel_Establishment_Error,
66 Workflow_TrustedChannel_Error_From_Server,
67 Workflow_TrustedChannel_Hash_Not_In_Description,
68 Workflow_TrustedChannel_No_Data_Received,
69 Workflow_TrustedChannel_Ssl_Connection_Unsupported_Algorithm_Or_Length,
70 Workflow_TrustedChannel_Ssl_Certificate_Unsupported_Algorithm_Or_Length,
71 Workflow_TrustedChannel_ServiceUnavailable,
72 Workflow_TrustedChannel_TimeOut,
73 Workflow_TrustedChannel_Proxy_Error,
74 Workflow_TrustedChannel_Server_Format_Error,
75 Workflow_TrustedChannel_Other_Network_Error,
76 Workflow_Reader_Became_Inaccessible,
77 Workflow_Server_Incomplete_Information_Provided,
78 Workflow_Network_Ssl_Connection_Unsupported_Algorithm_Or_Length,
79 Workflow_Network_Ssl_Certificate_Unsupported_Algorithm_Or_Length,
80 Workflow_Network_Ssl_Hash_Not_In_Certificate_Description,
81 Workflow_Network_Empty_Redirect_Url,
82 Workflow_Network_Expected_Redirect,
83 Workflow_Network_Invalid_Scheme,
84 Workflow_Network_Malformed_Redirect_Url,
85 Workflow_Wrong_Parameter_Invocation,
86 Workflow_Smart_eID_Unavailable,
87 Workflow_Smart_eID_Applet_Preparation_Failed,
88 Workflow_Smart_eID_PrePersonalization_Failed,
89 Workflow_Smart_eID_Personalization_Failed,
90
91 Paos_Unexpected_Warning,
92
93 Paos_Generic_Server_Error,
94
95 Paos_Error_AL_Unknown_Error,
96 Paos_Error_AL_Internal_Error,
97 Paos_Error_AL_Communication_Error,
98 Paos_Error_DP_Trusted_Channel_Establishment_Failed,
99 Paos_Error_SAL_Cancellation_by_User,
100 Paos_Error_SAL_Invalid_Key,
101
102 Card_Not_Found,
103 Card_Communication_Error,
104 Card_Protocol_Error,
105 Card_Unexpected_Transmit_Status,
106 Card_Cancellation_By_User,
107 Card_Input_TimeOut,
108 Card_Pin_Deactivated,
109 Card_Invalid_Pin,
110 Card_Invalid_Can,
111 Card_Invalid_Puk,
112 Card_Pin_Blocked,
113 Card_Pin_Not_Blocked,
114 Card_Puk_Blocked,
115 Card_NewPin_Mismatch,
116 Card_NewPin_Invalid_Length,
117 Card_ValidityVerificationFailed,
118 Card_Smart_Invalid,
119
120 RemoteReader_CloseCode_AbnormalClose,
121
122 IfdConnector_InvalidRequest,
123 IfdConnector_NoSupportedApiLevel,
124 IfdConnector_ConnectionTimeout,
125 IfdConnector_ConnectionError,
126 IfdConnector_RemoteHostRefusedConnection
127 };
128
129 enum class Origin
130 {
131 Server, Client
132 };
133
135 {
136 ECARDAPI_ERROR,
137 ECARDAPI_SERVERMESSAGE,
138 LAST_URL,
139 HTTP_STATUS_CODE,
140 REDIRECT_URL,
141 CERTIFICATE_ISSUER_NAME,
142 URL_SCHEME,
143 ACTIVATION_ERROR
144 };
145
146 using ExternalInfoMap = QMap<ExternalInformation, QString>;
147
148 Q_ENUM(Code)
149 Q_ENUM(Origin)
150 Q_ENUM(ExternalInformation)
151
152 private:
153 class InternalStatus
154 : public QSharedData
155 {
156 public:
157 const Code mStatusCode;
158 const ExternalInfoMap mExternalInformation;
159 const Origin mOrigin;
160
161 InternalStatus(Code pStatusCode, const ExternalInfoMap& pExternalInformation, const Origin pOrigin)
162 : mStatusCode(pStatusCode)
163 , mExternalInformation(pExternalInformation)
164 , mOrigin(pOrigin)
165 {
166 }
167
168
169 InternalStatus(Code pStatusCode, const QPair<ExternalInformation, QString>& pExternalInformation, const Origin pOrigin)
170 : mStatusCode(pStatusCode)
171 , mExternalInformation({
172 {pExternalInformation.first, pExternalInformation.second}
173 })
174 , mOrigin(pOrigin)
175 {
176 }
177
178
179 bool operator ==(const InternalStatus& pOther) const
180 {
181 return mStatusCode == pOther.mStatusCode &&
182 mExternalInformation == pOther.mExternalInformation &&
183 mOrigin == pOther.mOrigin;
184 }
185
186
187 };
188
189 QSharedDataPointer<InternalStatus> d;
190 [[nodiscard]] QString getExternalInfo(ExternalInformation pType) const;
191
192 [[nodiscard]] QString toErrorDescriptionInternal() const;
193
194 public:
195 GlobalStatus(Code pStatusCode, const ExternalInfoMap& pExternalInformation, const Origin pOrigin = Origin::Client)
196 : d(new InternalStatus(pStatusCode, pExternalInformation, pOrigin))
197 {
198 }
199
200
201 GlobalStatus(Code pStatusCode, const QPair<ExternalInformation, QString>& pExternalInformation, const Origin pOrigin = Origin::Client)
202 : d(new InternalStatus(pStatusCode, pExternalInformation, pOrigin))
203 {
204 }
205
206
208 : d(new InternalStatus(pStatusCode, ExternalInfoMap(), pOrigin))
209 {
210 }
211
212
213 bool operator ==(const GlobalStatus& pOther) const;
214 [[nodiscard]] bool is(const Code pStatusCode) const;
215
216 [[nodiscard]] Code getStatusCode() const;
217
218 [[nodiscard]] QString toErrorDescription(const bool pSimplifiedVersion = false) const;
219 [[nodiscard]] QString getExternalInfo(const QString& pToken = QStringLiteral("; ")) const;
220
221 [[nodiscard]] Origin getOrigin() const;
222 [[nodiscard]] bool isOriginServer() const;
223
224 [[nodiscard]] bool isNoError() const;
225 [[nodiscard]] bool isError() const;
226 [[nodiscard]] bool isCancellationByUser() const;
227 [[nodiscard]] bool isMessageMasked() const;
228};
229
231
233
234} // namespace governikus
235
236
237QDebug operator <<(QDebug pDbg, const governikus::GlobalStatus& pStatus);
#define defineEnumOperators(enumName)
Definition: EnumHelper.h:31
QDebug operator<<(QDebug pDbg, const governikus::GlobalStatus &pStatus)
Definition: GlobalStatus.h:20
Code getStatusCode() const
bool operator==(const GlobalStatus &pOther) const
GlobalStatus(Code pStatusCode, const ExternalInfoMap &pExternalInformation, const Origin pOrigin=Origin::Client)
Definition: GlobalStatus.h:195
GlobalStatus(Code pStatusCode=Code::Unknown_Error, const Origin pOrigin=Origin::Client)
Definition: GlobalStatus.h:207
QString getExternalInfo(const QString &pToken=QStringLiteral("; ")) const
Origin
Definition: GlobalStatus.h:130
bool is(const Code pStatusCode) const
QString toErrorDescription(const bool pSimplifiedVersion=false) const
bool isMessageMasked() const
bool isCancellationByUser() const
bool isOriginServer() const
QMap< ExternalInformation, QString > ExternalInfoMap
Definition: GlobalStatus.h:146
Origin getOrigin() const
Code
Definition: GlobalStatus.h:26
GlobalStatus(Code pStatusCode, const QPair< ExternalInformation, QString > &pExternalInformation, const Origin pOrigin=Origin::Client)
Definition: GlobalStatus.h:201
ExternalInformation
Definition: GlobalStatus.h:135
A simple template renderer.
Definition: ActivationContext.h:15