From 4a4dfaa9100c359ac2f11428014d08e9b3454724 Mon Sep 17 00:00:00 2001 From: hkfires <10558748+hkfires@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:21:52 +0800 Subject: [PATCH] refactor(auth): replace sanitizeAntigravityFileName with antigravity.CredentialFileName --- internal/api/handlers/management/auth_files.go | 11 ++--------- internal/auth/antigravity/filename.go | 16 ++++++++++++++++ sdk/auth/antigravity.go | 11 ++--------- 3 files changed, 20 insertions(+), 18 deletions(-) create mode 100644 internal/auth/antigravity/filename.go diff --git a/internal/api/handlers/management/auth_files.go b/internal/api/handlers/management/auth_files.go index b3867746..034cc274 100644 --- a/internal/api/handlers/management/auth_files.go +++ b/internal/api/handlers/management/auth_files.go @@ -21,6 +21,7 @@ import ( "time" "github.com/gin-gonic/gin" + "github.com/router-for-me/CLIProxyAPI/v6/internal/auth/antigravity" "github.com/router-for-me/CLIProxyAPI/v6/internal/auth/claude" "github.com/router-for-me/CLIProxyAPI/v6/internal/auth/codex" geminiAuth "github.com/router-for-me/CLIProxyAPI/v6/internal/auth/gemini" @@ -232,14 +233,6 @@ func stopForwarderInstance(port int, forwarder *callbackForwarder) { log.Infof("callback forwarder on port %d stopped", port) } -func sanitizeAntigravityFileName(email string) string { - if strings.TrimSpace(email) == "" { - return "antigravity.json" - } - replacer := strings.NewReplacer("@", "_", ".", "_") - return fmt.Sprintf("antigravity-%s.json", replacer.Replace(email)) -} - func (h *Handler) managementCallbackURL(path string) (string, error) { if h == nil || h.cfg == nil || h.cfg.Port <= 0 { return "", fmt.Errorf("server port is not configured") @@ -1715,7 +1708,7 @@ func (h *Handler) RequestAntigravityToken(c *gin.Context) { metadata["project_id"] = projectID } - fileName := sanitizeAntigravityFileName(email) + fileName := antigravity.CredentialFileName(email) label := strings.TrimSpace(email) if label == "" { label = "antigravity" diff --git a/internal/auth/antigravity/filename.go b/internal/auth/antigravity/filename.go new file mode 100644 index 00000000..03ad3e2f --- /dev/null +++ b/internal/auth/antigravity/filename.go @@ -0,0 +1,16 @@ +package antigravity + +import ( + "fmt" + "strings" +) + +// CredentialFileName returns the filename used to persist Antigravity credentials. +// It uses the email as a suffix to disambiguate accounts. +func CredentialFileName(email string) string { + email = strings.TrimSpace(email) + if email == "" { + return "antigravity.json" + } + return fmt.Sprintf("antigravity-%s.json", email) +} diff --git a/sdk/auth/antigravity.go b/sdk/auth/antigravity.go index 210da57f..4ae0e994 100644 --- a/sdk/auth/antigravity.go +++ b/sdk/auth/antigravity.go @@ -11,6 +11,7 @@ import ( "strings" "time" + "github.com/router-for-me/CLIProxyAPI/v6/internal/auth/antigravity" "github.com/router-for-me/CLIProxyAPI/v6/internal/browser" "github.com/router-for-me/CLIProxyAPI/v6/internal/config" "github.com/router-for-me/CLIProxyAPI/v6/internal/misc" @@ -204,7 +205,7 @@ waitForCallback: metadata["project_id"] = projectID } - fileName := sanitizeAntigravityFileName(email) + fileName := antigravity.CredentialFileName(email) label := email if label == "" { label = "antigravity" @@ -354,14 +355,6 @@ func buildAntigravityAuthURL(redirectURI, state string) string { return "https://accounts.google.com/o/oauth2/v2/auth?" + params.Encode() } -func sanitizeAntigravityFileName(email string) string { - if strings.TrimSpace(email) == "" { - return "antigravity.json" - } - replacer := strings.NewReplacer("@", "_", ".", "_") - return fmt.Sprintf("antigravity-%s.json", replacer.Replace(email)) -} - // Antigravity API constants for project discovery const ( antigravityAPIEndpoint = "https://cloudcode-pa.googleapis.com"