fix(importer): correctly define importer struct with long timeout client
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user