@@ -9,7 +9,7 @@ use std::io::Write;
99use std:: sync:: { Arc , Mutex } ;
1010
1111// non-std crates
12- use anyhow:: { anyhow , Context , Result } ;
12+ use anyhow:: { Context , Result } ;
1313use reqwest:: {
1414 header:: { HeaderMap , HeaderValue , AUTHORIZATION } ,
1515 Client , Method , Url ,
@@ -35,7 +35,7 @@ pub struct GithubApiClient {
3535 client : Client ,
3636
3737 /// The CI run's event payload from the webhook that triggered the workflow.
38- pull_request : Option < i64 > ,
38+ pull_request : i64 ,
3939
4040 /// The name of the event that was triggered when running cpp_linter.
4141 pub event_name : String ,
@@ -52,6 +52,7 @@ pub struct GithubApiClient {
5252 /// The value of the `ACTIONS_STEP_DEBUG` environment variable.
5353 pub debug_enabled : bool ,
5454
55+ /// The response header names that describe the rate limit status.
5556 rate_limit_headers : RestApiRateLimitHeaders ,
5657}
5758
@@ -116,7 +117,7 @@ impl RestApiClient for GithubApiClient {
116117 {
117118 // get diff from Github REST API
118119 let is_pr = self . event_name == "pull_request" ;
119- let pr = self . pull_request . unwrap_or ( - 1 ) . to_string ( ) ;
120+ let pr = self . pull_request . to_string ( ) ;
120121 let sha = self . sha . clone ( ) . unwrap ( ) ;
121122 let url = self
122123 . api_url
@@ -134,33 +135,26 @@ impl RestApiClient for GithubApiClient {
134135 None ,
135136 Some ( diff_header) ,
136137 ) ?;
137- match Self :: send_api_request (
138+ let response = Self :: send_api_request (
138139 self . client . clone ( ) ,
139140 request,
140141 self . rate_limit_headers . to_owned ( ) ,
141142 0 ,
142143 )
143144 . await
144- {
145- Ok ( response) => {
146- if response. status ( ) . is_success ( ) {
147- Ok ( parse_diff_from_buf ( & response. bytes ( ) . await ?, file_filter) )
148- } else {
149- let endpoint = if is_pr {
150- Url :: parse ( format ! ( "{}/files" , url. as_str( ) ) . as_str ( ) ) ?
151- } else {
152- url
153- } ;
154- Self :: log_response ( response, "Failed to get full diff for event" ) . await ;
155- log:: debug!( "Trying paginated request to {}" , endpoint. as_str( ) ) ;
156- self . get_changed_files_paginated ( endpoint, file_filter)
157- . await
158- }
159- }
160- Err ( e) => Err ( anyhow ! (
161- "Failed to connect with GitHub server to get list of changed files."
162- )
163- . context ( e) ) ,
145+ . with_context ( || "Failed to get list of changed files from GitHub server." ) ?;
146+ if response. status ( ) . is_success ( ) {
147+ Ok ( parse_diff_from_buf ( & response. bytes ( ) . await ?, file_filter) )
148+ } else {
149+ let endpoint = if is_pr {
150+ Url :: parse ( format ! ( "{}/files" , url. as_str( ) ) . as_str ( ) ) ?
151+ } else {
152+ url
153+ } ;
154+ Self :: log_response ( response, "Failed to get full diff for event" ) . await ;
155+ log:: debug!( "Trying paginated request to {}" , endpoint. as_str( ) ) ;
156+ self . get_changed_files_paginated ( endpoint, file_filter)
157+ . await
164158 }
165159 } else {
166160 // get diff from libgit2 API
@@ -257,7 +251,7 @@ impl RestApiClient for GithubApiClient {
257251 }
258252 if let Some ( repo) = & self . repo {
259253 let is_pr = self . event_name == "pull_request" ;
260- let pr = self . pull_request . unwrap_or ( - 1 ) . to_string ( ) + "/" ;
254+ let pr = self . pull_request . to_string ( ) + "/" ;
261255 let sha = self . sha . clone ( ) . unwrap ( ) + "/" ;
262256 let comments_url = self
263257 . api_url
0 commit comments