1414 "Accept" : "application/vnd.github.v3+json" ,
1515}
1616
17+
1718# Pydantic model for validating inputs
1819class PRRequestModel (BaseModel ):
1920 owner : constr (regex = r"^[a-zA-Z0-9-]{1,39}$" )
2021 repo : constr (regex = r"^[a-zA-Z0-9_.-]{1,100}$" )
2122 pr_number : conint (gt = 0 )
2223
24+
2325# Wrapper function to validate inputs
2426def validate_pr_request (owner , repo , pr_number ):
2527 return PRRequestModel (owner = owner , repo = repo , pr_number = pr_number )
2628
29+
2730def get_pr_info (owner , repo , pr_number ):
2831 validated_data = validate_pr_request (owner , repo , pr_number )
2932 url = f"{ GITHUB_API } /repos/{ validated_data .owner } /{ validated_data .repo } /pulls/{ validated_data .pr_number } "
3033 response = requests .get (url , headers = headers )
3134 response .raise_for_status ()
3235 return response .json ()
3336
37+
3438def get_pr_files (owner , repo , pr_number ):
3539 validated_data = validate_pr_request (owner , repo , pr_number )
3640 url = f"{ GITHUB_API } /repos/{ validated_data .owner } /{ validated_data .repo } /pulls/{ validated_data .pr_number } /files"
3741 response = requests .get (url , headers = headers )
3842 response .raise_for_status ()
3943 return response .json ()
4044
45+
4146def get_diff (url ):
4247 headers = {
4348 "Accept" : "application/vnd.github.v3.diff" ,
@@ -46,6 +51,7 @@ def get_diff(url):
4651 response = requests .get (url , headers = headers )
4752 return response .text
4853
54+
4955def main (owner , repo , pr_number ):
5056 try :
5157 pr_info = get_pr_info (owner , repo , pr_number )
@@ -89,6 +95,7 @@ def main(owner, repo, pr_number):
8995 except requests .exceptions .HTTPError as e :
9096 print (f"Error: { e } " )
9197
98+
9299if __name__ == "__main__" :
93100 main ("Cloud-Code-AI" , "kaizen" , 252 )
94101 print ("------------------- Multi File -------------------" )
0 commit comments