diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2022-12-13 02:52:10 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-12 20:52:10 -0500 |
commit | 8c026dab92b20fea44bc66f84db48b885c7264d1 (patch) | |
tree | 884704fb4721c9e227859451e58f524ace0a2261 /cli/npm/registry.rs | |
parent | 4a17c930882c5765e5fdedb50b6493469f61e32d (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.rs | 43 |
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), } } |