From 5881ee36d2eba0e0cdf4e9bce1d2e713ac0b62a6 Mon Sep 17 00:00:00 2001 From: Lucas Nogueira Date: Sun, 16 Mar 2025 17:22:50 -0300 Subject: [PATCH] update example --- Cargo.lock | 1 + examples/api/src-tauri/Cargo.toml | 2 ++ examples/api/src-tauri/src/lib.rs | 17 ++++++++++++++++- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 9b6b0cbd..27d3ab3b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -233,6 +233,7 @@ dependencies = [ "tauri-plugin-store", "tauri-plugin-updater", "tauri-plugin-window-state", + "time", "tiny_http", ] diff --git a/examples/api/src-tauri/Cargo.toml b/examples/api/src-tauri/Cargo.toml index 3cc99d89..2ac0f70d 100644 --- a/examples/api/src-tauri/Cargo.toml +++ b/examples/api/src-tauri/Cargo.toml @@ -18,6 +18,7 @@ tauri-build = { workspace = true, features = ["codegen", "isolation"] } serde_json = { workspace = true } serde = { workspace = true } tiny_http = "0.12" +time = "0.3" log = { workspace = true } tauri-plugin-log = { path = "../../../plugins/log", version = "2.3.1" } tauri-plugin-fs = { path = "../../../plugins/fs", version = "2.2.0", features = [ @@ -27,6 +28,7 @@ tauri-plugin-clipboard-manager = { path = "../../../plugins/clipboard-manager", tauri-plugin-dialog = { path = "../../../plugins/dialog", version = "2.2.0" } tauri-plugin-http = { path = "../../../plugins/http", features = [ "multipart", + "cookies", ], version = "2.4.1" } tauri-plugin-notification = { path = "../../../plugins/notification", version = "2.2.2", features = [ "windows7-compat", diff --git a/examples/api/src-tauri/src/lib.rs b/examples/api/src-tauri/src/lib.rs index dc133799..80c07e16 100644 --- a/examples/api/src-tauri/src/lib.rs +++ b/examples/api/src-tauri/src/lib.rs @@ -102,9 +102,24 @@ pub fn run() { if let Ok(mut request) = server.recv() { let mut body = Vec::new(); let _ = request.as_reader().read_to_end(&mut body); + let mut headers = request.headers().to_vec(); + + if !headers.iter().any(|header| header.field == tiny_http::HeaderField::from_bytes(b"Cookie").unwrap()) { + let expires = time::OffsetDateTime::now_utc() + time::Duration::days(1); + let expires_str = expires.format(&time::format_description::well_known::Rfc2822).unwrap(); + headers.push( + tiny_http::Header::from_bytes( + &b"Set-Cookie"[..], + &format!("session-token=test-value; Secure; Path=/; Expires={expires_str}") + .as_bytes()[..], + ) + .unwrap(), + ); + } + let response = tiny_http::Response::new( tiny_http::StatusCode(200), - request.headers().to_vec(), + headers, std::io::Cursor::new(body), request.body_length(), None,