use affinidi_tdk::didcomm::Message;
use tracing::warn;
pub fn is_problem_report(msg_type: &str) -> bool {
msg_type.contains("/problem-report") || msg_type.contains("/report-problem/")
}
pub fn log_problem_report(service: &str, sender: Option<&str>, message: &Message) -> bool {
if !is_problem_report(&message.typ) {
return false;
}
let code = message
.body
.get("code")
.and_then(|v| v.as_str())
.unwrap_or("(none)");
let comment = message
.body
.get("comment")
.and_then(|v| v.as_str())
.unwrap_or("(none)");
let args = message
.body
.get("args")
.map(|v| v.to_string())
.unwrap_or_else(|| "(none)".into());
let escalate_to = message
.body
.get("escalate_to")
.and_then(|v| v.as_str())
.unwrap_or("(none)");
warn!(
service,
msg_type = %message.typ,
sender = sender.unwrap_or("unknown"),
msg_id = %message.id,
thid = message.thid.as_deref().unwrap_or("(none)"),
pthid = message.pthid.as_deref().unwrap_or("(none)"),
code = code,
comment = comment,
args = %args,
escalate_to = escalate_to,
"DIDComm problem-report received"
);
true
}