mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2026-11-07 00:05:14 +00:00
* feat(ai): open source model marketplace and migrate historical data * fix(ai): wait for canceled model downloads before retrying
35 lines
1.0 KiB
Go
35 lines
1.0 KiB
Go
package req_helper
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"net/http"
|
|
"net/url"
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/1Panel-dev/1Panel/agent/constant"
|
|
"github.com/1Panel-dev/1Panel/agent/global"
|
|
)
|
|
|
|
func LoadAIResource(directory, localVersion string) ([]byte, string, error) {
|
|
baseURL := fmt.Sprintf("%s/%s", global.ResourceURL(), directory)
|
|
versionURL := fmt.Sprintf("%s/version.txt?t=%d", baseURL, time.Now().UnixNano())
|
|
_, versionData, err := HandleRequest(versionURL, http.MethodGet, constant.TimeOut20s)
|
|
if err != nil {
|
|
return nil, "", fmt.Errorf("load %s version failed: %w", directory, err)
|
|
}
|
|
version := strings.TrimSpace(string(versionData))
|
|
if version == "" {
|
|
return nil, "", errors.New("remote resource version is empty")
|
|
}
|
|
if version == strings.TrimSpace(localVersion) {
|
|
return nil, version, nil
|
|
}
|
|
_, data, err := HandleRequest(baseURL+"/data.yaml?version="+url.QueryEscape(version), http.MethodGet, constant.TimeOut20s)
|
|
if err != nil {
|
|
return nil, "", fmt.Errorf("load %s data.yaml failed: %w", directory, err)
|
|
}
|
|
return data, version, nil
|
|
}
|