// Code generated by ndpgen. DO NOT EDIT. // // This file contains client wrappers for the Config host service. // It is intended for use in Navidrome plugins built with extism-pdk. use extism_pdk::*; use serde::{Deserialize, Serialize}; #[derive(Debug, Clone, Serialize)] #[serde(rename_all = "camelCase")] struct ConfigGetRequest { key: String, } #[derive(Debug, Clone, Deserialize)] #[serde(rename_all = "camelCase")] struct ConfigGetResponse { #[serde(default)] value: String, #[serde(default)] exists: bool, #[serde(default)] error: Option, } #[derive(Debug, Clone, Serialize)] #[serde(rename_all = "camelCase")] struct ConfigSetRequest { key: String, value: String, } #[derive(Debug, Clone, Deserialize)] #[serde(rename_all = "camelCase")] struct ConfigSetResponse { #[serde(default)] error: Option, } #[derive(Debug, Clone, Serialize)] #[serde(rename_all = "camelCase")] struct ConfigHasRequest { key: String, } #[derive(Debug, Clone, Deserialize)] #[serde(rename_all = "camelCase")] struct ConfigHasResponse { #[serde(default)] exists: bool, #[serde(default)] error: Option, } #[host_fn] extern "ExtismHost" { fn config_get(input: Json) -> Json; fn config_set(input: Json) -> Json; fn config_has(input: Json) -> Json; } /// Calls the config_get host function. /// /// # Arguments /// * `key` - String parameter. /// /// # Returns /// `Some(value)` if found, `None` otherwise. /// /// # Errors /// Returns an error if the host function call fails. pub fn get(key: &str) -> Result, Error> { let response = unsafe { config_get(Json(ConfigGetRequest { key: key.to_owned(), }))? }; if let Some(err) = response.0.error { return Err(Error::msg(err)); } if response.0.exists { Ok(Some(response.0.value)) } else { Ok(None) } } /// Calls the config_set host function. /// /// # Arguments /// * `key` - String parameter. /// * `value` - String parameter. /// /// # Errors /// Returns an error if the host function call fails. pub fn set(key: &str, value: &str) -> Result<(), Error> { let response = unsafe { config_set(Json(ConfigSetRequest { key: key.to_owned(), value: value.to_owned(), }))? }; if let Some(err) = response.0.error { return Err(Error::msg(err)); } Ok(()) } /// Calls the config_has host function. /// /// # Arguments /// * `key` - String parameter. /// /// # Returns /// The exists value. /// /// # Errors /// Returns an error if the host function call fails. pub fn has(key: &str) -> Result { let response = unsafe { config_has(Json(ConfigHasRequest { key: key.to_owned(), }))? }; if let Some(err) = response.0.error { return Err(Error::msg(err)); } Ok(response.0.exists) }