40 lines
1.1 KiB
Rust
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 },
|
|
}
|