File tree Expand file tree Collapse file tree 1 file changed +21
-2
lines changed Expand file tree Collapse file tree 1 file changed +21
-2
lines changed 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