use extism_pdk::*;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
struct EchoEchoRequest {
message: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
struct EchoEchoResponse {
#[serde(default)]
reply: String,
#[serde(default)]
error: Option<String>,
}
#[host_fn]
extern "ExtismHost" {
fn echo_echo(input: Json<EchoEchoRequest>) -> Json<EchoEchoResponse>;
}
pub fn echo(message: &str) -> Result<String, Error> {
let response = unsafe {
echo_echo(Json(EchoEchoRequest {
message: message.to_owned(),
}))?
};
if let Some(err) = response.0.error {
return Err(Error::msg(err));
}
Ok(response.0.reply)
}