Files
2024-09-16 07:21:06 -03:00

46 lines
1.4 KiB
Markdown

# Tauri Invoke HTTP
This is a crate that provides a custom invoke system for Tauri using a localhost server.
Each message is delivered through a `XMLHttpRequest` and the server is responsible for replying to it.
## Usage
First, add the dependency to your `src-tauri/Cargo.toml` file:
```
[dependencies]
tauri-invoke-http = "0.1"
```
Then, setup the HTTP invoke system on the `main.rs` file:
```rust
fn main() {
// initialize the custom invoke system as a HTTP server, allowing the given origins to access it.
let http = tauri_invoke_http::Invoke::new(if cfg!(feature = "custom-protocol") {
["tauri://localhost"]
} else {
["http://localhost:8080"]
});
tauri::Builder::default()
.invoke_system(http.initialization_script(), http.responder())
.setup(move |app| {
http.start(app.handle());
Ok(())
})
.run(tauri::generate_context!())
.expect("error while running tauri application")
}
```
To invoke a custom command from your own or remote system you can use `curl` or similar tooling.
See [`examples/vanilla`](examples/vanilla/) to test this on your system.
An example command to invoke the `exit` command in the example Tauri app exposing port `18436` (randomly chosen port) could look like:
```sh
curl localhost:18436/main -H 'Content-Type: application/json' -d '{ "__tauriModule": "Process", "cmd": "exit", "callback": 1234, "error": 1234, "message": {"cmd": "exit", "exitCode": 1 } }'
```