71 行
1.9 KiB
Python
71 行
1.9 KiB
Python
from __future__ import annotations
|
|
|
|
from dataclasses import asdict, dataclass, field
|
|
from typing import Any, Dict, List, Optional
|
|
|
|
|
|
@dataclass
|
|
class Candidate:
|
|
system_id: str
|
|
display_name: str
|
|
category: str
|
|
advisory_mode: str
|
|
source_kind: str
|
|
source_name: str
|
|
source_confidence: str
|
|
source_url: str
|
|
title: str
|
|
published_at: Optional[str] = None
|
|
updated_at: Optional[str] = None
|
|
summary: str = ""
|
|
severity: str = "unknown"
|
|
cvss_score: Optional[float] = None
|
|
exploit_status: str = "unknown"
|
|
aliases: List[str] = field(default_factory=list)
|
|
cve_ids: List[str] = field(default_factory=list)
|
|
ghsa_ids: List[str] = field(default_factory=list)
|
|
osv_ids: List[str] = field(default_factory=list)
|
|
affected_versions: List[str] = field(default_factory=list)
|
|
fixed_versions: List[str] = field(default_factory=list)
|
|
package_name: Optional[str] = None
|
|
references: List[str] = field(default_factory=list)
|
|
raw: Dict[str, Any] = field(default_factory=dict)
|
|
|
|
def to_dict(self) -> Dict[str, Any]:
|
|
return asdict(self)
|
|
|
|
|
|
@dataclass
|
|
class AdvisoryRecord:
|
|
canonical_id: str
|
|
system_id: str
|
|
display_name: str
|
|
category: str
|
|
advisory_mode: str
|
|
title: str
|
|
summary: str
|
|
published_at: Optional[str]
|
|
updated_at: Optional[str]
|
|
severity: str
|
|
cvss_score: Optional[float]
|
|
exploit_status: str
|
|
source_confidence: str
|
|
official_source_url: Optional[str]
|
|
secondary_source_urls: List[str]
|
|
aliases: List[str]
|
|
cve_ids: List[str]
|
|
ghsa_ids: List[str]
|
|
osv_ids: List[str]
|
|
affected_versions: List[str]
|
|
fixed_versions: List[str]
|
|
package_name: Optional[str]
|
|
render_markdown: bool
|
|
case_path: Optional[str]
|
|
secure_code_topics: List[str]
|
|
status: str
|
|
triage_reasons: List[str] = field(default_factory=list)
|
|
metadata: Dict[str, Any] = field(default_factory=dict)
|
|
|
|
def to_dict(self) -> Dict[str, Any]:
|
|
return asdict(self)
|