use serde_json::Value;
pub fn is_emf(line: &str) -> bool {
let trimmed = line.trim_start();
if !trimmed.starts_with('{') {
return false;
}
let trimmed = trimmed.trim_end();
if !trimmed.ends_with('}') {
return false;
}
serde_json::from_str(trimmed)
.ok()
.map(|value: Value| value.get("_aws").is_some())
.unwrap_or(false)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn check_emf() {
assert!(is_emf(r#"{"_aws":{"key":"value"}}"#));
assert!(is_emf(r#"{"_aws": {"key": "value"}}"#));
assert!(is_emf(r#" { "_aws" : {"key": "value"} } "#));
assert!(!is_emf(r#"{"key": "value"}"#));
assert!(!is_emf(r#"{" _aws":{"key":"value"}}"#));
assert!(!is_emf(r#"{"_aws": {"key": "value"}"#));
assert!(!is_emf("123"));
assert!(!is_emf("{"));
}
}