use serde::Deserialize;
use stix::{CommonProperties, Object};
use crate::get_mitre_id;
#[derive(Deserialize, stix::TypedObject)]
#[typed_object(name = "x-mitre-tactic")]
pub struct Tactic {
#[serde(flatten)]
common: CommonProperties,
#[serde(default)]
pub name: String,
#[serde(default)]
pub description: Option<String>,
#[serde(rename = "x_mitre_shortname")]
pub shortname: String,
}
impl Tactic {
pub fn mitre_id(&self) -> Option<&str> {
self.external_references().iter().find_map(get_mitre_id)
}
}
impl AsRef<CommonProperties> for Tactic {
fn as_ref(&self) -> &CommonProperties {
&self.common
}
}