http_authentication/
challenge.rs1#[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 #[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 #[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#[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}