diff --git a/src/providers/missav.rs b/src/providers/missav.rs index d658755..cd47533 100644 --- a/src/providers/missav.rs +++ b/src/providers/missav.rs @@ -40,7 +40,7 @@ impl MissavProvider { // Extract needed fields from options at the start let language = options.language.clone().unwrap(); let filter = options.filter.clone().unwrap(); - let requester = options.requester.clone().unwrap(); + let mut requester = options.requester.clone().unwrap(); let url_str = format!("{}/{}/{}?page={}&sort={}", self.url, language, filter, page, sort); @@ -74,7 +74,7 @@ impl MissavProvider { // Extract needed fields from options at the start let language = options.language.clone().unwrap(); let filter = options.filter.clone().unwrap(); - let requester = options.requester.clone().unwrap(); + let mut requester = options.requester.clone().unwrap(); let search_string = query.replace(" ", "%20"); let url_str = format!( "{}/{}/search/{}?page={}&sort={}", @@ -139,7 +139,7 @@ impl MissavProvider { return video_items; } - async fn get_video_item(&self, url_str: String, pool: DbPool, requester: Requester) -> Result { + async fn get_video_item(&self, url_str: String, pool: DbPool, mut requester: Requester) -> Result { let mut conn = pool.get().expect("couldn't get db connection from pool"); let db_result = db::get_video(&mut conn,url_str.clone()); match db_result { diff --git a/src/util/requester.rs b/src/util/requester.rs index cf0b67e..6512bde 100644 --- a/src/util/requester.rs +++ b/src/util/requester.rs @@ -19,7 +19,7 @@ pub struct Requester { impl Requester { pub fn new() -> Self { - let client = Client::builder() + let mut client = Client::builder() .cert_verification(false) .emulation(Emulation::Firefox136) .cookie_store(true) @@ -54,7 +54,7 @@ impl Requester { } } - pub async fn get(&self, url: &str) -> Result> { + pub async fn get(&mut self, url: &str) -> Result> { let mut request = self.client.get(url).version(Version::HTTP_11); let mut proxy; if self.proxy { @@ -83,12 +83,14 @@ impl Requester { .await; match result { Ok(res) => { - self.client.update() - .headers(|headers| { - headers.insert("Cookie", HeaderValue::from_str("").unwrap()); - }) - .apply() - .unwrap(); + let cookie_url = url.split("/").collect::>()[..3].join("/"); + self.client = Client::builder() + .cert_verification(false) + .emulation(Emulation::Firefox136) + .cookie_store(true) + .redirect(Policy::default()) + .build() + .expect("Failed to create HTTP client"); let useragent = res.solution.userAgent; self.client.update() .headers(|headers| { @@ -99,7 +101,6 @@ impl Requester { for cookie in res.solution.cookies { let header = HeaderValue::from_str(&format!("{}={}", cookie.name, cookie.value)).unwrap(); // Parse the domain string into a Url - let cookie_url = url.split("/").collect::>()[..3].join("/"); if let Ok(url) = url::Url::parse(cookie_url.as_str()) { self.client.set_cookie(&url, header); }