use base64::Engine;
use base64::engine::general_purpose::STANDARD;
use reqwest::Method;
use serde::Deserialize;
use crate::client::request;
use crate::swarm::Error;
use super::DebugApi;
#[derive(Clone, Debug, PartialEq, Eq, Deserialize)]
pub struct Logger {
pub logger: String,
pub verbosity: String,
pub subsystem: String,
pub id: String,
}
#[derive(Clone, Debug, PartialEq, Eq, Deserialize)]
pub struct LoggerListing {
#[serde(default)]
pub tree: serde_json::Value,
#[serde(default)]
pub loggers: Vec<Logger>,
}
impl DebugApi {
pub async fn loggers(&self) -> Result<LoggerListing, Error> {
let builder = request(&self.inner, Method::GET, "loggers")?;
self.inner.send_json(builder).await
}
pub async fn loggers_by_expression(&self, expression: &str) -> Result<LoggerListing, Error> {
let enc = STANDARD.encode(expression.as_bytes());
let path = format!("loggers/{enc}");
let builder = request(&self.inner, Method::GET, &path)?;
self.inner.send_json(builder).await
}
pub async fn set_logger_verbosity(&self, expression: &str) -> Result<(), Error> {
let enc = STANDARD.encode(expression.as_bytes());
let path = format!("loggers/{enc}");
let builder = request(&self.inner, Method::PUT, &path)?;
self.inner.send(builder).await?;
Ok(())
}
}