11"""GitHub Security Advisories API."""
22
33from typing import Dict , Optional
4+ from ghastoolkit .errors import GHASToolkitError , GHASToolkitTypeError
45from ghastoolkit .octokit .github import GitHub , Repository
56from ghastoolkit .octokit .octokit import RestRequest
67from ghastoolkit .supplychain .advisories import Advisories , Advisory , AdvisoryAffect
@@ -20,7 +21,10 @@ def __init__(self, repository: Optional[Repository] = None) -> None:
2021 self .rest = RestRequest (self .repository )
2122
2223 def getAdvisories (self ) -> Advisories :
23- """Get list of security advisories from a repository."""
24+ """Get list of security advisories from a repository.
25+
26+ https://docs.github.com/en/rest/security-advisories/repository-advisories#list-repository-security-advisories
27+ """
2428 results = self .rest .get (
2529 "/repos/{owner}/{repo}/security-advisories" , authenticated = True
2630 )
@@ -29,24 +33,38 @@ def getAdvisories(self) -> Advisories:
2933 for advisory in results :
3034 advisories .append (self .loadAdvisoryData (advisory ))
3135 return advisories
32- raise Exception (f"Error getting advisories from repository" )
36+
37+ raise GHASToolkitTypeError (
38+ f"Error getting advisories from repository" ,
39+ docs = "https://docs.github.com/en/rest/security-advisories/repository-advisories#list-repository-security-advisories" ,
40+ )
3341
3442 def getAdvisory (self , ghsa_id : str ) -> Advisory :
35- """Get advisory by ghsa id."""
43+ """Get advisory by ghsa id.
44+
45+ https://docs.github.com/en/rest/security-advisories/repository-advisories#get-a-repository-security-advisory
46+ """
3647 result = self .rest .get (
3748 "/repos/{owner}/{repo}/security-advisories/{ghsa_id}" ,
3849 {"ghsa_id" : ghsa_id },
3950 authenticated = True ,
4051 )
4152 if isinstance (result , dict ):
4253 return self .loadAdvisoryData (result )
43- raise Exception (f"Error getting advisory by id" )
54+
55+ raise GHASToolkitTypeError (
56+ f"Error getting advisory by id" ,
57+ docs = "https://docs.github.com/en/rest/security-advisories/repository-advisories#get-a-repository-security-advisory" ,
58+ )
4459
4560 def createAdvisory (
4661 self , advisory : Advisory , repository : Optional [Repository ] = None
4762 ):
48- """Create a GitHub Security Advisories for a repository."""
49- raise Exception ("Unsupported feature" )
63+ """Create a GitHub Security Advisories for a repository.
64+
65+ https://docs.github.com/en/rest/security-advisories/repository-advisories#create-a-repository-security-advisory
66+ """
67+ raise GHASToolkitError ("Unsupported feature" )
5068
5169 def createPrivateAdvisory (
5270 self , advisory : Advisory , repository : Optional [Repository ] = None
@@ -57,8 +75,11 @@ def createPrivateAdvisory(
5775 def updateAdvisory (
5876 self , advisory : Advisory , repository : Optional [Repository ] = None
5977 ):
60- """Update GitHub Security Advisory."""
61- raise Exception ("Unsupported feature" )
78+ """Update GitHub Security Advisory.
79+
80+ https://docs.github.com/en/rest/security-advisories/repository-advisories#update-a-repository-security-advisory
81+ """
82+ raise GHASToolkitError ("Unsupported feature" )
6283
6384 def loadAdvisoryData (self , data : Dict ) -> Advisory :
6485 """Load Advisory from API data."""
0 commit comments