This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
use anyhow::{Context, Result};
|
||||
use reqwest::Client;
|
||||
|
||||
pub use dtrack_config::DtrackConfig;
|
||||
|
||||
/// Read-only Client fuer die Dependency-Track REST-API (v1).
|
||||
///
|
||||
/// Bewusst duenn: liefert die rohen JSON-Antworten als String zurueck. Das
|
||||
@@ -20,29 +22,25 @@ pub fn normalize_base(base: &str) -> String {
|
||||
}
|
||||
|
||||
impl DtrackClient {
|
||||
/// Baut den Client aus Umgebungsvariablen:
|
||||
/// - `DTRACK_URL`: Basis-URL der DT-Instanz (z.B. https://dtrack.firma.intern)
|
||||
/// - `DTRACK_API_KEY`: API-Key eines read-only Teams
|
||||
/// - `DTRACK_INSECURE`: optional "1"/"true" -> TLS-Pruefung aus (Notbehelf bei internem CA-Cert)
|
||||
pub fn from_env() -> Result<Self> {
|
||||
let base = std::env::var("DTRACK_URL").context("DTRACK_URL nicht gesetzt")?;
|
||||
let api_key = std::env::var("DTRACK_API_KEY").context("DTRACK_API_KEY nicht gesetzt")?;
|
||||
let insecure = std::env::var("DTRACK_INSECURE")
|
||||
.map(|v| v == "1" || v.eq_ignore_ascii_case("true"))
|
||||
.unwrap_or(false);
|
||||
|
||||
/// Baut den Client aus einer aufgeloesten [`DtrackConfig`].
|
||||
pub fn from_config(cfg: &DtrackConfig) -> Result<Self> {
|
||||
let http = Client::builder()
|
||||
.danger_accept_invalid_certs(insecure)
|
||||
.danger_accept_invalid_certs(cfg.insecure)
|
||||
.build()
|
||||
.context("HTTP-Client konnte nicht erstellt werden")?;
|
||||
|
||||
Ok(Self {
|
||||
http,
|
||||
base_url: normalize_base(&base),
|
||||
api_key,
|
||||
base_url: normalize_base(&cfg.url),
|
||||
api_key: cfg.api_key.clone(),
|
||||
})
|
||||
}
|
||||
|
||||
/// Convenience: Config aus Umgebungsvariablen lesen und Client bauen.
|
||||
pub fn from_env() -> Result<Self> {
|
||||
Self::from_config(&DtrackConfig::from_env()?)
|
||||
}
|
||||
|
||||
async fn get(&self, path: &str) -> Result<String> {
|
||||
let url = format!("{}{}", self.base_url, path);
|
||||
let resp = self
|
||||
|
||||
Reference in New Issue
Block a user