Expand description
ModelRegistry: register consumer-supplied handling for STIX object types.
§Example: validate and add a computed property
use stix_model::ModelRegistry;
let mut registry = ModelRegistry::new();
registry.register_handler("x-acme-widget", |mut obj| {
let score = obj.get("risk_score").and_then(|v| v.as_i64()).unwrap_or(0);
obj["risk_band"] = serde_json::json!(if score > 80 { "high" } else { "low" });
Ok(obj)
});
let bundle = registry
.parse_bundle(r#"{"type":"bundle","objects":[
{"type":"x-acme-widget","id":"x-acme-widget--1","risk_score":90}
]}"#)
.unwrap();
use stix_model::ObjectView;
assert_eq!(
bundle.objects[0].property("risk_band"),
Some(stix_model::StixValue::String("high".into()))
);Structs§
- Model
Registry - Maps a STIX
typeto a consumer-supplied handler. Registered handlers take precedence over the built-in dispatch inStixObject::from_json.