diff --git a/src/services/downloader.rs b/src/services/downloader.rs index 6cad1f3..5eab47d 100644 --- a/src/services/downloader.rs +++ b/src/services/downloader.rs @@ -1,6 +1,7 @@ use std::fmt; use base64::{engine::general_purpose, Engine}; +use once_cell::sync::Lazy; use reqwest::StatusCode; use smartstring::alias::String as SmartString; use tempfile::SpooledTempFile; @@ -10,6 +11,8 @@ use crate::config; use super::utils::response_to_tempfile; +pub static CLIENT: Lazy = Lazy::new(reqwest::Client::new); + #[derive(Debug, Clone)] struct DownloadError { status_code: StatusCode, @@ -27,7 +30,7 @@ pub async fn download( book_id: u64, file_type: SmartString, ) -> Result<(SpooledTempFile, String), Box> { - let mut response = reqwest::Client::new() + let mut response = CLIENT .get(format!( "{}/api/v1/download/{book_id}/{file_type}/", &config::CONFIG.cache_url diff --git a/src/services/library_client.rs b/src/services/library_client.rs index f5dbcb8..7465483 100644 --- a/src/services/library_client.rs +++ b/src/services/library_client.rs @@ -1,3 +1,4 @@ +use once_cell::sync::Lazy; use serde::{de::DeserializeOwned, Deserialize}; use smallvec::SmallVec; use smartstring::alias::String as SmartString; @@ -5,6 +6,7 @@ use tracing::log; use crate::config; +pub static CLIENT: Lazy = Lazy::new(reqwest::Client::new); const PAGE_SIZE: &str = "50"; fn get_allowed_langs_params( @@ -23,7 +25,7 @@ async fn _make_request( where T: DeserializeOwned, { - let response = reqwest::Client::new() + let response = CLIENT .get(format!("{}{}", &config::CONFIG.library_url, url)) .query(¶ms) .header("Authorization", &config::CONFIG.library_api_key) diff --git a/src/services/utils.rs b/src/services/utils.rs index 8b3ef58..76d842d 100644 --- a/src/services/utils.rs +++ b/src/services/utils.rs @@ -46,12 +46,7 @@ pub async fn response_to_tempfile( data_size += data.len(); - match tmp_file.write(data.chunk()) { - Ok(_) => (), - Err(err) => { - return Err(Box::new(err)); - } - } + tmp_file.write_all(data.chunk())?; } tmp_file.seek(SeekFrom::Start(0)).unwrap();