1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#[derive(Debug, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
pub enum Authentication {
    SessionToken(String),
    BotToken(String),
    ValidMfaTicket(String),
    UnvalidatedMfaTicket(String),
    None,
}

impl Authentication {
    pub fn header_key(&self) -> String {
        match self {
            Authentication::SessionToken(_) => "x-session-token",
            Authentication::BotToken(_) => "x-bot-token",
            Authentication::ValidMfaTicket(_) => "x-mfa-ticket",
            Authentication::UnvalidatedMfaTicket(_) => "x-mfa-ticket",
            Authentication::None => "",
        }
        .to_string()
    }

    pub fn value(&self) -> String {
        match self {
            Authentication::SessionToken(t) => t,
            Authentication::BotToken(t) => t,
            Authentication::ValidMfaTicket(t) => t,
            Authentication::UnvalidatedMfaTicket(t) => t,
            Authentication::None => "",
        }
        .to_string()
    }
}