Deluan 68e97a49ee feat(plugins): generate Rust lib.rs file to expose host function wrappers
Signed-off-by: Deluan <deluan@navidrome.org>
2025-12-31 17:06:31 -05:00
..

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:

cd plugins/host
go generate

Usage

Add this crate as a dependency in your plugin's Cargo.toml:

[dependencies]
nd-host = { path = "../../host/rust" }

Then import the services you need:

use nd_host::{cache, scheduler, kvstore};

#[plugin_fn]
pub fn my_callback(input: String) -> FnResult<String> {
    // 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:

cargo build --target wasm32-wasip1 --release

See the webhook-rs example for a complete plugin implementation.