@@ -233,7 +233,7 @@ impl MirrorSource<'_, '_> {
233
233
self . sources . first ( ) . unwrap ( ) . from ( )
234
234
}
235
235
236
- pub fn get_human_download_url (
236
+ pub fn get_human_download_message (
237
237
& self ,
238
238
file_name : Option < & str > ,
239
239
) -> Result < String , RefreshError > {
@@ -313,59 +313,41 @@ impl MirrorSource<'_, '_> {
313
313
{
314
314
let dist_path = self . dist_path ( ) ;
315
315
316
- let mut r = None ;
317
- let mut u = None ;
318
- let mut is_release = false ;
319
-
320
- let msg = self . get_human_download_url ( None ) ?;
316
+ let msg = self . get_human_download_message ( None ) ?;
321
317
322
318
callback ( Event :: DownloadEvent ( oma_fetch:: Event :: NewProgressSpinner {
323
319
index,
324
320
msg : format ! ( "({}/{}) {}" , index, total, msg) ,
325
321
} ) )
326
322
. await ;
327
323
328
- for ( index, file_name) in [ "InRelease" , "Release" ] . iter ( ) . enumerate ( ) {
329
- let url = format ! ( "{}/{}" , dist_path, file_name) ;
330
- let request = build_request_with_basic_auth (
331
- client,
332
- Method :: GET ,
333
- & self
334
- . auth ( )
335
- . map ( |x| ( x. login . to_string ( ) , x. password . to_string ( ) ) ) ,
336
- & url,
337
- ) ;
338
-
339
- let resp = request
340
- . send ( )
341
- . await
342
- . and_then ( |resp| resp. error_for_status ( ) ) ;
343
-
344
- r = Some ( resp) ;
324
+ let mut url = format ! ( "{}/InRelease" , dist_path) ;
325
+ let mut is_release = false ;
345
326
346
- if r. as_ref ( ) . unwrap ( ) . is_ok ( ) {
347
- u = Some ( url) ;
348
- if index == 1 {
349
- is_release = true ;
327
+ let resp = match self . send_request ( client, & url, Method :: GET ) . await {
328
+ Ok ( resp) => resp,
329
+ Err ( e) => {
330
+ debug ! ( "{e}" ) ;
331
+ url = format ! ( "{}/Release" , dist_path) ;
332
+ let resp = self . send_request ( client, & url, Method :: GET ) . await ;
333
+
334
+ if resp. is_err ( ) && self . is_flat ( ) {
335
+ // Flat repo no release
336
+ callback ( Event :: DownloadEvent ( oma_fetch:: Event :: ProgressDone ( index) ) ) . await ;
337
+ return Ok ( ( ) ) ;
350
338
}
351
- break ;
352
- }
353
- }
354
339
355
- let r = r . unwrap ( ) ;
340
+ is_release = true ;
356
341
357
- callback ( Event :: DownloadEvent ( oma_fetch:: Event :: ProgressDone ( index) ) ) . await ;
342
+ callback ( Event :: DownloadEvent ( oma_fetch:: Event :: ProgressDone ( index) ) ) . await ;
358
343
359
- if r . is_err ( ) && self . is_flat ( ) {
360
- // Flat repo no release
361
- return Ok ( ( ) ) ;
362
- }
344
+ resp . map_err ( |e| SingleDownloadError :: ReqwestError { source : e } )
345
+ . map_err ( |e| RefreshError :: DownloadFailed ( Some ( e ) ) ) ?
346
+ }
347
+ } ;
363
348
364
- let resp = r
365
- . map_err ( |e| SingleDownloadError :: ReqwestError { source : e } )
366
- . map_err ( |e| RefreshError :: DownloadFailed ( Some ( e) ) ) ?;
349
+ callback ( Event :: DownloadEvent ( oma_fetch:: Event :: ProgressDone ( index) ) ) . await ;
367
350
368
- let url = u. unwrap ( ) ;
369
351
let file_name = replacer. replace ( & url) ?;
370
352
371
353
self . download_file ( & file_name, resp, index, total, download_dir, & callback)
@@ -403,6 +385,27 @@ impl MirrorSource<'_, '_> {
403
385
Ok ( ( ) )
404
386
}
405
387
388
+ async fn send_request (
389
+ & self ,
390
+ client : & Client ,
391
+ url : & str ,
392
+ method : Method ,
393
+ ) -> Result < Response , oma_fetch:: reqwest:: Error > {
394
+ let request = build_request_with_basic_auth (
395
+ client,
396
+ method,
397
+ & self
398
+ . auth ( )
399
+ . map ( |x| ( x. login . to_string ( ) , x. password . to_string ( ) ) ) ,
400
+ url,
401
+ ) ;
402
+
403
+ request
404
+ . send ( )
405
+ . await
406
+ . and_then ( |resp| resp. error_for_status ( ) )
407
+ }
408
+
406
409
async fn download_file < F , Fut > (
407
410
& self ,
408
411
file_name : & str ,
@@ -424,7 +427,7 @@ impl MirrorSource<'_, '_> {
424
427
"({}/{}) {}" ,
425
428
index,
426
429
total,
427
- self . get_human_download_url ( Some ( file_name) ) . unwrap( ) ,
430
+ self . get_human_download_message ( Some ( file_name) ) . unwrap( ) ,
428
431
) ,
429
432
size : total_size,
430
433
} ) ) ;
@@ -482,7 +485,7 @@ impl MirrorSource<'_, '_> {
482
485
483
486
let mut name = None ;
484
487
485
- let msg = self . get_human_download_url ( None ) ?;
488
+ let msg = self . get_human_download_message ( None ) ?;
486
489
487
490
callback ( Event :: DownloadEvent ( oma_fetch:: Event :: NewProgressSpinner {
488
491
index,
0 commit comments