1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
#[derive(Debug)] pub enum Credentials { UserAuthKey { email: String, key: String }, UserAuthToken { token: String }, Service { key: String }, } impl Credentials { pub fn headers(&self) -> Vec<(&'static str, String)> { match self { Self::UserAuthKey { email, key } => { vec![("X-Auth-Email", email.clone()), ("X-Auth-Key", key.clone())] } Self::UserAuthToken { token } => { vec![("Authorization", format!("Bearer {}", token.clone()))] } Self::Service { key } => vec![("X-Auth-User-Service-Key", key.clone())], } } } pub trait AuthClient { fn auth(self, credentials: &Credentials) -> Self; }