1use std::fmt;
2use std::fmt::Formatter;
3use once_cell::sync::Lazy;
4use thiserror::Error;
5
6
7#[allow(dead_code)]
8#[derive(Error, Debug)]
9pub(crate) enum Errors {
10 InvalidCookies(InvalidCookies),
11 InvalidLanguage(InvalidLanguage),
12 VisitsTooFrequently(VisitsTooFrequently),
13 MalformedRequest(MalformedRequest),
14 NoAccAssociatedCookies(NoAccAssociatedCookies),
15 TooManyRequests(TooManyRequests),
16 DataNotPublic(DataNotPublic),
17 InternalDatabaseError(InternalDatabaseError),
18 AccountNotFound(AccountNotFound),
19 RedemptionInvalid(RedemptionInvalid),
20 RedemptionCooldown(RedemptionCooldown),
21 RedemptionClaimed(RedemptionClaimed),
22 AlreadyClaimed(RedemptionClaimed),
23 AccountLoginFail(AccountLoginFail),
24 AccountHasLocked(AccountHasLocked),
25}
26
27
28impl fmt::Display for Errors {
29 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
30 match *self {
31 Errors::InvalidCookies(_) => write!(f, "Cookies are not valid."),
32 Errors::InvalidLanguage(_) => write!(f, "Language is not valid."),
33 Errors::VisitsTooFrequently(_) => write!(f, "Visits too frequently."),
34 Errors::MalformedRequest(_) => write!(f, "Malformed request."),
35 Errors::NoAccAssociatedCookies(_) => write!(f, "No game account associated with cookies"),
36 Errors::TooManyRequests(_) => write!(f, "Cannot get data for more than 30 accounts per cookie per day."),
37 Errors::DataNotPublic(_) => write!(f, "User's data is not public."),
38 Errors::InternalDatabaseError(_) => write!(f, "Internal database error."),
39 Errors::AccountNotFound(_) => write!(f, "Couldn't find the account."),
40 Errors::RedemptionInvalid(_) => write!(f, "Invalid redemption code."),
41 Errors::RedemptionCooldown(_) => write!(f, "Redemption is on cooldown."),
42 Errors::RedemptionClaimed(_) => write!(f, "Redemption code has been claimed already."),
43 Errors::AlreadyClaimed(_) => write!(f, "Already claimed the daily reward today."),
44 Errors::AccountLoginFail(_) => write!(f, "Account login failed."),
45 Errors::AccountHasLocked(_) => write!(f, "Account has been locked because exceeded password limit. Please wait 20mins and try again."),
46 }
47 }
48}
49
50
51trait BaseError {}
52
53#[derive(Debug)]
54pub struct InvalidCookies;
55impl BaseError for InvalidCookies {}
56
57#[derive(Debug)]
58pub struct InvalidLanguage;
59impl BaseError for InvalidLanguage {}
60
61#[derive(Debug)]
62pub struct VisitsTooFrequently;
63impl BaseError for VisitsTooFrequently {}
64
65#[derive(Debug)]
66pub struct MalformedRequest;
67impl BaseError for MalformedRequest {}
68
69#[derive(Debug)]
70pub struct NoAccAssociatedCookies;
71impl BaseError for NoAccAssociatedCookies {}
72
73#[derive(Debug)]
74pub struct TooManyRequests;
75impl BaseError for TooManyRequests {}
76
77#[derive(Debug)]
78pub struct DataNotPublic;
79impl BaseError for DataNotPublic {}
80
81#[derive(Debug)]
82pub struct InternalDatabaseError;
83impl BaseError for InternalDatabaseError {}
84
85#[derive(Debug)]
86pub struct AccountNotFound;
87impl BaseError for AccountNotFound {}
88
89#[derive(Debug)]
90pub struct RedemptionInvalid;
91impl BaseError for RedemptionInvalid {}
92
93#[derive(Debug)]
94pub struct RedemptionCooldown;
95impl BaseError for RedemptionCooldown {}
96
97#[derive(Debug)]
98pub struct RedemptionClaimed;
99impl BaseError for RedemptionClaimed {}
100
101#[derive(Debug)]
102pub struct AlreadyClaimed;
103impl BaseError for AlreadyClaimed {}
104
105#[derive(Debug)]
106pub struct AccountLoginFail;
107impl BaseError for AccountLoginFail {}
108
109#[derive(Debug)]
110pub struct AccountHasLocked;
111impl BaseError for AccountHasLocked {}
112
113
114static ERRORS: Lazy<Vec<(i16, Errors)>> = Lazy::new(|| {
115 vec![
116 (-100, Errors::InvalidCookies(InvalidCookies {})),
117 (-108, Errors::InvalidLanguage(InvalidLanguage {})),
118 (-110, Errors::VisitsTooFrequently(VisitsTooFrequently {})),
119
120 (10001, Errors::InvalidCookies(InvalidCookies {})),
121 (-10001, Errors::MalformedRequest(MalformedRequest {})),
122 (-10002, Errors::NoAccAssociatedCookies(NoAccAssociatedCookies {})),
123
124 (10101, Errors::TooManyRequests(TooManyRequests {})),
125 (10102, Errors::DataNotPublic(DataNotPublic {})),
126 ]
151});
152
153
154