Skip to main content

alibi_core/wire/
verification.rs

1use crate::AuthVerification;
2use chrono::{DateTime, Utc};
3use serde::{Deserialize, Serialize};
4use std::borrow::Cow;
5/// Public verification response shape.
6#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
7pub struct VerificationView {
8    pub id: String,
9    pub identifier: String,
10    pub value: String,
11    #[serde(rename = "expiresAt")]
12    #[serde(serialize_with = "crate::utils::datetime::serialize")]
13    pub expires_at: DateTime<Utc>,
14    #[serde(rename = "createdAt")]
15    #[serde(serialize_with = "crate::utils::datetime::serialize")]
16    pub created_at: DateTime<Utc>,
17    #[serde(rename = "updatedAt")]
18    #[serde(serialize_with = "crate::utils::datetime::serialize")]
19    pub updated_at: DateTime<Utc>,
20}
21
22impl<T: AuthVerification> From<&T> for VerificationView {
23    fn from(verification: &T) -> Self {
24        Self {
25            id: verification.id().into_owned(),
26            identifier: verification.identifier().to_owned(),
27            value: verification.value().to_owned(),
28            expires_at: verification.expires_at(),
29            created_at: verification.created_at(),
30            updated_at: verification.updated_at(),
31        }
32    }
33}
34
35impl AuthVerification for VerificationView {
36    fn id(&self) -> Cow<'_, str> {
37        Cow::Borrowed(&self.id)
38    }
39    fn identifier(&self) -> &str {
40        &self.identifier
41    }
42    fn value(&self) -> &str {
43        &self.value
44    }
45    fn expires_at(&self) -> DateTime<Utc> {
46        self.expires_at
47    }
48    fn created_at(&self) -> DateTime<Utc> {
49        self.created_at
50    }
51    fn updated_at(&self) -> DateTime<Utc> {
52        self.updated_at
53    }
54}