fix(importer): correctly define importer struct with long timeout client

This commit is contained in:
2025-06-19 18:00:12 +03:00
parent 3b74bf16ad
commit 119863b816

View File

@@ -20,28 +20,31 @@ import (
// CurseForgeImporter реализует импорт для сборок CurseForge.
type CurseForgeImporter struct {
StoragePath string
APIKey string
HTTPClient *http.Client
StoragePath string
APIKey string
HTTPClient *http.Client // Для быстрых API-запросов
HTTPClientLong *http.Client // ИСПРАВЛЕНИЕ: Добавляем это поле в структуру
}
// NewCurseForgeImporter создает новый экземпляр импортера.
func NewCurseForgeImporter(storagePath, apiKey string) *CurseForgeImporter {
return &CurseForgeImporter{
StoragePath: storagePath,
APIKey: apiKey,
HTTPClient: &http.Client{Timeout: 60 * time.Second},
StoragePath: storagePath,
APIKey: apiKey,
HTTPClient: &http.Client{Timeout: 30 * time.Second},
HTTPClientLong: &http.Client{Timeout: 10 * time.Minute},
}
}
// downloadAndProcessFile скачивает файл по URL и передает его в общий обработчик.
func (i *CurseForgeImporter) downloadAndProcessFile(url string) (hash string, size int64, err error) {
// Используем клиент с длинным таймаутом и для скачивания отдельных модов
req, err := http.NewRequestWithContext(context.Background(), "GET", url, nil)
if err != nil {
return "", 0, err
}
resp, err := i.HTTPClient.Do(req)
resp, err := i.HTTPClientLong.Do(req)
if err != nil {
return "", 0, err
}
@@ -64,6 +67,7 @@ func (i *CurseForgeImporter) getFileInfo(projectID, fileID int) (*CurseForgeFile
}
req.Header.Set("x-api-key", i.APIKey)
// Используем клиент с коротким таймаутом для быстрых API-запросов
resp, err := i.HTTPClient.Do(req)
if err != nil {
return nil, err
@@ -173,7 +177,7 @@ func (i *CurseForgeImporter) DownloadModpackFromURL(pageURL string) (string, err
return "", err
}
resp, err := i.HTTPClient.Do(req)
resp, err := i.HTTPClientLong.Do(req)
if err != nil {
return "", err
}