Update lib usage to fix compiler errors

This commit is contained in:
Caelan Sayler
2025-02-02 16:29:02 +00:00
committed by Caelan
parent 023f3c6793
commit 55fbc17450
4 changed files with 19 additions and 14 deletions

View File

@@ -1,5 +1,5 @@
use anyhow::{anyhow, Result};
use rand::distributions::{Alphanumeric, DistString};
use rand::distr::{Alphanumeric, SampleString};
use regex::Regex;
use std::{path::Path, thread, time::Duration};
@@ -51,7 +51,7 @@ where
}
pub fn random_string(len: usize) -> String {
Alphanumeric.sample_string(&mut rand::thread_rng(), len)
Alphanumeric.sample_string(&mut rand::rng(), len)
}
pub fn is_error_permission_denied(e: &anyhow::Error) -> bool {

View File

@@ -1,7 +1,7 @@
#ifndef VELOPACK_H
#define VELOPACK_H
/* Generated with cbindgen:0.27.0 */
/* Generated with cbindgen:0.28.0 */
/* THIS FILE IS AUTO-GENERATED - DO NOT EDIT */

View File

@@ -1,22 +1,23 @@
use std::fs::File;
use std::io::{Read, Write};
use crate::{Error, util};
use crate::{util, Error};
/// Downloads a file from a URL and writes it to a file while reporting progress from 0-100.
pub fn download_url_to_file<A>(url: &str, file_path: &str, mut progress: A) -> Result<(), Error>
where A: FnMut(i16),
where
A: FnMut(i16),
{
let agent = get_download_agent()?;
let response = agent.get(url).call()?;
let (head, body) = agent.get(url).call()?.into_parts();
let total_size = response.header("Content-Length").and_then(|s| s.parse::<u64>().ok());
let total_size = head.headers.get("Content-Length").and_then(|s| s.to_str().ok()).and_then(|s| s.parse::<u64>().ok());
let mut file = util::retry_io(|| File::create(file_path))?;
const CHUNK_SIZE: usize = 2 * 1024 * 1024; // 2MB
let mut downloaded: u64 = 0;
let mut buffer = vec![0; CHUNK_SIZE];
let mut reader = response.into_reader();
let mut reader = body.into_reader();
let mut last_progress = 0;
@@ -43,7 +44,7 @@ pub fn download_url_to_file<A>(url: &str, file_path: &str, mut progress: A) -> R
/// Downloads a file from a URL and returns it as a string.
pub fn download_url_as_string(url: &str) -> Result<String, Error> {
let agent = get_download_agent()?;
let r = agent.get(url).call()?.into_string()?;
let r = agent.get(url).call()?.body_mut().read_to_string()?;
Ok(r)
}
@@ -51,12 +52,15 @@ fn get_download_agent() -> Result<ureq::Agent, Error> {
// let tls_builder = native_tls::TlsConnector::builder();
// let tls_connector = tls_builder.build()?;
// Ok(ureq::AgentBuilder::new().tls_connector(tls_connector.into()).build())
Ok(ureq::AgentBuilder::new().build())
Ok(ureq::Agent::config_builder().build().into())
}
#[test]
fn test_download_uses_tls_and_encoding_correctly() {
assert_eq!(download_url_as_string("https://dotnetcli.blob.core.windows.net/dotnet/WindowsDesktop/5.0/latest.version").unwrap(), "5.0.17");
assert_eq!(
download_url_as_string("https://dotnetcli.blob.core.windows.net/dotnet/WindowsDesktop/5.0/latest.version").unwrap(),
"5.0.17"
);
}
#[test]
@@ -70,7 +74,8 @@ fn test_download_file_reports_progress() {
assert!(p >= last_prog);
prog_count += 1;
last_prog = p;
}).unwrap();
})
.unwrap();
assert!(prog_count >= 4);
assert!(prog_count <= 20);

View File

@@ -1,5 +1,5 @@
use crate::Error;
use rand::distributions::{Alphanumeric, DistString};
use rand::distr::{Alphanumeric, SampleString};
use sha2::Digest;
use std::fs::File;
use std::path::Path;
@@ -39,7 +39,7 @@ where
}
pub fn random_string(len: usize) -> String {
Alphanumeric.sample_string(&mut rand::thread_rng(), len)
Alphanumeric.sample_string(&mut rand::rng(), len)
}
pub fn calculate_file_sha256<P: AsRef<Path>>(file: P) -> Result<String, Error> {