http_authentication/
challenge.rs

1//
2#[derive(Debug, Clone)]
3pub enum Challenge {
4    #[cfg(feature = "scheme-basic")]
5    Basic(crate::schemes::basic::Challenge),
6    #[cfg(feature = "scheme-bearer")]
7    Bearer(crate::schemes::bearer::Challenge),
8}
9
10impl Challenge {
11    //
12    #[cfg(feature = "scheme-basic")]
13    pub fn basic(challenge: crate::schemes::basic::Challenge) -> Self {
14        Self::Basic(challenge)
15    }
16
17    #[cfg(feature = "scheme-basic")]
18    pub fn as_basic(&self) -> Option<&crate::schemes::basic::Challenge> {
19        match self {
20            Self::Basic(c) => Some(c),
21            #[allow(unreachable_patterns)]
22            _ => None,
23        }
24    }
25
26    //
27    #[cfg(feature = "scheme-bearer")]
28    pub fn bearer(challenge: crate::schemes::bearer::Challenge) -> Self {
29        Self::Bearer(challenge)
30    }
31
32    #[cfg(feature = "scheme-bearer")]
33    pub fn as_bearer(&self) -> Option<&crate::schemes::bearer::Challenge> {
34        match self {
35            Self::Bearer(c) => Some(c),
36            #[allow(unreachable_patterns)]
37            _ => None,
38        }
39    }
40}
41
42#[cfg(feature = "scheme-basic")]
43impl From<crate::schemes::basic::Challenge> for Challenge {
44    fn from(c: crate::schemes::basic::Challenge) -> Self {
45        Self::basic(c)
46    }
47}
48
49#[cfg(feature = "scheme-bearer")]
50impl From<crate::schemes::bearer::Challenge> for Challenge {
51    fn from(c: crate::schemes::bearer::Challenge) -> Self {
52        Self::bearer(c)
53    }
54}
55
56//
57#[allow(unused_variables)]
58impl core::fmt::Display for Challenge {
59    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
60        match self {
61            #[cfg(feature = "scheme-basic")]
62            Self::Basic(c) => c.fmt(f),
63            #[cfg(feature = "scheme-bearer")]
64            Self::Bearer(c) => c.fmt(f),
65            #[allow(unreachable_patterns)]
66            _ => unimplemented!(),
67        }
68    }
69}