This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
use anyhow::{Context, Result};
|
use anyhow::{Context, Result};
|
||||||
use reqwest::Client;
|
use reqwest::Client;
|
||||||
|
|
||||||
|
pub use dtrack_config::DtrackConfig;
|
||||||
|
|
||||||
/// Read-only Client fuer die Dependency-Track REST-API (v1).
|
/// Read-only Client fuer die Dependency-Track REST-API (v1).
|
||||||
///
|
///
|
||||||
/// Bewusst duenn: liefert die rohen JSON-Antworten als String zurueck. Das
|
/// Bewusst duenn: liefert die rohen JSON-Antworten als String zurueck. Das
|
||||||
@@ -20,29 +22,25 @@ pub fn normalize_base(base: &str) -> String {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl DtrackClient {
|
impl DtrackClient {
|
||||||
/// Baut den Client aus Umgebungsvariablen:
|
/// Baut den Client aus einer aufgeloesten [`DtrackConfig`].
|
||||||
/// - `DTRACK_URL`: Basis-URL der DT-Instanz (z.B. https://dtrack.firma.intern)
|
pub fn from_config(cfg: &DtrackConfig) -> Result<Self> {
|
||||||
/// - `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);
|
|
||||||
|
|
||||||
let http = Client::builder()
|
let http = Client::builder()
|
||||||
.danger_accept_invalid_certs(insecure)
|
.danger_accept_invalid_certs(cfg.insecure)
|
||||||
.build()
|
.build()
|
||||||
.context("HTTP-Client konnte nicht erstellt werden")?;
|
.context("HTTP-Client konnte nicht erstellt werden")?;
|
||||||
|
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
http,
|
http,
|
||||||
base_url: normalize_base(&base),
|
base_url: normalize_base(&cfg.url),
|
||||||
api_key,
|
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> {
|
async fn get(&self, path: &str) -> Result<String> {
|
||||||
let url = format!("{}{}", self.base_url, path);
|
let url = format!("{}{}", self.base_url, path);
|
||||||
let resp = self
|
let resp = self
|
||||||
|
|||||||
Reference in New Issue
Block a user