Skip to main content

Module registry

Module registry 

Source
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§

ModelRegistry
Maps a STIX type to a consumer-supplied handler. Registered handlers take precedence over the built-in dispatch in StixObject::from_json.