use crate::error::{ClaudeError, Result};
use crate::types::Message;
pub fn parse_message(data: serde_json::Value) -> Result<Message> {
serde_json::from_value(data.clone()).map_err(|e| {
ClaudeError::message_parse(format!("Failed to parse message: {e}"), Some(data))
})
}
#[cfg(test)]
mod tests {
use super::*;
use serde_json::json;
#[test]
fn test_parse_user_message() {
let data = json!({
"type": "user",
"message": {
"role": "user",
"content": "Hello, Claude!"
}
});
let result = parse_message(data);
assert!(result.is_ok());
}
#[test]
fn test_parse_invalid_message() {
let data = json!({
"type": "invalid_type",
"data": "some data"
});
let result = parse_message(data);
assert!(result.is_err());
}
}