cutelyst
3.9.1
A C++ Web Framework built on top of Qt, using the simple approach of Catalyst (Perl) framework.
validatoremail.h
1
/*
2
* SPDX-FileCopyrightText: (C) 2017-2022 Matthias Fehring <mf@huessenbergnetz.de>
3
* SPDX-License-Identifier: BSD-3-Clause
4
*/
5
#ifndef CUTELYSTVALIDATOREMAIL_H
6
#define CUTELYSTVALIDATOREMAIL_H
7
8
#include "validatorrule.h"
9
10
#include <Cutelyst/cutelyst_global.h>
11
12
namespace
Cutelyst
{
13
14
class
ValidatorEmailPrivate;
15
42
class
CUTELYST_PLUGIN_UTILS_VALIDATOR_EXPORT
ValidatorEmail
:
public
ValidatorRule
43
{
44
Q_GADGET
45
public
:
49
enum
Category
: quint8 {
50
Valid
= 1,
51
DNSWarn
= 7,
53
RFC5321
= 15,
56
CFWS
= 31,
58
Deprecated
= 63,
60
RFC5322
= 127,
63
Error
= 255
64
};
65
Q_ENUM(Category)
66
67
70
enum
Diagnose
: quint8 {
71
// Address is valid
72
ValidAddress
=
73
0,
76
// Address is valid but a DNS check was not successful
77
DnsWarnNoMxRecord
=
78
5,
79
DnsWarnNoRecord
= 6,
80
// Address is valid for SMTP but has unusual Elements
81
RFC5321TLD
= 9,
82
RFC5321TLDNumberic
=
83
10,
84
RFC5321QuotedString
= 11,
85
RFC5321AddressLiteral
= 12,
86
RFC5321IPv6Deprecated
=
87
13,
90
// Address is valid within the message but cannot be used unmodified for the envelope
91
CFWSComment
= 17,
92
CFWSFWS
= 18,
93
// Address contains deprecated elements but may still be valid in restricted contexts
94
DeprecatedLocalpart
= 33,
95
DeprecatedFWS
= 34,
96
DeprecatedQText
= 35,
97
DeprecatedQP
= 36,
98
DeprecatedComment
= 37,
99
DeprecatedCText
= 38,
100
DeprecatedCFWSNearAt
=
101
49,
102
// The address in only valid according to the broad definition of RFC 5322. It is otherwise
103
// invalid
104
RFC5322Domain
=
105
65,
107
RFC5322TooLong
= 66,
108
RFC5322LocalTooLong
= 67,
109
RFC5322DomainTooLong
= 68,
110
RFC5322LabelTooLong
= 69,
111
RFC5322DomainLiteral
=
112
70,
114
RFC5322DomLitOBSDText
= 71,
117
RFC5322IPv6GroupCount
=
118
72,
119
RFC5322IPv62x2xColon
= 73,
120
RFC5322IPv6BadChar
= 74,
121
RFC5322IPv6MaxGroups
= 75,
122
RFC5322IPv6ColonStart
= 76,
123
RFC5322IPv6ColonEnd
= 77,
124
// Address is invalid for any purpose
125
ErrorExpectingDText
=
126
129,
127
ErrorNoLocalPart
= 130,
128
ErrorNoDomain
= 131,
129
ErrorConsecutiveDots
= 132,
130
ErrorATextAfterCFWS
=
131
133,
132
ErrorATextAfterQS
= 134,
133
ErrorATextAfterDomLit
=
134
135,
135
ErrorExpectingQpair
=
136
136,
137
ErrorExpectingAText
= 137,
138
ErrorExpectingQText
= 138,
139
ErrorExpectingCText
= 139,
140
ErrorBackslashEnd
= 140,
141
ErrorDotStart
= 141,
142
ErrorDotEnd
= 142,
143
ErrorDomainHyphenStart
= 143,
144
ErrorDomainHyphenEnd
= 144,
145
ErrorUnclosedQuotedStr
= 145,
146
ErrorUnclosedComment
= 146,
147
ErrorUnclosedDomLiteral
= 147,
148
ErrorFWSCRLFx2
= 148,
149
ErrorFWSCRLFEnd
= 149,
150
ErrorCRnoLF
=
151
150,
152
ErrorFatal
= 254
153
};
154
Q_ENUM(Diagnose)
155
156
enum
Option
: quint8 {
157
NoOption
= 0,
158
CheckDNS
=
159
1,
160
UTF8Local
= 2,
161
AllowIDN
= 4,
162
AllowUTF8
=
UTF8Local
|
AllowIDN
164
};
165
Q_DECLARE_FLAGS(Options, Option)
166
167
175
ValidatorEmail
(
const
QString
&field,
176
Category threshold = RFC5321,
177
Options options = NoOption,
178
const
ValidatorMessages
&messages =
ValidatorMessages
(),
179
const
QString
&defValKey =
QString
());
180
184
~ValidatorEmail
()
override
;
185
193
static
QString
diagnoseString(
Context
*c, Diagnose diagnose,
const
QString
&label =
QString
());
194
202
static
QString
categoryString(
Context
*c, Category category,
const
QString
&label =
QString
());
203
209
static
Category category(Diagnose diagnose);
210
218
static
QString
categoryString(
Context
*c, Diagnose diagnose,
const
QString
&label =
QString
());
219
230
static
bool
validate(
const
QString
&email,
231
Category threshold = RFC5321,
232
Options options = NoOption,
233
QList<Diagnose>
*diagnoses =
nullptr
);
234
235
protected
:
244
ValidatorReturnType
validate(
Context
*c,
const
ParamsMultiMap
¶ms)
const override
;
245
249
QString
genericValidationError(
Context
*c,
250
const
QVariant
&errorData =
QVariant
())
const override
;
251
252
private
:
253
Q_DECLARE_PRIVATE(
ValidatorEmail
)
254
Q_DISABLE_COPY(
ValidatorEmail
)
255
};
256
257
}
// namespace Cutelyst
258
259
Q_DECLARE_OPERATORS_FOR_FLAGS(Cutelyst::ValidatorEmail::Options)
260
261
#endif
// CUTELYSTVALIDATOREMAIL_H
Cutelyst::Context
The Cutelyst Context.
Definition
context.h:39
Cutelyst::ValidatorEmail
Checks if the value is a valid email address according to specific RFCs.
Definition
validatoremail.h:43
Cutelyst::ValidatorEmail::Option
Option
Definition
validatoremail.h:156
Cutelyst::ValidatorEmail::UTF8Local
@ UTF8Local
Definition
validatoremail.h:160
Cutelyst::ValidatorEmail::AllowUTF8
@ AllowUTF8
Definition
validatoremail.h:162
Cutelyst::ValidatorEmail::CheckDNS
@ CheckDNS
Definition
validatoremail.h:158
Cutelyst::ValidatorEmail::AllowIDN
@ AllowIDN
Definition
validatoremail.h:161
Cutelyst::ValidatorEmail::NoOption
@ NoOption
Definition
validatoremail.h:157
Cutelyst::ValidatorEmail::Diagnose
Diagnose
Single diagnose values that show why an address is not valid.
Definition
validatoremail.h:70
Cutelyst::ValidatorEmail::RFC5321TLD
@ RFC5321TLD
Definition
validatoremail.h:81
Cutelyst::ValidatorEmail::ErrorFWSCRLFEnd
@ ErrorFWSCRLFEnd
Definition
validatoremail.h:149
Cutelyst::ValidatorEmail::DeprecatedQP
@ DeprecatedQP
Definition
validatoremail.h:97
Cutelyst::ValidatorEmail::CFWSFWS
@ CFWSFWS
Definition
validatoremail.h:92
Cutelyst::ValidatorEmail::RFC5322LocalTooLong
@ RFC5322LocalTooLong
Definition
validatoremail.h:108
Cutelyst::ValidatorEmail::RFC5322DomLitOBSDText
@ RFC5322DomLitOBSDText
Definition
validatoremail.h:114
Cutelyst::ValidatorEmail::ErrorDomainHyphenEnd
@ ErrorDomainHyphenEnd
Definition
validatoremail.h:144
Cutelyst::ValidatorEmail::RFC5321IPv6Deprecated
@ RFC5321IPv6Deprecated
Definition
validatoremail.h:86
Cutelyst::ValidatorEmail::ErrorExpectingQText
@ ErrorExpectingQText
Definition
validatoremail.h:138
Cutelyst::ValidatorEmail::ErrorExpectingQpair
@ ErrorExpectingQpair
Definition
validatoremail.h:135
Cutelyst::ValidatorEmail::DeprecatedFWS
@ DeprecatedFWS
Definition
validatoremail.h:95
Cutelyst::ValidatorEmail::ErrorNoLocalPart
@ ErrorNoLocalPart
Definition
validatoremail.h:127
Cutelyst::ValidatorEmail::ErrorDotStart
@ ErrorDotStart
Definition
validatoremail.h:141
Cutelyst::ValidatorEmail::CFWSComment
@ CFWSComment
Definition
validatoremail.h:91
Cutelyst::ValidatorEmail::DnsWarnNoMxRecord
@ DnsWarnNoMxRecord
Definition
validatoremail.h:77
Cutelyst::ValidatorEmail::RFC5322IPv6BadChar
@ RFC5322IPv6BadChar
Definition
validatoremail.h:120
Cutelyst::ValidatorEmail::RFC5322IPv6ColonEnd
@ RFC5322IPv6ColonEnd
Definition
validatoremail.h:123
Cutelyst::ValidatorEmail::ErrorFWSCRLFx2
@ ErrorFWSCRLFx2
Definition
validatoremail.h:148
Cutelyst::ValidatorEmail::RFC5321AddressLiteral
@ RFC5321AddressLiteral
Definition
validatoremail.h:85
Cutelyst::ValidatorEmail::ErrorUnclosedComment
@ ErrorUnclosedComment
Definition
validatoremail.h:146
Cutelyst::ValidatorEmail::ErrorExpectingAText
@ ErrorExpectingAText
Definition
validatoremail.h:137
Cutelyst::ValidatorEmail::ErrorExpectingDText
@ ErrorExpectingDText
Definition
validatoremail.h:125
Cutelyst::ValidatorEmail::ErrorATextAfterQS
@ ErrorATextAfterQS
Definition
validatoremail.h:132
Cutelyst::ValidatorEmail::ErrorATextAfterDomLit
@ ErrorATextAfterDomLit
Definition
validatoremail.h:133
Cutelyst::ValidatorEmail::RFC5322IPv6GroupCount
@ RFC5322IPv6GroupCount
Definition
validatoremail.h:117
Cutelyst::ValidatorEmail::ErrorConsecutiveDots
@ ErrorConsecutiveDots
Definition
validatoremail.h:129
Cutelyst::ValidatorEmail::RFC5322IPv6MaxGroups
@ RFC5322IPv6MaxGroups
Definition
validatoremail.h:121
Cutelyst::ValidatorEmail::ErrorNoDomain
@ ErrorNoDomain
Definition
validatoremail.h:128
Cutelyst::ValidatorEmail::DeprecatedCFWSNearAt
@ DeprecatedCFWSNearAt
Definition
validatoremail.h:100
Cutelyst::ValidatorEmail::RFC5322LabelTooLong
@ RFC5322LabelTooLong
Definition
validatoremail.h:110
Cutelyst::ValidatorEmail::DnsWarnNoRecord
@ DnsWarnNoRecord
Definition
validatoremail.h:79
Cutelyst::ValidatorEmail::DeprecatedComment
@ DeprecatedComment
Definition
validatoremail.h:98
Cutelyst::ValidatorEmail::ErrorUnclosedQuotedStr
@ ErrorUnclosedQuotedStr
Definition
validatoremail.h:145
Cutelyst::ValidatorEmail::DeprecatedCText
@ DeprecatedCText
Definition
validatoremail.h:99
Cutelyst::ValidatorEmail::ErrorDotEnd
@ ErrorDotEnd
Definition
validatoremail.h:142
Cutelyst::ValidatorEmail::ValidAddress
@ ValidAddress
Definition
validatoremail.h:72
Cutelyst::ValidatorEmail::RFC5321QuotedString
@ RFC5321QuotedString
Definition
validatoremail.h:84
Cutelyst::ValidatorEmail::RFC5322DomainLiteral
@ RFC5322DomainLiteral
Definition
validatoremail.h:111
Cutelyst::ValidatorEmail::RFC5322IPv6ColonStart
@ RFC5322IPv6ColonStart
Definition
validatoremail.h:122
Cutelyst::ValidatorEmail::ErrorDomainHyphenStart
@ ErrorDomainHyphenStart
Definition
validatoremail.h:143
Cutelyst::ValidatorEmail::DeprecatedLocalpart
@ DeprecatedLocalpart
Definition
validatoremail.h:94
Cutelyst::ValidatorEmail::RFC5322TooLong
@ RFC5322TooLong
Definition
validatoremail.h:107
Cutelyst::ValidatorEmail::RFC5321TLDNumberic
@ RFC5321TLDNumberic
Definition
validatoremail.h:82
Cutelyst::ValidatorEmail::ErrorFatal
@ ErrorFatal
Definition
validatoremail.h:152
Cutelyst::ValidatorEmail::RFC5322DomainTooLong
@ RFC5322DomainTooLong
Definition
validatoremail.h:109
Cutelyst::ValidatorEmail::ErrorCRnoLF
@ ErrorCRnoLF
Definition
validatoremail.h:150
Cutelyst::ValidatorEmail::ErrorBackslashEnd
@ ErrorBackslashEnd
Definition
validatoremail.h:140
Cutelyst::ValidatorEmail::ErrorUnclosedDomLiteral
@ ErrorUnclosedDomLiteral
Definition
validatoremail.h:147
Cutelyst::ValidatorEmail::ErrorExpectingCText
@ ErrorExpectingCText
Definition
validatoremail.h:139
Cutelyst::ValidatorEmail::RFC5322Domain
@ RFC5322Domain
Definition
validatoremail.h:104
Cutelyst::ValidatorEmail::RFC5322IPv62x2xColon
@ RFC5322IPv62x2xColon
Definition
validatoremail.h:119
Cutelyst::ValidatorEmail::DeprecatedQText
@ DeprecatedQText
Definition
validatoremail.h:96
Cutelyst::ValidatorEmail::ErrorATextAfterCFWS
@ ErrorATextAfterCFWS
Definition
validatoremail.h:130
Cutelyst::ValidatorEmail::ValidatorEmail
ValidatorEmail(const QString &field, Category threshold=RFC5321, Options options=NoOption, const ValidatorMessages &messages=ValidatorMessages(), const QString &defValKey=QString())
Constructs a new email validator.
Definition
validatoremail.cpp:19
Cutelyst::ValidatorEmail::Category
Category
Validation category, used as threshold to define valid addresses.
Definition
validatoremail.h:49
Cutelyst::ValidatorEmail::Deprecated
@ Deprecated
Definition
validatoremail.h:58
Cutelyst::ValidatorEmail::RFC5321
@ RFC5321
Definition
validatoremail.h:53
Cutelyst::ValidatorEmail::Error
@ Error
Definition
validatoremail.h:63
Cutelyst::ValidatorEmail::CFWS
@ CFWS
Definition
validatoremail.h:56
Cutelyst::ValidatorEmail::DNSWarn
@ DNSWarn
Definition
validatoremail.h:51
Cutelyst::ValidatorEmail::RFC5322
@ RFC5322
Definition
validatoremail.h:60
Cutelyst::ValidatorEmail::Valid
@ Valid
Definition
validatoremail.h:50
Cutelyst::ValidatorRule::ValidatorRule
ValidatorRule(const QString &field, const ValidatorMessages &messages=ValidatorMessages(), const QString &defValKey=QString())
Constructs a new ValidatorRule with the given parameters.
Definition
validatorrule.cpp:13
Cutelyst
The Cutelyst namespace holds all public Cutelyst API.
Definition
Mainpage.dox:8
Cutelyst::ParamsMultiMap
QMultiMap< QString, QString > ParamsMultiMap
Definition
paramsmultimap.h:23
QList
QString
QVariant
Cutelyst::ValidatorMessages
Stores custom error messages and the input field label.
Definition
validatorrule.h:135
Cutelyst::ValidatorReturnType
Contains the result of a single input parameter validation.
Definition
validatorrule.h:49
Cutelyst
Plugins
Utils
Validator
validatoremail.h
Generated on
for cutelyst by
1.16.1