zero_bounce/utility/structures/
validate_enums.rs1use std::str::FromStr;
6
7#[derive(Debug, Clone, PartialEq, Eq)]
10pub enum ZBValidateStatus {
11 None,
12 Valid,
13 Invalid,
14 CatchAll,
15 Unknown,
16 Spamtrap,
17 Abuse,
18 DoNotMail,
19 UnknownValue(String),
21}
22
23impl FromStr for ZBValidateStatus {
24 type Err = std::convert::Infallible;
25
26 fn from_str(s: &str) -> Result<Self, Self::Err> {
27 Ok(match s {
28 "" => ZBValidateStatus::None,
29 "valid" => ZBValidateStatus::Valid,
30 "invalid" => ZBValidateStatus::Invalid,
31 "catch-all" => ZBValidateStatus::CatchAll,
32 "unknown" => ZBValidateStatus::Unknown,
33 "spamtrap" => ZBValidateStatus::Spamtrap,
34 "abuse" => ZBValidateStatus::Abuse,
35 "do_not_mail" => ZBValidateStatus::DoNotMail,
36 other => ZBValidateStatus::UnknownValue(other.to_string()),
37 })
38 }
39}
40
41#[derive(Debug, Clone, PartialEq, Eq)]
43pub enum ZBValidateSubStatus {
44 None,
45 AntispamSystem,
46 Greylisted,
47 MailServerTemporaryError,
48 ForcibleDisconnect,
49 MailServerDidNotRespond,
50 TimeoutExceeded,
51 FailedSmtpConnection,
52 MailboxQuotaExceeded,
53 ExceptionOccurred,
54 PossibleTrap,
55 RoleBased,
56 GlobalSuppression,
57 MailboxNotFound,
58 NoDnsEntries,
59 FailedSyntaxCheck,
60 PossibleTypo,
61 UnroutableIpAddress,
62 LeadingPeriodRemoved,
63 DoesNotAcceptMail,
64 AliasAddress,
65 RoleBasedCatchAll,
66 Disposable,
67 Toxic,
68 Alternate,
69 MxForward,
70 Blocked,
71 Allowed,
72 AcceptAll,
73 RoleBasedAcceptAll,
74 Gold,
75 UnknownValue(String),
77}
78
79impl FromStr for ZBValidateSubStatus {
80 type Err = std::convert::Infallible;
81
82 fn from_str(s: &str) -> Result<Self, Self::Err> {
83 Ok(match s {
84 "" => ZBValidateSubStatus::None,
85 "antispam_system" => ZBValidateSubStatus::AntispamSystem,
86 "greylisted" => ZBValidateSubStatus::Greylisted,
87 "mail_server_temporary_error" => ZBValidateSubStatus::MailServerTemporaryError,
88 "forcible_disconnect" => ZBValidateSubStatus::ForcibleDisconnect,
89 "mail_server_did_not_respond" => ZBValidateSubStatus::MailServerDidNotRespond,
90 "timeout_exceeded" => ZBValidateSubStatus::TimeoutExceeded,
91 "failed_smtp_connection" => ZBValidateSubStatus::FailedSmtpConnection,
92 "mailbox_quota_exceeded" => ZBValidateSubStatus::MailboxQuotaExceeded,
93 "exception_occurred" => ZBValidateSubStatus::ExceptionOccurred,
94 "possible_trap" => ZBValidateSubStatus::PossibleTrap,
95 "role_based" => ZBValidateSubStatus::RoleBased,
96 "global_suppression" => ZBValidateSubStatus::GlobalSuppression,
97 "mailbox_not_found" => ZBValidateSubStatus::MailboxNotFound,
98 "no_dns_entries" => ZBValidateSubStatus::NoDnsEntries,
99 "failed_syntax_check" => ZBValidateSubStatus::FailedSyntaxCheck,
100 "possible_typo" => ZBValidateSubStatus::PossibleTypo,
101 "unroutable_ip_address" => ZBValidateSubStatus::UnroutableIpAddress,
102 "leading_period_removed" => ZBValidateSubStatus::LeadingPeriodRemoved,
103 "does_not_accept_mail" => ZBValidateSubStatus::DoesNotAcceptMail,
104 "alias_address" => ZBValidateSubStatus::AliasAddress,
105 "role_based_catch_all" => ZBValidateSubStatus::RoleBasedCatchAll,
106 "disposable" => ZBValidateSubStatus::Disposable,
107 "toxic" => ZBValidateSubStatus::Toxic,
108 "alternate" => ZBValidateSubStatus::Alternate,
109 "mx_forward" => ZBValidateSubStatus::MxForward,
110 "blocked" => ZBValidateSubStatus::Blocked,
111 "allowed" => ZBValidateSubStatus::Allowed,
112 "accept_all" => ZBValidateSubStatus::AcceptAll,
113 "role_based_accept_all" => ZBValidateSubStatus::RoleBasedAcceptAll,
114 "gold" => ZBValidateSubStatus::Gold,
115 other => ZBValidateSubStatus::UnknownValue(other.to_string()),
116 })
117 }
118}