diff --git a/main.go b/main.go index 2b7d1f0..4ddd186 100644 --- a/main.go +++ b/main.go @@ -88,6 +88,31 @@ func fileExtension(url string) string { // Скачиваем и сохраняем изображение func downloadImage(url, filename string) error { + const maxRetries = 3 + const retryDelay = 1 * time.Second + + var lastErr error + for attempt := 1; attempt <= maxRetries; attempt++ { + // Попытка скачать изображение + err := attemptDownload(url, filename) + if err == nil { + // Успешно скачали + return nil + } + + lastErr = err + if attempt < maxRetries { + fmt.Printf("Attempt %d failed for %s: %v. Retrying in %v...\n", + attempt, url, err, retryDelay) + time.Sleep(retryDelay) + } + } + + return fmt.Errorf("all %d download attempts failed: %v", maxRetries, lastErr) +} + +// Одна попытка скачивания +func attemptDownload(url, filename string) error { resp, err := http.Get(url) if err != nil { return err