File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1111from typing import Iterable
1212from typing import List
1313
14+ from packageurl import PackageURL
15+
1416
1517@dataclasses .dataclass (order = True )
1618class VendorData :
19+ purl : PackageURL
1720 aliases : List [str ] = dataclasses .field (default_factory = list )
1821 affected_versions : List [str ] = dataclasses .field (default_factory = list )
1922 fixed_versions : List [str ] = dataclasses .field (default_factory = list )
2023
2124 def to_dict (self ):
2225 return {
26+ "purl" : str (self .purl ),
2327 "affected_versions" : self .affected_versions ,
2428 "fixed_versions" : self .fixed_versions ,
2529 "aliases" : self .aliases ,
2630 }
2731
2832
33+ class InvalidCVEError (Exception ):
34+ def __init__ (self , message = "CVE identifier must start with 'CVE-'" ):
35+ self .message = message
36+ super ().__init__ (self .message )
37+
38+
2939class DataSource :
3040 def __init__ (self ):
3141 self ._raw_dump = []
3242
33- def datasource_advisory (self , purl ) -> Iterable [VendorData ]:
43+ def datasource_advisory (self , purl : PackageURL ) -> Iterable [VendorData ]:
44+ """
45+ Yield VendorData object for crossponding PURL.
46+ """
47+ return NotImplementedError
48+
49+ def datasource_advisory_from_cve (self , cve : str ) -> Iterable [VendorData ]:
3450 """
35- Yield VendorData object corresponding to DataSource
51+ Yield VendorData objects for a given CVE identifier.
3652 """
53+ if not cve .upper ().startswith ("CVE-" ):
54+ raise InvalidCVEError
55+
3756 return NotImplementedError
3857
3958 @classmethod
You can’t perform that action at this time.
0 commit comments