use openlark_core::{error, SDKResult};
pub fn extract_response_data<T>(
response: openlark_core::api::ApiResponse<T>,
context: &str,
) -> SDKResult<T> {
response.data.ok_or_else(|| {
error::validation_error(
&format!("{}响应数据为空", context),
"服务器没有返回有效的数据",
)
})
}
pub fn validate_required_field<T: AsRef<str>>(
field_name: &str,
field_value: Option<T>,
error_message: &str,
) -> SDKResult<()> {
match field_value {
Some(value) if !value.as_ref().trim().is_empty() => Ok(()),
_ => Err(error::validation_error(field_name, error_message)),
}
}
#[macro_export]
macro_rules! api_url {
($base_url:expr) => {
$base_url.to_string()
};
($base_url:expr, $($arg:expr),+) => {
format!($base_url, $($arg),+)
};
}
pub fn serialize_params<T: serde::Serialize>(
params: &T,
context: &str,
) -> SDKResult<serde_json::Value> {
serde_json::to_value(params).map_err(|e| {
error::validation_error(
&format!("{}参数序列化失败", context),
&format!("无法序列化请求参数: {}", e),
)
})
}