mirror of
https://github.com/router-for-me/CLIProxyAPI.git
synced 2026-02-19 04:40:52 +08:00
feat(gemini-web): Introduce stable account label for identification
This commit is contained in:
@@ -80,6 +80,22 @@ func NewGeminiWebState(cfg *config.Config, token *gemini.GeminiWebTokenStorage,
|
|||||||
return state
|
return state
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Label returns a stable account label for logging and persistence.
|
||||||
|
// If a storage file path is known, it uses the file base name (without extension).
|
||||||
|
// Otherwise, it falls back to the stable client ID (e.g., "gemini-web-<hash>").
|
||||||
|
func (s *GeminiWebState) Label() string {
|
||||||
|
if s == nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
if s.storagePath != "" {
|
||||||
|
base := strings.TrimSuffix(filepath.Base(s.storagePath), filepath.Ext(s.storagePath))
|
||||||
|
if base != "" {
|
||||||
|
return base
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return s.stableClientID
|
||||||
|
}
|
||||||
|
|
||||||
func (s *GeminiWebState) loadConversationCaches() {
|
func (s *GeminiWebState) loadConversationCaches() {
|
||||||
if path := s.convStorePath(); path != "" {
|
if path := s.convStorePath(); path != "" {
|
||||||
if store, err := LoadConvStore(path); err == nil {
|
if store, err := LoadConvStore(path); err == nil {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -136,6 +137,11 @@ func (e *GeminiWebExecutor) Refresh(ctx context.Context, auth *cliproxyauth.Auth
|
|||||||
auth.Metadata["secure_1psidts"] = ts.Secure1PSIDTS
|
auth.Metadata["secure_1psidts"] = ts.Secure1PSIDTS
|
||||||
auth.Metadata["type"] = "gemini-web"
|
auth.Metadata["type"] = "gemini-web"
|
||||||
auth.Metadata["last_refresh"] = time.Now().Format(time.RFC3339)
|
auth.Metadata["last_refresh"] = time.Now().Format(time.RFC3339)
|
||||||
|
if v, ok := auth.Metadata["label"].(string); !ok || strings.TrimSpace(v) == "" {
|
||||||
|
if lbl := state.Label(); strings.TrimSpace(lbl) != "" {
|
||||||
|
auth.Metadata["label"] = strings.TrimSpace(lbl)
|
||||||
|
}
|
||||||
|
}
|
||||||
return auth, nil
|
return auth, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user