devin15/cursor2api-rust
0
1pub mod error;2pub mod health;3pub mod config;4pub mod userinfo;5 6use config::ConfigData;7 8use serde::Serialize;9 10#[derive(Serialize)]11pub enum ApiStatus {12 #[serde(rename = "healthy")]13 Healthy,14 #[serde(rename = "success")]15 Success,16 #[serde(rename = "error")]17 Error,18 #[serde(rename = "failed")]19 Failed,20}21 22// #[derive(Serialize)]23// #[serde(untagged)]24// pub enum ApiResponse {25// HealthCheck(HealthCheckResponse),26// ConfigData(NormalResponse<ConfigData>),27// Error(ErrorResponse),28// }29 30// impl ApiResponse {31// pub fn to_string(&self) -> String {32// serde_json::to_string(self).unwrap()33// }34// }35 36#[derive(Serialize)]37pub struct NormalResponse<T> {38 pub status: ApiStatus,39 #[serde(skip_serializing_if = "Option::is_none")]40 pub data: Option<T>,41 #[serde(skip_serializing_if = "Option::is_none")]42 pub message: Option<String>,43}44 45impl std::fmt::Display for NormalResponse<ConfigData> {46 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {47 write!(f, "{}", serde_json::to_string(self).unwrap())48 }49}50 51#[derive(Serialize)]52pub struct NormalResponseNoData {53 pub status: ApiStatus,54 #[serde(skip_serializing_if = "Option::is_none")]55 pub message: Option<String>,56}57 58#[derive(Serialize)]59pub struct ErrorResponse {60 // status -> 成功 / 失败61 pub status: ApiStatus,62 // HTTP 请求的状态码63 #[serde(skip_serializing_if = "Option::is_none")]64 pub code: Option<u16>,65 // HTTP 请求的错误码66 #[serde(skip_serializing_if = "Option::is_none")]67 pub error: Option<String>,68 // 错误详情69 #[serde(skip_serializing_if = "Option::is_none")]70 pub message: Option<String>,71}72 