Skip to content

Commit

Permalink
fix format
Browse files Browse the repository at this point in the history
  • Loading branch information
cn-kali-team committed Nov 25, 2023
1 parent d317145 commit b6d6c14
Show file tree
Hide file tree
Showing 5 changed files with 90 additions and 53 deletions.
19 changes: 15 additions & 4 deletions nvd-api/src/v2/api.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,23 @@
use crate::pagination::Object;
use crate::v2::products::{CpeMatchParameters, CpeParameters};
use crate::v2::vulnerabilities::CveParameters;
use crate::{Error, NVDApi};

const ROUTER: &str = "cve";

impl NVDApi {
pub async fn vulnerabilities(&self, query: CveParameters) -> Result<Object, Error> {
let u = format!("{}/{}/{}", self.base_path, self.version, ROUTER);
pub async fn cve(&self, query: CveParameters) -> Result<Object, Error> {
let u = format!("{}/{}/{}", self.base_path, "cves", self.version);
self.request(self.client.get(u).query(&query)).await
}
pub async fn cve_history(&self, query: CveParameters) -> Result<Object, Error> {
let u = format!("{}/{}/{}", self.base_path, "cvehistory", self.version);
self.request(self.client.get(u).query(&query)).await
}
pub async fn cpe(&self, query: CpeParameters) -> Result<Object, Error> {
let u = format!("{}/{}/{}", self.base_path, "cpes", self.version);
self.request(self.client.get(u).query(&query)).await
}
pub async fn cpe_match(&self, query: CpeMatchParameters) -> Result<Object, Error> {
let u = format!("{}/{}/{}", self.base_path, "cpematch", self.version);
self.request(self.client.get(u).query(&query)).await
}
}
12 changes: 6 additions & 6 deletions nvd-api/src/v2/cve_history.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,19 @@ use crate::v2::LimitOffset;
#[derive(Debug, Serialize, Deserialize, PartialEq, Clone, Eq)]
#[serde(rename_all = "camelCase")]
pub struct CveHistoryParameters {
cve_id: Option<String>,
pub cve_id: Option<String>,
#[serde(flatten)]
change_date: Option<ChangeDate>,
event_name: Option<EventName>,
pub change_date: Option<ChangeDate>,
pub event_name: Option<EventName>,
#[serde(flatten)]
limit_offset: Option<LimitOffset>,
pub limit_offset: Option<LimitOffset>,
}

#[derive(Debug, Serialize, Deserialize, PartialEq, Clone, Eq)]
#[serde(rename_all = "camelCase")]
pub struct ChangeDate {
change_start_date: String,
change_end_date: String,
pub change_start_date: String,
pub change_end_date: String,
}

#[derive(Debug, Serialize, Deserialize, PartialEq, Clone, Eq)]
Expand Down
12 changes: 12 additions & 0 deletions nvd-api/src/v2/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,15 @@ pub struct LimitOffset {
pub struct Vulnerabilities {
cve: cve::api::CVE,
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Clone, Eq)]
#[serde(rename_all = "camelCase")]
pub struct Keyword {
keyword_exact_match: bool,
keyword_search: String,
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Clone, Eq)]
#[serde(rename_all = "camelCase")]
pub struct LastModDate {
last_mod_start_date: String,
last_mod_end_date: String,
}
28 changes: 28 additions & 0 deletions nvd-api/src/v2/products.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
use crate::v2::{Keyword, LastModDate, LimitOffset};
use serde::{Deserialize, Serialize};

#[derive(Debug, Serialize, Deserialize, PartialEq, Clone, Eq)]
#[serde(rename_all = "camelCase")]
pub struct CpeParameters {
pub cpe_name_id: Option<String>,
pub cpe_match_string: Option<String>,
#[serde(flatten)]
pub keyword: Option<Keyword>,
#[serde(flatten)]
pub last_mod: Option<LastModDate>,
// UUID
pub match_criteria_id: Option<String>,
#[serde(flatten)]
pub limit_offset: Option<LimitOffset>,
}

pub struct CpeMatchParameters {
pub cve_id: Option<String>,
#[serde(flatten)]
pub last_mod: Option<LastModDate>,
pub match_criteria_id: Option<String>,
#[serde(flatten)]
pub keyword: Option<Keyword>,
#[serde(flatten)]
pub limit_offset: Option<LimitOffset>,
}
72 changes: 29 additions & 43 deletions nvd-api/src/v2/vulnerabilities.rs
Original file line number Diff line number Diff line change
@@ -1,58 +1,58 @@
use crate::v2::{Keyword, LastModDate, LimitOffset};
use serde::{Deserialize, Serialize};
use crate::v2::LimitOffset;

// https://nvd.nist.gov/developers/vulnerabilities
#[derive(Debug, Serialize, Deserialize, PartialEq, Clone, Eq)]
#[serde(rename_all = "camelCase")]
pub struct CveParameters {
cpe_name: Option<String>,
cve_id: Option<String>,
cvss_v2_metrics: Option<String>,
cvss_v2_severity: Option<cvss::severity::SeverityTypeV2>,
cvss_v3_metrics: Option<String>,
cvss_v3_severity: Option<cvss::severity::SeverityType>,
cwe_id: Option<String>,
has_cert_alerts: Option<bool>,
has_cert_notes: Option<bool>,
has_kev: Option<bool>,
has_oval: Option<bool>,
is_vulnerable: Option<bool>,
pub cpe_name: Option<String>,
pub cve_id: Option<String>,
pub cvss_v2_metrics: Option<String>,
pub cvss_v2_severity: Option<cvss::severity::SeverityTypeV2>,
pub cvss_v3_metrics: Option<String>,
pub cvss_v3_severity: Option<cvss::severity::SeverityType>,
pub cwe_id: Option<String>,
pub has_cert_alerts: Option<bool>,
pub has_cert_notes: Option<bool>,
pub has_kev: Option<bool>,
pub has_oval: Option<bool>,
pub is_vulnerable: Option<bool>,
#[serde(flatten)]
keyword: Option<Keyword>,
pub keyword: Option<Keyword>,
#[serde(flatten)]
last_mod: Option<LastModDate>,
no_rejected: Option<bool>,
pub last_mod: Option<LastModDate>,
pub no_rejected: Option<bool>,
#[serde(flatten)]
pub_date: Option<PubDate>,
pub pub_date: Option<PubDate>,
#[serde(flatten)]
limit_offset: Option<LimitOffset>,
source_identifier: Option<String>,
pub limit_offset: Option<LimitOffset>,
pub source_identifier: Option<String>,
#[serde(flatten)]
virtual_match: Option<VirtualMatch>,
pub virtual_match: Option<VirtualMatch>,
}

#[derive(Debug, Serialize, Deserialize, PartialEq, Clone, Eq)]
#[serde(rename_all = "camelCase")]
pub struct VirtualMatch {
virtual_match_string: String,
pub virtual_match_string: String,
#[serde(flatten)]
version_start: Option<VersionStart>,
pub version_start: Option<VersionStart>,
#[serde(flatten)]
version_end: Option<VersionEnd>,
pub version_end: Option<VersionEnd>,
}

#[derive(Debug, Serialize, Deserialize, PartialEq, Clone, Eq)]
#[serde(rename_all = "camelCase")]
pub struct VersionStart {
version_start: String,
version_start_type: String,
pub version_start: String,
pub version_start_type: String,
}

#[derive(Debug, Serialize, Deserialize, PartialEq, Clone, Eq)]
#[serde(rename_all = "camelCase")]
pub struct VersionEnd {
version_end: String,
version_end_type: String,
pub version_end: String,
pub version_end_type: String,
}

#[derive(Debug, Serialize, Deserialize, PartialEq, Clone, Eq)]
Expand All @@ -62,25 +62,11 @@ pub enum VersionType {
Excluding,
}



#[derive(Debug, Serialize, Deserialize, PartialEq, Clone, Eq)]
#[serde(rename_all = "camelCase")]
pub struct PubDate {
pub_start_date: String,
pub_end_date: String,
pub pub_start_date: String,
pub pub_end_date: String,
}

#[derive(Debug, Serialize, Deserialize, PartialEq, Clone, Eq)]
#[serde(rename_all = "camelCase")]
pub struct Keyword {
keyword_exact_match: bool,
keyword_search: String,
}

#[derive(Debug, Serialize, Deserialize, PartialEq, Clone, Eq)]
#[serde(rename_all = "camelCase")]
pub struct LastModDate {
last_mod_start_date: String,
last_mod_end_date: String,
}

0 comments on commit b6d6c14

Please sign in to comment.