pub async fn fetch_repo_url(client: &reqwest::Client, name: &str) -> Option<String> {
let url = format!("https://crates.io/api/v1/crates/{name}");
let resp = client
.get(url)
.header(
"User-Agent",
"cargo-fresh (https://github.com/jenkinpan/cargo-fresh)",
)
.send()
.await
.ok()?;
if !resp.status().is_success() {
return None;
}
let text = resp.text().await.ok()?;
let body: serde_json::Value = serde_json::from_str(&text).ok()?;
body.get("crate")?
.get("repository")?
.as_str()
.map(|s| s.to_string())
}
#[cfg(test)]
mod tests {
}