# Tauri Plugin: Relay
> A HTTP request-response relay plugin for Tauri apps, providing advanced request handling capabilities including custom headers, certificates, proxies, and local system integration.
![GitHub License MIT](https://img.shields.io/github/license/CuriousCorrelation/tauri-plugin-relay)
![Tauri 2.0](https://img.shields.io/badge/Tauri-2.0-blue)
[![Rust](https://img.shields.io/badge/Rust-1.77.2+-orange)](https://www.rust-lang.org)
## Features
- 🦀 Blazingly fast!
- HTTP client built on libcurl
- Security with SSL/TLS certificate management
- Proxy support
- Multiple authentication methods (Basic, Bearer, Digest)
- Content handling (JSON, Form Data, Binary)
- Async request execution with cancellation support
## Installation
> [!IMPORTANT]
> This plugin requires Tauri 2.0 or later.
Add the plugin to your project by installing directly from GitHub:
```toml
[dependencies]
tauri-plugin-relay = { git = "https://github.com/CuriousCorrelation/tauri-plugin-relay" }
```
``` json
"dependencies": {
"@CuriousCorrelation/plugin-relay": "github:CuriousCorrelation/tauri-plugin-relay"
}
```
## Quick Start
### Rust
```rust
fn main() {
tauri::Builder::default()
.plugin(tauri_plugin_relay::init())
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
```
### JavaScript/TypeScript
```typescript
import { execute, cancel } from '@CuriousCorrelation/plugin-relay'
// Execute a request
const result = await execute({
id: 1,
url: "https://api.example.com/data",
method: "POST",
headers: {
"Content-Type": ["application/json"]
},
content: {
kind: "json",
content: { hello: "world" }
}
})
// Cancel a request
await cancel(1)
```
## Content Types
The plugin supports multiple content types for requests:
| Type | Description |
|------|-------------|
| `text` | Plain text content |
| `json` | JSON data with automatic parsing |
| `form` | Multipart form data with file support |
| `binary` | Raw binary data with optional MIME type |
| `urlencoded` | URL-encoded form data |
## Authentication
Built-in support for various authentication methods:
| Method | Description |
|--------|-------------|
| `basic` | Basic HTTP authentication |
| `bearer` | Bearer token authentication |
| `digest` | Digest authentication (MD5, SHA-256, SHA-512) |
## Security
The plugin provides extensive security options:
- Client certificate support (PEM, PKCS#12)
- Custom CA certificates
- Certificate validation control
- Host verification settings
## Development
Requirements:
- Rust 1.77.2 or later
- Node.js 18 or later
- pnpm
- libcurl with SSL support
## Error Handling
The plugin provides detailed error information for:
- Network failures
- Certificate issues
- Timeout scenarios
- Parse errors
- Request cancellations
## License
Code: (c) 2024 - CuriousCorrelation
MIT or MIT/Apache 2.0 where applicable.