INNER CODE UNIT · Rust
exposure_snapshot
Symph0nia/CyberEdge · src/repository/mod.rs:279
fn exposure_snapshot<'a>(
observations: impl IntoIterator<Item = &'a Observation>,
) -> BTreeMap<String, ExposureState> {
observations
.into_iter()
.filter_map(|observation| {
let value = serde_json::from_str::<serde_json::Value>(&observation.value_json).ok()?;
let fingerprint = digest(&serde_json::to_vec(&value).ok()?);
let (resource_kind, resource_id) = match observation.observation_type.as_str() {
"tcp.open" => {
let port = value.get("port")?.as_u64()?;
let service_id = content_id(
"service",
format!("{}:tcp:{port}", observation.asset_id).as_bytes(),
);
("service", service_id)
}
"http.response" => {