nvd-cwe 0.1.0

A rust implementation of the nvd-cwe.
Documentation
use serde::{Deserialize, Serialize};

#[derive(Debug, Deserialize, Serialize)]
#[serde(deny_unknown_fields)]
pub struct ContentHistory {
  #[serde(rename(deserialize = "$value"))]
  pub references: Vec<ContentHistoryChild>,
}

#[derive(Debug, Deserialize, Serialize)]
#[serde(deny_unknown_fields, rename_all(serialize = "snake_case"))]
pub enum ContentHistoryChild {
  #[serde(rename(deserialize = "Submission"))]
  Submission(Submission),
  #[serde(rename(deserialize = "Modification"))]
  Modification(Modification),
  #[serde(rename(deserialize = "Contribution"))]
  Contribution(Contribution),
  #[serde(rename(deserialize = "Previous_Entry_Name"))]
  PreviousEntryName {
    #[serde(rename(deserialize = "@Version"))]
    version: Option<String>,
    #[serde(rename(deserialize = "@Date"))]
    date: String,
    #[serde(rename(deserialize = "$value"))]
    previous_entry_name: String,
  },
}

#[derive(Debug, Deserialize, Serialize)]
#[serde(deny_unknown_fields)]
pub struct Submission {
  #[serde(rename(deserialize = "Submission_Name"))]
  pub submission_name: Option<String>,
  #[serde(rename(deserialize = "Submission_Organization"))]
  pub submission_organization: Option<String>,
  #[serde(rename(deserialize = "Submission_Date"))]
  pub submission_date: String,
  #[serde(rename(deserialize = "Submission_Comment"))]
  pub submission_comment: Option<String>,
  #[serde(rename(deserialize = "Submission_Version"))]
  pub submission_version: String,
  #[serde(rename(deserialize = "Submission_ReleaseDate"))]
  pub submission_release_date: String,
}

#[derive(Debug, Deserialize, Serialize)]
#[serde(deny_unknown_fields)]
pub struct Modification {
  #[serde(rename(deserialize = "Modification_Name"))]
  pub modification_name: Option<String>,
  #[serde(rename(deserialize = "Modification_Organization"))]
  pub modification_organization: Option<String>,
  #[serde(rename(deserialize = "Modification_Date"))]
  pub modification_date: String,
  #[serde(rename(deserialize = "Modification_Importance"))]
  pub modification_importance: Option<String>,
  #[serde(rename(deserialize = "Modification_Comment"))]
  pub modification_comment: Option<String>,
  #[serde(rename(deserialize = "Modification_Version"))]
  pub modification_version: Option<String>,
  #[serde(rename(deserialize = "Modification_ReleaseDate"))]
  pub modification_release_date: Option<String>,
}

#[derive(Debug, Deserialize, Serialize)]
#[serde(deny_unknown_fields)]
pub struct Contribution {
  #[serde(rename(deserialize = "@Type"))]
  pub r#type: Option<String>,
  #[serde(rename(deserialize = "Contribution_Name"))]
  pub contribution_name: Option<String>,
  #[serde(rename(deserialize = "Contribution_Organization"))]
  pub contribution_organization: Option<String>,
  #[serde(rename(deserialize = "Contribution_Date"))]
  pub contribution_date: String,
  #[serde(rename(deserialize = "Contribution_Comment"))]
  pub contribution_comment: Option<String>,
  #[serde(rename(deserialize = "Contribution_Version"))]
  pub contribution_version: Option<String>,
  #[serde(rename(deserialize = "Contribution_ReleaseDate"))]
  pub contribution_release_date: Option<String>,
}