From 886029f908a3ed6c4b6884410c28b5e7bb108d62 Mon Sep 17 00:00:00 2001 From: m00nwtchr Date: Thu, 29 Feb 2024 16:55:04 +0100 Subject: [PATCH 1/4] cookie store --- plugins/http/src/commands.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/plugins/http/src/commands.rs b/plugins/http/src/commands.rs index d4b2469bf3..ad616f583c 100644 --- a/plugins/http/src/commands.rs +++ b/plugins/http/src/commands.rs @@ -190,6 +190,11 @@ pub async fn fetch( builder = attach_proxy(proxy_config, builder)?; } + #[cfg(feature = "cookies")] + { + builder = builder.cookie_store(true); + } + let mut request = builder.build()?.request(method.clone(), url); for (name, value) in &headers { From 43d7e1be2c0a19feca241698e68487ad7c3208a8 Mon Sep 17 00:00:00 2001 From: m00nwtchr Date: Thu, 29 Feb 2024 17:24:39 +0100 Subject: [PATCH 2/4] store cookie jar in app state --- plugins/http/src/commands.rs | 2 +- plugins/http/src/lib.rs | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/plugins/http/src/commands.rs b/plugins/http/src/commands.rs index ad616f583c..a72973c050 100644 --- a/plugins/http/src/commands.rs +++ b/plugins/http/src/commands.rs @@ -192,7 +192,7 @@ pub async fn fetch( #[cfg(feature = "cookies")] { - builder = builder.cookie_store(true); + builder = builder.cookie_provider(app.http().jar.clone()); } let mut request = builder.build()?.request(method.clone(), url); diff --git a/plugins/http/src/lib.rs b/plugins/http/src/lib.rs index e4aa7ba1e4..2699cce3df 100644 --- a/plugins/http/src/lib.rs +++ b/plugins/http/src/lib.rs @@ -6,6 +6,8 @@ //! //! Access the HTTP client written in Rust. +#[cfg(feature = "cookies")] +use std::sync::Arc; pub use reqwest; use tauri::{ plugin::{Builder, TauriPlugin}, @@ -21,6 +23,8 @@ mod scope; struct Http { #[allow(dead_code)] app: AppHandle, + #[cfg(feature = "cookies")] + jar: Arc } trait HttpExt { @@ -43,7 +47,11 @@ pub fn init() -> TauriPlugin { commands::fetch_read_body, ]) .setup(|app, _api| { - app.manage(Http { app: app.clone() }); + app.manage(Http { + app: app.clone(), + #[cfg(feature = "cookies")] + jar: Arc::new(reqwest::cookie::Jar::default()), + }); Ok(()) }) .build() From 9d5ced209e5ca94f986032abe7ba9bbea1174c2a Mon Sep 17 00:00:00 2001 From: m00nwtchr Date: Fri, 1 Mar 2024 05:55:19 +0100 Subject: [PATCH 3/4] httpext --- plugins/http/src/commands.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/plugins/http/src/commands.rs b/plugins/http/src/commands.rs index a72973c050..2f35723544 100644 --- a/plugins/http/src/commands.rs +++ b/plugins/http/src/commands.rs @@ -14,10 +14,7 @@ use tauri::{ AppHandle, Manager, ResourceId, Runtime, }; -use crate::{ - scope::{Entry, Scope}, - Error, Result, -}; +use crate::{scope::{Entry, Scope}, Error, Result, HttpExt}; struct ReqwestResponse(reqwest::Response); From 4d5ba820d1f81dcd41352ef50b19c3bdd0fa452c Mon Sep 17 00:00:00 2001 From: m00nwtchr Date: Fri, 1 Mar 2024 06:47:57 +0100 Subject: [PATCH 4/4] add store plugin --- Cargo.lock | 3 ++- plugins/http/Cargo.toml | 3 ++- plugins/http/src/lib.rs | 6 ++++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 13b1616970..04e93d55e2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6575,6 +6575,7 @@ dependencies = [ "tauri", "tauri-plugin", "tauri-plugin-fs", + "tauri-plugin-store", "thiserror", "url", ] @@ -6723,7 +6724,7 @@ dependencies = [ [[package]] name = "tauri-plugin-single-instance" -version = "2.0.0-beta.1" +version = "2.0.0-beta.2" dependencies = [ "log", "serde", diff --git a/plugins/http/Cargo.toml b/plugins/http/Cargo.toml index 3b06c2a2fa..875f1c24a2 100644 --- a/plugins/http/Cargo.toml +++ b/plugins/http/Cargo.toml @@ -30,6 +30,7 @@ http = "0.2" reqwest = { version = "0.11", default-features = false } url = { workspace = true } data-url = "0.3" +tauri-plugin-store = { path = "../store", version = "2.0.0-beta.1", optional = true } [features] multipart = [ "reqwest/multipart" ] @@ -44,7 +45,7 @@ rustls-tls-manual-roots = [ "reqwest/rustls-tls-manual-roots" ] rustls-tls-webpki-roots = [ "reqwest/rustls-tls-webpki-roots" ] rustls-tls-native-roots = [ "reqwest/rustls-tls-native-roots" ] blocking = [ "reqwest/blocking" ] -cookies = [ "reqwest/cookies" ] +cookies = [ "reqwest/cookies", "tauri-plugin-store" ] gzip = [ "reqwest/gzip" ] brotli = [ "reqwest/brotli" ] deflate = [ "reqwest/deflate" ] diff --git a/plugins/http/src/lib.rs b/plugins/http/src/lib.rs index 2699cce3df..d750f58e5e 100644 --- a/plugins/http/src/lib.rs +++ b/plugins/http/src/lib.rs @@ -8,6 +8,9 @@ #[cfg(feature = "cookies")] use std::sync::Arc; +#[cfg(feature = "cookies")] +use tauri_plugin_store::StoreBuilder; + pub use reqwest; use tauri::{ plugin::{Builder, TauriPlugin}, @@ -47,6 +50,9 @@ pub fn init() -> TauriPlugin { commands::fetch_read_body, ]) .setup(|app, _api| { + #[cfg(feature = "cookies")] + let mut store = StoreBuilder::new("http/cookies.bin".parse()?).build(app); + app.manage(Http { app: app.clone(), #[cfg(feature = "cookies")]