@@ -9,7 +9,7 @@ use std::io::Write;
9
9
use std:: sync:: { Arc , Mutex } ;
10
10
11
11
// non-std crates
12
- use anyhow:: { anyhow , Context , Result } ;
12
+ use anyhow:: { Context , Result } ;
13
13
use reqwest:: {
14
14
header:: { HeaderMap , HeaderValue , AUTHORIZATION } ,
15
15
Client , Method , Url ,
@@ -35,7 +35,7 @@ pub struct GithubApiClient {
35
35
client : Client ,
36
36
37
37
/// The CI run's event payload from the webhook that triggered the workflow.
38
- pull_request : Option < i64 > ,
38
+ pull_request : i64 ,
39
39
40
40
/// The name of the event that was triggered when running cpp_linter.
41
41
pub event_name : String ,
@@ -52,6 +52,7 @@ pub struct GithubApiClient {
52
52
/// The value of the `ACTIONS_STEP_DEBUG` environment variable.
53
53
pub debug_enabled : bool ,
54
54
55
+ /// The response header names that describe the rate limit status.
55
56
rate_limit_headers : RestApiRateLimitHeaders ,
56
57
}
57
58
@@ -116,7 +117,7 @@ impl RestApiClient for GithubApiClient {
116
117
{
117
118
// get diff from Github REST API
118
119
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 ( ) ;
120
121
let sha = self . sha . clone ( ) . unwrap ( ) ;
121
122
let url = self
122
123
. api_url
@@ -134,33 +135,26 @@ impl RestApiClient for GithubApiClient {
134
135
None ,
135
136
Some ( diff_header) ,
136
137
) ?;
137
- match Self :: send_api_request (
138
+ let response = Self :: send_api_request (
138
139
self . client . clone ( ) ,
139
140
request,
140
141
self . rate_limit_headers . to_owned ( ) ,
141
142
0 ,
142
143
)
143
144
. 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
164
158
}
165
159
} else {
166
160
// get diff from libgit2 API
@@ -257,7 +251,7 @@ impl RestApiClient for GithubApiClient {
257
251
}
258
252
if let Some ( repo) = & self . repo {
259
253
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 ( ) + "/" ;
261
255
let sha = self . sha . clone ( ) . unwrap ( ) + "/" ;
262
256
let comments_url = self
263
257
. api_url
0 commit comments