Compare commits
No commits in common. "3c0f80ca0203e1919a887622ec376288afe5fa09" and "74cde73353dd5706ca4c88cfbab333a3e7eaa674" have entirely different histories.
3c0f80ca02
...
74cde73353
1640
Cargo.lock
generated
1640
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@ -8,16 +8,11 @@ edition = "2021"
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[build-dependencies]
|
||||
tauri-build = { version = "1", features = [] }
|
||||
tauri-build = { version = "2.0.0-beta", features = [] }
|
||||
|
||||
[dependencies]
|
||||
tauri = { version = "1", features = ["shell-open"] }
|
||||
tauri = { version = "2.0.0-beta", features = [] }
|
||||
tauri-plugin-shell = "2.0.0-beta"
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
serde_json = "1"
|
||||
axum = { version = "0.7.5", features = ["tokio", "http2"] }
|
||||
futures = "0.3.30"
|
||||
tower = "0.4.13"
|
||||
|
||||
[features]
|
||||
# This feature is used for production builds or when a dev server is not specified, DO NOT REMOVE!!
|
||||
custom-protocol = ["tauri/custom-protocol"]
|
||||
|
17
tauri/capabilities/default.json
Normal file
17
tauri/capabilities/default.json
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"$schema": "../gen/schemas/desktop-schema.json",
|
||||
"identifier": "default",
|
||||
"description": "Capability for the main window",
|
||||
"windows": ["main"],
|
||||
"permissions": [
|
||||
"path:default",
|
||||
"event:default",
|
||||
"window:default",
|
||||
"app:default",
|
||||
"image:default",
|
||||
"resources:default",
|
||||
"menu:default",
|
||||
"tray:default",
|
||||
"shell:allow-open"
|
||||
]
|
||||
}
|
@ -1,99 +1,16 @@
|
||||
// Prevents additional console window on Windows in release, DO NOT REMOVE!!
|
||||
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
|
||||
|
||||
use futures::executor::block_on;
|
||||
|
||||
use axum::{
|
||||
Router as AxumRouter,
|
||||
routing::get as AxumGetter,
|
||||
http::Request as AxumRequest,
|
||||
http::Response as AxumResponse,
|
||||
body::{ Body as AxumBody, to_bytes },
|
||||
http::{StatusCode, Uri},
|
||||
// extract::Path as AxumPath,
|
||||
// body::Bytes as AxumBytes,
|
||||
// response::IntoResponse,
|
||||
};
|
||||
use tauri::http::ResponseBuilder;
|
||||
use tower::{Service, ServiceExt};
|
||||
|
||||
// Learn more about Tauri commands at https://tauri.app/v1/guides/features/command
|
||||
#[tauri::command]
|
||||
fn greet(name: &str) -> String {
|
||||
format!("Hello, {}! You've been greeted from Rust!", name)
|
||||
}
|
||||
|
||||
|
||||
async fn test() -> &'static str {
|
||||
println!("test method called");
|
||||
"Path: /test"
|
||||
}
|
||||
|
||||
async fn root() -> &'static str {
|
||||
println!("root method called");
|
||||
"Path: /"
|
||||
}
|
||||
|
||||
async fn fallback(uri: Uri) -> (StatusCode, String) {
|
||||
println!("fallback method called on uri: {}", uri);
|
||||
(StatusCode::NOT_FOUND, format!("No route for {uri}"))
|
||||
}
|
||||
|
||||
async fn build_response(router: &mut AxumRouter<()>, path: &str) -> AxumResponse<AxumBody> {
|
||||
let path = path.replace("clego://", "http://0.0.0.0/");
|
||||
println!("build_response: path = {:?}", path);
|
||||
|
||||
let request = AxumRequest::builder()
|
||||
.method("GET")
|
||||
.uri(path)
|
||||
.body(AxumBody::empty())
|
||||
.unwrap();
|
||||
|
||||
println!("build_response: request = {:#?}", request);
|
||||
|
||||
let response = router
|
||||
.as_service()
|
||||
.ready()
|
||||
.await
|
||||
.unwrap()
|
||||
.call(request)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
println!("build_response: response = {:?}", response);
|
||||
|
||||
response
|
||||
}
|
||||
|
||||
fn main() {
|
||||
tauri::Builder::default()
|
||||
.plugin(tauri_plugin_shell::init())
|
||||
.invoke_handler(tauri::generate_handler![greet])
|
||||
.register_uri_scheme_protocol("clego", move |_app, request| {
|
||||
println!("------ register_uri_scheme_protocol ------");
|
||||
|
||||
let mut router: AxumRouter<_> = AxumRouter::new()
|
||||
.route("/test/", AxumGetter(test))
|
||||
.route("/", AxumGetter(root))
|
||||
.fallback(fallback);
|
||||
|
||||
let path = request.uri();
|
||||
println!("register_uri_scheme_protocol: path = {:?}", path);
|
||||
let future = build_response(&mut router, path);
|
||||
let response: AxumResponse<AxumBody> = block_on(future);
|
||||
// extract body and headers from response
|
||||
let (parts, body) = response.into_parts();
|
||||
|
||||
println!("register_uri_scheme_protocol: body = {:?} ; parts {:?}", body, parts);
|
||||
|
||||
// Convert body into a Vec<u8>
|
||||
let body_bytes = block_on(to_bytes(body, usize::MAX))?;
|
||||
|
||||
// Build a tauri response from the axum response
|
||||
ResponseBuilder::new()
|
||||
.status(parts.status.as_u16())
|
||||
.mimetype("text/html")
|
||||
.body(body_bytes.to_vec())
|
||||
})
|
||||
.run(tauri::generate_context!())
|
||||
.expect("error while running tauri application");
|
||||
}
|
||||
|
@ -1,21 +1,12 @@
|
||||
{
|
||||
"build": {
|
||||
"devPath": "../webapp",
|
||||
"distDir": "../webapp",
|
||||
"withGlobalTauri": true
|
||||
},
|
||||
"package": {
|
||||
"productName": "tauri",
|
||||
"version": "0.0.0"
|
||||
},
|
||||
"tauri": {
|
||||
"allowlist": {
|
||||
"all": false,
|
||||
"shell": {
|
||||
"all": false,
|
||||
"open": true
|
||||
}
|
||||
"version": "0.0.0",
|
||||
"identifier": "org.p4pillon.krys4lide",
|
||||
"build": {
|
||||
"frontendDist": "../webapp"
|
||||
},
|
||||
"app": {
|
||||
"withGlobalTauri": true,
|
||||
"windows": [
|
||||
{
|
||||
"title": "tauri",
|
||||
@ -25,11 +16,11 @@
|
||||
],
|
||||
"security": {
|
||||
"csp": null
|
||||
}
|
||||
},
|
||||
"bundle": {
|
||||
"active": true,
|
||||
"targets": "all",
|
||||
"identifier": "org.p4pillon.krys4lide",
|
||||
"icon": [
|
||||
"icons/32x32.png",
|
||||
"icons/128x128.png",
|
||||
@ -38,5 +29,4 @@
|
||||
"icons/icon.ico"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -36,10 +36,6 @@
|
||||
</form>
|
||||
|
||||
<p id="greet-msg"></p>
|
||||
|
||||
<a href="clego://test">Test `clego://test` uri scheme handler</a>
|
||||
<a href="clego://walala">Test `clego://walala` uri scheme handler</a>
|
||||
<a href="https://clego.localhost/test">Test `https://clego.localhost/test` uri scheme handler</a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
Loading…
Reference in New Issue
Block a user