Unverified Commit a31f38ad authored by Vladimír Čunát's avatar Vladimír Čunát
Browse files

Revert "prefetch-npm-deps: check response status..." (#365658)

parents c7dcafcc 59c5ef55
Loading
Loading
Loading
Loading
+8 −24
Original line number Diff line number Diff line
use anyhow::bail;
use backoff::{retry, ExponentialBackoff};
use data_encoding::BASE64;
use digest::Digest;
@@ -6,7 +5,6 @@ use isahc::{
    config::{CaCertificate, Configurable, RedirectPolicy, SslOption},
    Body, Request, RequestExt,
};
use log::info;
use nix_nar::{Encoder, NarError};
use serde_json::{Map, Value};
use sha2::Sha256;
@@ -17,7 +15,7 @@ use std::{
};
use url::Url;

pub fn get_url(url: &Url) -> Result<Body, anyhow::Error> {
pub fn get_url(url: &Url) -> Result<Body, isahc::Error> {
    let mut request = Request::get(url.as_str()).redirect_policy(RedirectPolicy::Limit(10));

    // Respect SSL_CERT_FILE if environment variable exists
@@ -39,27 +37,16 @@ pub fn get_url(url: &Url) -> Result<Body, anyhow::Error> {
        if let Ok(npm_tokens) = env::var("NIX_NPM_TOKENS") {
            if let Ok(tokens) = serde_json::from_str::<Map<String, Value>>(&npm_tokens) {
                if let Some(token) = tokens.get(host).and_then(serde_json::Value::as_str) {
                    info!("Found NPM token for {}. Adding authorization header to request.", host);
                    request = request.header("Authorization", format!("Bearer {token}"));
                }
            }
        }
    }

    let res = request.body(())?.send()?;
    if !res.status().is_success() {
        if res.status().is_client_error() {
            bail!("Client error: {}", res.status());
        }
        if res.status().is_server_error() {
            bail!("Server error: {}", res.status());
        }
        bail!("{}", res.status());
    }
    Ok(res.into_body())
    Ok(request.body(())?.send()?.into_body())
}

pub fn get_url_body_with_retry(url: &Url) -> Result<Vec<u8>, anyhow::Error> {
pub fn get_url_body_with_retry(url: &Url) -> Result<Vec<u8>, isahc::Error> {
    retry(ExponentialBackoff::default(), || {
        get_url(url)
            .and_then(|mut body| {
@@ -69,15 +56,12 @@ pub fn get_url_body_with_retry(url: &Url) -> Result<Vec<u8>, anyhow::Error> {

                Ok(buf)
            })
            .map_err(|err| match err.downcast_ref::<isahc::Error>() {
                Some(isahc_err) => {
                    if isahc_err.is_network() || isahc_err.is_timeout() {
            .map_err(|err| {
                if err.is_network() || err.is_timeout() {
                    backoff::Error::transient(err)
                } else {
                    backoff::Error::permanent(err)
                }
                }
                None => backoff::Error::permanent(err),
            })
    })
    .map_err(|backoff_err| match backoff_err {