cloudflare/framework/
auth.rs1#[derive(Debug)]
2pub enum Credentials {
3 UserAuthKey { email: String, key: String },
4 UserAuthToken { token: String },
5 Service { key: String },
6}
7
8impl Credentials {
9 pub fn headers(&self) -> Vec<(&'static str, String)> {
10 match self {
11 Self::UserAuthKey { email, key } => {
12 vec![("X-Auth-Email", email.clone()), ("X-Auth-Key", key.clone())]
13 }
14 Self::UserAuthToken { token } => {
15 vec![("Authorization", format!("Bearer {}", token.clone()))]
16 }
17 Self::Service { key } => vec![("X-Auth-User-Service-Key", key.clone())],
18 }
19 }
20}
21
22pub trait AuthClient {
23 fn auth(self, credentials: &Credentials) -> Self;
24}
25
26impl AuthClient for surf::RequestBuilder {
27 fn auth(mut self, credentials: &Credentials) -> Self {
28 for (k, v) in credentials.headers() {
29 self = self.header(k, v);
30 }
31 self
32 }
33}