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
33
34
35
36
37
38
39
use crate::core::engine::Engine;
use crate::http::path::Path;
use serde_json::{Value, Result};

pub struct BasicAuth <'a> {
    pub engine: &'a mut Engine,
    pub username: String,
    pub password: String,
}
impl <'a> BasicAuth <'a> {
    pub fn new(engine: &'a mut Engine) -> Self {
        BasicAuth {
            engine: engine,
            username: "".to_owned(),
            password: "".to_owned(),
        }
    }

    pub fn username(&mut self, username: String) -> &mut Self {
        self.username = username;

        self
    }

    pub fn password(&mut self, password: String) -> &mut Self {
        self.password = password;

        self
    }

    pub fn auth(&mut self) -> Result<Value> {
        let path = Path::new().slash(&"users".to_owned()).slash(&self.username).ok();

        self.engine.engine.username(&self.username).unwrap();
        self.engine.engine.password(&self.password).unwrap();

        self.engine.get(&path)
    }
}