@@ -101,7 +101,7 @@ impl GitlabClient {
101101 let url = Url :: parse_with_params ( format ! ( "{}{}" , self . base_url, path) . as_str ( ) , params)
102102 . expect ( "url to be parsed with params" ) ;
103103
104- log:: debug!( "HTTP (post) {url} body: {body_json:?}" ) ;
104+ log:: debug!( "request (post) {url} body: {body_json:?}" ) ;
105105 let builder = self . http_client . post ( url) ;
106106
107107 match body_json {
@@ -115,8 +115,16 @@ impl GitlabClient {
115115 path : String ,
116116 params : Vec < ( String , String ) > ,
117117 body_json : Option < Value > ,
118- ) -> Result < T , reqwest:: Error > {
119- self . do_post ( path, params, body_json) . await ?. json ( ) . await
118+ ) -> Result < T , ApiError > {
119+ let response = self . do_post ( path. clone ( ) , params, body_json) . await ?;
120+ let json = response. text ( ) . await ?;
121+
122+ log:: debug!( "path: {}, JSON response: {}" , & path, & json) ;
123+
124+ let data =
125+ serde_json:: from_str ( & json) . map_err ( |e| ApiError :: server_error ( e. to_string ( ) ) ) ?;
126+
127+ Ok ( data)
120128 }
121129
122130 async fn do_get (
@@ -127,7 +135,7 @@ impl GitlabClient {
127135 let url = Url :: parse_with_params ( format ! ( "{}{}" , self . base_url, path) . as_str ( ) , params)
128136 . expect ( "url to be parsed with params" ) ;
129137
130- log:: debug!( "HTTP (get) {url}" ) ;
138+ log:: debug!( "request (get) {url}" ) ;
131139
132140 self . http_client . get ( url) . send ( ) . await ?. error_for_status ( )
133141 }
@@ -136,23 +144,34 @@ impl GitlabClient {
136144 & self ,
137145 path : String ,
138146 params : Vec < ( String , String ) > ,
139- ) -> Result < T , reqwest:: Error > {
140- self . do_get ( path, params) . await ?. json ( ) . await
147+ ) -> Result < T , ApiError > {
148+ let response = self . do_get ( path. clone ( ) , params) . await ?;
149+ let json = response. text ( ) . await ?;
150+
151+ log:: debug!( "path: {}, JSON response: {}" , & path, & json) ;
152+
153+ let data =
154+ serde_json:: from_str ( & json) . map_err ( |e| ApiError :: server_error ( e. to_string ( ) ) ) ?;
155+ Ok ( data)
141156 }
142157
143158 async fn get_page < T : DeserializeOwned > (
144159 & self ,
145160 path : String ,
146161 page : usize ,
147162 params : Vec < ( String , String ) > ,
148- ) -> Result < Page < T > , reqwest :: Error > {
163+ ) -> Result < Page < T > , ApiError > {
149164 let mut params = params;
150165 params. push ( ( "page" . to_string ( ) , page. to_string ( ) ) ) ;
151166 params. push ( ( "per_page" . to_string ( ) , "100" . to_string ( ) ) ) ;
152167
153- let response = self . do_get ( path, params) . await ?;
168+ let response = self . do_get ( path. clone ( ) , params) . await ?;
154169 let total_pages = get_total_pages ( response. headers ( ) ) ;
155- let data = response. json ( ) . await ?;
170+ let json = response. text ( ) . await ?;
171+
172+ log:: debug!( "page: {}, path: {}, JSON response: {}" , page, & path, & json) ;
173+ let data =
174+ serde_json:: from_str ( & json) . map_err ( |e| ApiError :: server_error ( e. to_string ( ) ) ) ?;
156175
157176 Ok ( Page {
158177 data,
@@ -170,15 +189,15 @@ impl GitlabClient {
170189 T : DeserializeOwned + Send + ' static ,
171190 T : std:: fmt:: Debug ,
172191 {
173- log:: debug!( "fetching page 1" ) ;
192+ log:: debug!( "fetching page 1, path: {}" , & path ) ;
174193
175194 let Page {
176195 data : mut all_data,
177196 total_pages,
178197 page : _,
179198 } = self . get_page ( path. clone ( ) , 1 , params. clone ( ) ) . await ?;
180199
181- log:: debug!( "fetched page 1/{total_pages} data : {all_data:?}" ) ;
200+ log:: debug!( "fetched page 1/{total_pages}, path : {}" , & path ) ;
182201
183202 if total_pages == 1 {
184203 return Ok ( all_data) ;
@@ -192,7 +211,7 @@ impl GitlabClient {
192211 let path = path. clone ( ) ;
193212 let tx = tx. clone ( ) ;
194213 tokio:: spawn ( async move {
195- log:: debug!( "fetching page {page}" ) ;
214+ log:: debug!( "fetching page {page}, path: {}" , & path ) ;
196215 let result = self_clone. get_page ( path, page, params) . await ;
197216 if let Err ( err) = tx. send ( result) . await {
198217 log:: error!( "could not send result via channel. err: {err}" ) ;
@@ -208,7 +227,7 @@ impl GitlabClient {
208227 total_pages,
209228 page,
210229 } = result?;
211- log:: debug!( "fetched page {page}/{total_pages} data: {data:?} " ) ;
230+ log:: debug!( "fetched page {page}/{total_pages}" ) ;
212231 all_data. append ( & mut data) ;
213232 }
214233
@@ -263,17 +282,11 @@ impl GitlabApi for GitlabClient {
263282 match self . do_get_parsed :: < Pipeline > ( path, params. to_vec ( ) ) . await {
264283 Ok ( pipeline) => Ok ( Some ( pipeline) ) ,
265284 Err ( error) => {
266- let status = error. status ( ) ;
267- status. map_or_else (
268- || Ok ( None ) ,
269- |code| {
270- if code == reqwest:: StatusCode :: FORBIDDEN {
271- Ok ( None )
272- } else {
273- Err ( error. into ( ) )
274- }
275- } ,
276- )
285+ if error. is_forbidden ( ) {
286+ Ok ( None )
287+ } else {
288+ Err ( error)
289+ }
277290 }
278291 }
279292 }
@@ -299,9 +312,7 @@ impl GitlabApi for GitlabClient {
299312 let params = [ ] ;
300313 let path = format ! ( "/projects/{project_id}/pipelines/{pipeline_id}/retry" ) ;
301314
302- self . do_post_parsed ( path, params. to_vec ( ) , None )
303- . await
304- . map_err ( |e| e. into ( ) )
315+ self . do_post_parsed ( path, params. to_vec ( ) , None ) . await
305316 }
306317
307318 async fn start_pipeline (
@@ -328,9 +339,7 @@ impl GitlabApi for GitlabClient {
328339 Value :: Object ( o)
329340 } ) ;
330341
331- self . do_post_parsed ( path, params. to_vec ( ) , body_json)
332- . await
333- . map_err ( |e| e. into ( ) )
342+ self . do_post_parsed ( path, params. to_vec ( ) , body_json) . await
334343 }
335344
336345 async fn cancel_pipeline (
@@ -341,9 +350,7 @@ impl GitlabApi for GitlabClient {
341350 let params = [ ] ;
342351 let path = format ! ( "/projects/{project_id}/pipelines/{pipeline_id}/cancel" ) ;
343352
344- self . do_post_parsed ( path, params. to_vec ( ) , None )
345- . await
346- . map_err ( |e| e. into ( ) )
353+ self . do_post_parsed ( path, params. to_vec ( ) , None ) . await
347354 }
348355
349356 async fn branches ( & self , project_id : u64 ) -> Result < Vec < Branch > , ApiError > {
0 commit comments