2024-10-22 20:27:48 +07:00

40 lines
1.1 KiB
Rust

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<String, String>,
pub body: Option<String>,
}
fn deserialize_method<'de, D>(deserializer: D) -> Result<Method, D::Error>
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 },
}