use kinode_process_lib::http::Method; use serde::{Deserialize, Deserializer, Serialize}; use std::collections::HashMap; #[derive(Debug, Deserialize, Clone)] pub struct UIReq { pub url: String, #[serde(deserialize_with = "deserialize_method")] pub method: Method, pub headers: HashMap, pub body: Option, } fn deserialize_method<'de, D>(deserializer: D) -> Result where D: Deserializer<'de>, { let s: String = String::deserialize(deserializer)?; match s.to_uppercase().as_str() { "GET" => Ok(Method::GET), "POST" => Ok(Method::POST), "PUT" => Ok(Method::PUT), "DELETE" => Ok(Method::DELETE), "HEAD" => Ok(Method::HEAD), "OPTIONS" => Ok(Method::OPTIONS), "CONNECT" => Ok(Method::CONNECT), "PATCH" => Ok(Method::PATCH), "TRACE" => Ok(Method::TRACE), _ => Err(serde::de::Error::custom(format!( "Unknown HTTP method: {}", s ))), } } #[derive(Debug, Serialize, Deserialize, Clone)] pub enum UIRes { Ok { result: String }, Err { error: String }, }