1#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
12pub struct Otp {
13 #[serde(rename = "status")]
14 pub status: Status,
15 #[serde(rename = "strategy")]
16 pub strategy: Strategy,
17 #[serde(rename = "attempts")]
18 pub attempts: i64,
19 #[serde(rename = "expire_at")]
20 pub expire_at: i64,
21}
22
23impl Otp {
24 pub fn new(status: Status, strategy: Strategy, attempts: i64, expire_at: i64) -> Otp {
25 Otp {
26 status,
27 strategy,
28 attempts,
29 expire_at,
30 }
31 }
32}
33
34#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
36pub enum Status {
37 #[serde(rename = "unverified")]
38 Unverified,
39 #[serde(rename = "verified")]
40 Verified,
41 #[serde(rename = "failed")]
42 Failed,
43 #[serde(rename = "expired")]
44 Expired,
45}
46
47impl Default for Status {
48 fn default() -> Status {
49 Self::Unverified
50 }
51}
52#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
54pub enum Strategy {
55 #[serde(rename = "phone_code")]
56 PhoneCode,
57 #[serde(rename = "email_code")]
58 EmailCode,
59}
60
61impl Default for Strategy {
62 fn default() -> Strategy {
63 Self::PhoneCode
64 }
65}