cdumay_http_client 0.3.2

A library to call remote web application
Documentation
use base64::prelude::*;
use reqwest::header::{AUTHORIZATION, HeaderName, HeaderValue};

use crate::authentication::Authentication;

#[derive(Debug)]
pub struct BasicAuth {
    username: String,
    password: Option<String>,
}


impl BasicAuth {
    pub fn new(username: String, password: Option<String>) -> BasicAuth {
        BasicAuth {
            username,
            password,
        }
    }
}

impl Authentication for BasicAuth {
    fn username(&self) -> Option<String> { Some(self.username.clone()) }
    fn password(&self) -> Option<String> { self.password.clone() }
    fn as_header(&self) -> Option<(HeaderName, HeaderValue)> {
        let auth = match self.password() {
            Some(password) => format!("{}:{}", self.username, password),
            None => format!("{}:", self.username)
        };
        let header_value = format!("Basic {}", BASE64_STANDARD.encode(&auth));
        Some((AUTHORIZATION, HeaderValue::from_str(&*header_value).unwrap()))
    }
}