1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
//! Vulnerability data sources.
//!
//! This module contains implementations for fetching advisories from various
//! vulnerability databases. Each source implements the [`AdvisorySource`] trait.
//!
//! # Available Sources
//!
//! - [`ghsa::GHSASource`] - GitHub Security Advisories (requires GitHub token)
//! - [`nvd::NVDSource`] - NIST National Vulnerability Database
//! - [`osv::OSVSource`] - Open Source Vulnerabilities (Google)
//! - [`kev::KevSource`] - CISA Known Exploited Vulnerabilities
//! - [`epss::EpssSource`] - FIRST Exploit Prediction Scoring System
//! - [`ossindex::OssIndexSource`] - Sonatype OSS Index
use crateResult;
use crateAdvisory;
use async_trait;
use ;
/// Trait for vulnerability advisory data sources.
///
/// Implement this trait to add support for a new vulnerability database.
///
/// # Example
///
/// ```ignore
/// use vulnera_advisors::sources::AdvisorySource;
/// use vulnera_advisors::models::Advisory;
/// use async_trait::async_trait;
///
/// struct MySource;
///
/// #[async_trait]
/// impl AdvisorySource for MySource {
/// async fn fetch(&self, since: Option<DateTime<Utc>>) -> Result<Vec<Advisory>> {
/// // Fetch advisories from your source
/// Ok(vec![])
/// }
///
/// fn name(&self) -> &str {
/// "MySource"
/// }
/// }
/// ```