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