# Navidrome Host Function Wrappers for Rust This directory contains auto-generated Rust wrappers for Navidrome's host services. These wrappers provide idiomatic Rust APIs for interacting with Navidrome from WASM plugins. ## ⚠️ Auto-Generated Code **Do not edit these files manually.** They are generated by the `hostgen` tool. To regenerate: ```bash cd plugins/host go generate ``` ## Usage Add this crate as a dependency in your plugin's `Cargo.toml`: ```toml [dependencies] nd-host = { path = "../../host/rust" } ``` Then import the services you need: ```rust use nd_host::{cache, scheduler, kvstore}; #[plugin_fn] pub fn my_callback(input: String) -> FnResult { // Use the cache service cache::cache_set("my_key", b"my_value", 3600)?; // Schedule a recurring task scheduler::scheduler_schedule_recurring("@every 5m", "payload", "task_id")?; Ok("done".to_string()) } ``` ## Available Services | Module | Description | |--------|-------------| | `artwork` | Access album and artist artwork | | `cache` | Temporary key-value storage with TTL | | `kvstore` | Persistent key-value storage | | `library` | Access the music library (albums, artists, tracks) | | `scheduler` | Schedule one-time and recurring tasks | | `subsonicapi` | Make Subsonic API calls | | `websocket` | Send real-time messages to clients | ## Building Plugins Rust plugins must be compiled to WebAssembly: ```bash cargo build --target wasm32-wasip1 --release ``` See the [webhook-rs](../../examples/webhook-rs/) example for a complete plugin implementation.