From ec0bff1e36d966ecdd6b9a0e833166617dcb067c Mon Sep 17 00:00:00 2001 From: Kevin Yue Date: Wed, 24 May 2023 10:02:29 +0800 Subject: [PATCH] refactor: add gpauth --- Cargo.lock | 8 ++++++++ Cargo.toml | 1 + gpauth/Cargo.toml | 10 ++++++++++ gpauth/src/lib.rs | 14 ++++++++++++++ gpauth/src/main.rs | 45 +++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 78 insertions(+) create mode 100644 gpauth/Cargo.toml create mode 100644 gpauth/src/lib.rs create mode 100644 gpauth/src/main.rs diff --git a/Cargo.lock b/Cargo.lock index 98ad454..2d0f247 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1089,6 +1089,14 @@ dependencies = [ "system-deps 6.0.3", ] +[[package]] +name = "gpauth" +version = "0.1.0" +dependencies = [ + "webkit2gtk", + "wry", +] + [[package]] name = "gpclient" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index c7c15b8..9fda31e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,6 +4,7 @@ members = [ "common", "gpclient", "gpservice", + "gpauth", "gpgui/src-tauri" ] diff --git a/gpauth/Cargo.toml b/gpauth/Cargo.toml new file mode 100644 index 0000000..197e179 --- /dev/null +++ b/gpauth/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "gpauth" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +wry = "0.24.3" +webkit2gtk = "0.18.2" diff --git a/gpauth/src/lib.rs b/gpauth/src/lib.rs new file mode 100644 index 0000000..7d12d9a --- /dev/null +++ b/gpauth/src/lib.rs @@ -0,0 +1,14 @@ +pub fn add(left: usize, right: usize) -> usize { + left + right +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn it_works() { + let result = add(2, 2); + assert_eq!(result, 4); + } +} diff --git a/gpauth/src/main.rs b/gpauth/src/main.rs new file mode 100644 index 0000000..6b10091 --- /dev/null +++ b/gpauth/src/main.rs @@ -0,0 +1,45 @@ +use webkit2gtk::LoadEvent; +use webkit2gtk::URIResponseExt; +use webkit2gtk::WebResourceExt; +use webkit2gtk::WebViewExt; +use wry::application::event::Event; +use wry::application::event::StartCause; +use wry::application::event::WindowEvent; +use wry::application::event_loop::ControlFlow; +use wry::application::event_loop::EventLoop; +use wry::application::window::WindowBuilder; +use wry::webview::WebViewBuilder; +use wry::webview::WebviewExtUnix; + +fn main() -> wry::Result<()> { + let event_loop = EventLoop::new(); + let window = WindowBuilder::new() + .with_title("Hello World") + .build(&event_loop)?; + let _webview = WebViewBuilder::new(window)? + .with_url("https://tauri.studio")? + .build()?; + + let wv = _webview.webview(); + wv.connect_load_changed(|wv, load_event| { + if load_event == LoadEvent::Finished { + let response = wv.main_resource().unwrap().response().unwrap(); + response.http_headers().unwrap().foreach(|k, v| { + println!("{}: {}", k, v); + }); + } + }); + + event_loop.run(move |event, _, control_flow| { + *control_flow = ControlFlow::Wait; + + match event { + Event::NewEvents(StartCause::Init) => println!("Wry has started!"), + Event::WindowEvent { + event: WindowEvent::CloseRequested, + .. + } => *control_flow = ControlFlow::Exit, + _ => (), + } + }); +}