scouter-settings 0.5.6

Client and server contract for scouter
Documentation
use pyo3::prelude::*;
use scouter_types::TransportType;

#[pyclass]
#[derive(Debug, Clone)]
pub struct HTTPConfig {
    #[pyo3(get, set)]
    pub server_uri: String,

    #[pyo3(get, set)]
    pub username: String,

    #[pyo3(get, set)]
    pub password: String,

    #[pyo3(get, set)]
    pub auth_token: String,

    #[pyo3(get)]
    pub transport_type: TransportType,
}

#[pymethods]
impl HTTPConfig {
    #[new]
    #[pyo3(signature = (server_uri=None, username=None, password=None, auth_token=None))]
    pub fn new(
        server_uri: Option<String>,
        username: Option<String>,
        password: Option<String>,
        auth_token: Option<String>,
    ) -> Self {
        let server_uri = server_uri.unwrap_or_else(|| {
            std::env::var("SCOUTER_SERVER_URI")
                .unwrap_or_else(|_| "http://localhost:8000".to_string())
        });
        let username = username.unwrap_or_else(|| {
            std::env::var("SCOUTER_USERNAME").unwrap_or_else(|_| "admin".to_string())
        });
        let password = password.unwrap_or_else(|| {
            std::env::var("SCOUTER_PASSWORD").unwrap_or_else(|_| "admin".to_string())
        });
        let auth_token = auth_token.unwrap_or_else(|| {
            std::env::var("SCOUTER_AUTH_TOKEN").unwrap_or_else(|_| "".to_string())
        });

        HTTPConfig {
            server_uri,
            username,
            password,
            auth_token,
            transport_type: TransportType::Http,
        }
    }
}

impl Default for HTTPConfig {
    fn default() -> Self {
        HTTPConfig {
            server_uri: std::env::var("SCOUTER_SERVER_URI")
                .unwrap_or_else(|_| "http://localhost:8000".to_string()),
            username: std::env::var("SCOUTER_USERNAME").unwrap_or_else(|_| "guest".to_string()),
            password: std::env::var("SCOUTER_PASSWORD").unwrap_or_else(|_| "guest".to_string()),
            auth_token: std::env::var("SCOUTER_AUTH_TOKEN").unwrap_or_else(|_| "".to_string()),
            transport_type: TransportType::Http,
        }
    }
}