use shift_preflight::{Report, ShiftConfig};
pub fn optimize_payload(body: &str, config: &ShiftConfig) -> Option<(String, Report)> {
let payload: serde_json::Value = match serde_json::from_str(body) {
Ok(v) => v,
Err(e) => {
tracing::warn!("failed to parse payload as JSON: {}", e);
return None;
}
};
let (result, report) = match shift_preflight::process(&payload, config) {
Ok(r) => r,
Err(e) => {
tracing::warn!("SHIFT pipeline error: {}", e);
return None;
}
};
if !report.has_changes() {
return None;
}
match serde_json::to_string(&result) {
Ok(json) => Some((json, report)),
Err(e) => {
tracing::warn!("failed to serialize optimized payload: {}", e);
None
}
}
}