sync: migrate ai-operator to Gitea (2026-08-10)

This commit is contained in:
konturai-ops
2026-08-10 15:26:52 +00:00
commit 53652b95ad
173 changed files with 16676 additions and 0 deletions
+47
View File
@@ -0,0 +1,47 @@
package ari
import (
"net/url"
"ai-operator/internal/config"
)
type WSAuthMode string
const (
WSAuthBasic WSAuthMode = "basic"
WSAuthQueryAPIKey WSAuthMode = "query_api_key"
WSAuthAuto WSAuthMode = "auto"
)
type WebSocketURL struct {
URL string
Sanitized string
AuthMode WSAuthMode
}
func BuildWebSocketURL(cfg config.AsteriskConfig, mode WSAuthMode) (WebSocketURL, error) {
if mode == "" {
mode = WSAuthMode(cfg.ARIWSAuthMode)
}
if mode == "" {
mode = WSAuthBasic
}
parsed, err := url.Parse(cfg.ARIWSURL)
if err != nil {
return WebSocketURL{}, err
}
q := parsed.Query()
q.Set("app", cfg.ARIApp)
if mode == WSAuthQueryAPIKey {
q.Set("api_key", cfg.ARIUser+":"+cfg.ARIPassword)
}
parsed.RawQuery = q.Encode()
sanitized := *parsed
if mode == WSAuthQueryAPIKey {
sq := sanitized.Query()
sq.Set("api_key", "***MASKED***")
sanitized.RawQuery = sq.Encode()
}
return WebSocketURL{URL: parsed.String(), Sanitized: sanitized.String(), AuthMode: mode}, nil
}