feat(网关): 引入 OpenAI/Claude OAuth token 缓存
新增 OpenAI/Claude TokenProvider 与缓存键生成 扩展 OAuth 缓存失效覆盖更多平台 统一 OAuth 缓存前缀与依赖注入
This commit is contained in:
@@ -7,29 +7,35 @@ type TokenCacheInvalidator interface {
|
||||
}
|
||||
|
||||
type CompositeTokenCacheInvalidator struct {
|
||||
geminiCache GeminiTokenCache
|
||||
cache GeminiTokenCache // 统一使用一个缓存接口,通过缓存键前缀区分平台
|
||||
}
|
||||
|
||||
func NewCompositeTokenCacheInvalidator(geminiCache GeminiTokenCache) *CompositeTokenCacheInvalidator {
|
||||
func NewCompositeTokenCacheInvalidator(cache GeminiTokenCache) *CompositeTokenCacheInvalidator {
|
||||
return &CompositeTokenCacheInvalidator{
|
||||
geminiCache: geminiCache,
|
||||
cache: cache,
|
||||
}
|
||||
}
|
||||
|
||||
func (c *CompositeTokenCacheInvalidator) InvalidateToken(ctx context.Context, account *Account) error {
|
||||
if c == nil || c.geminiCache == nil || account == nil {
|
||||
if c == nil || c.cache == nil || account == nil {
|
||||
return nil
|
||||
}
|
||||
if account.Type != AccountTypeOAuth {
|
||||
return nil
|
||||
}
|
||||
|
||||
var cacheKey string
|
||||
switch account.Platform {
|
||||
case PlatformGemini:
|
||||
return c.geminiCache.DeleteAccessToken(ctx, GeminiTokenCacheKey(account))
|
||||
cacheKey = GeminiTokenCacheKey(account)
|
||||
case PlatformAntigravity:
|
||||
return c.geminiCache.DeleteAccessToken(ctx, AntigravityTokenCacheKey(account))
|
||||
cacheKey = AntigravityTokenCacheKey(account)
|
||||
case PlatformOpenAI:
|
||||
cacheKey = OpenAITokenCacheKey(account)
|
||||
case PlatformAnthropic:
|
||||
cacheKey = ClaudeTokenCacheKey(account)
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
return c.cache.DeleteAccessToken(ctx, cacheKey)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user