summaryrefslogtreecommitdiff
path: root/cli/npm/registry.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2022-12-13 02:52:10 +0100
committerGitHub <noreply@github.com>2022-12-12 20:52:10 -0500
commit8c026dab92b20fea44bc66f84db48b885c7264d1 (patch)
tree884704fb4721c9e227859451e58f524ace0a2261 /cli/npm/registry.rs
parent4a17c930882c5765e5fdedb50b6493469f61e32d (diff)
feat: improve download progress bar (#16984)
Co-authored-by: David Sherret <dsherret@gmail.com>
Diffstat (limited to 'cli/npm/registry.rs')
-rw-r--r--cli/npm/registry.rs43
1 files changed, 12 insertions, 31 deletions
diff --git a/cli/npm/registry.rs b/cli/npm/registry.rs
index 749a047ab..97d2a0e4d 100644
--- a/cli/npm/registry.rs
+++ b/cli/npm/registry.rs
@@ -439,38 +439,19 @@ impl RealNpmRegistryApiInner {
}
let package_url = self.get_package_url(name);
- let _guard = self.progress_bar.update(package_url.as_str());
-
- let response = match self.http_client.get(package_url).send().await {
- Ok(response) => response,
- Err(err) => {
- // attempt to use the local cache
- if let Some(info) = self.load_file_cached_package_info(name) {
- return Ok(Some(info));
- } else {
- return Err(err.into());
- }
+ let guard = self.progress_bar.update(package_url.as_str());
+
+ let maybe_bytes = self
+ .http_client
+ .download_with_progress(package_url, &guard)
+ .await?;
+ match maybe_bytes {
+ Some(bytes) => {
+ let package_info = serde_json::from_slice(&bytes)?;
+ self.save_package_info_to_file_cache(name, &package_info);
+ Ok(Some(package_info))
}
- };
-
- if response.status() == 404 {
- Ok(None)
- } else if !response.status().is_success() {
- let status = response.status();
- let maybe_response_text = response.text().await.ok();
- bail!(
- "Bad response: {:?}{}",
- status,
- match maybe_response_text {
- Some(text) => format!("\n\n{}", text),
- None => String::new(),
- }
- );
- } else {
- let bytes = response.bytes().await?;
- let package_info = serde_json::from_slice(&bytes)?;
- self.save_package_info_to_file_cache(name, &package_info);
- Ok(Some(package_info))
+ None => Ok(None),
}
}