v5.0.70: all URLs use ?endpoint= (fix query params in path)

This commit is contained in:
“Naeel”
2026-07-01 15:43:27 +04:00
parent 97ea19ed1b
commit 3f9b02c7f7
3 changed files with 21 additions and 6 deletions
+19 -4
View File
@@ -507,7 +507,7 @@ func (c *UniversalClient) FindInstanceByDisplayName(ctx context.Context, service
if len(found) == 0 {
page := 1
for {
reqURL := fmt.Sprintf("%s/instances?page=%d&size=100", c.ApiEndpoint, page)
reqURL := fmt.Sprintf("%s?endpoint=/instances&page=%d&size=100", c.ApiEndpoint, page)
req, err := http.NewRequestWithContext(ctx, "GET", reqURL, nil)
if err != nil {
return nil, err
@@ -581,7 +581,7 @@ func (c *UniversalClient) FindInstanceByDisplayName(ctx context.Context, service
}
func (c *UniversalClient) GetInstanceState(ctx context.Context, instanceUid string) (*InstanceStateResponse, error) {
url := fmt.Sprintf("%s/instances/%s", c.ApiEndpoint, instanceUid)
url := fmt.Sprintf("%s?endpoint=/instances/%s", c.ApiEndpoint, instanceUid)
req, err := http.NewRequestWithContext(ctx, "GET", url, nil)
if err != nil {
return nil, err
@@ -627,7 +627,7 @@ func isInstanceDeleted(state *InstanceStateResponse) bool {
// GetInstanceStateRaw получает состояние инстанса БЕЗ валидации статуса.
// Используется для проверки ref-параметров: нужно читать даже deleted/suspended инстансы.
func (c *UniversalClient) GetInstanceStateRaw(ctx context.Context, instanceUid string) (*InstanceStateResponse, error) {
reqURL := fmt.Sprintf("%s/instances/%s", c.ApiEndpoint, instanceUid)
reqURL := fmt.Sprintf("%s?endpoint=/instances/%s", c.ApiEndpoint, instanceUid)
req, err := http.NewRequestWithContext(ctx, "GET", reqURL, nil)
if err != nil {
return nil, err
@@ -834,8 +834,23 @@ func (c *UniversalClient) doRequest(ctx context.Context, method, path string, pa
}
// ?endpoint= формат — как генератор (Python) и curl
endpointPath := path
extraQuery := ""
if idx := strings.Index(path, "?"); idx >= 0 {
endpointPath = path[:idx]
extraQuery = path[idx+1:]
}
q := req.URL.Query()
q.Set("endpoint", path)
q.Set("endpoint", endpointPath)
if extraQuery != "" {
// Добавляем параметры из path в URL (не в endpoint)
for _, param := range strings.Split(extraQuery, "&") {
kv := strings.SplitN(param, "=", 2)
if len(kv) == 2 {
q.Set(kv[0], kv[1])
}
}
}
req.URL.RawQuery = q.Encode()
req.Header.Set("User-Agent", userAgent)
+1 -1
View File
@@ -10,7 +10,7 @@ import (
)
var (
version string = "5.0.69"
version string = "5.0.70"
)
func main() {