add ai feature
This commit is contained in:
41
internal/ai/config.go
Normal file
41
internal/ai/config.go
Normal file
@@ -0,0 +1,41 @@
|
||||
package ai
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"os"
|
||||
)
|
||||
|
||||
var apiKeyEnvVars = []string{
|
||||
"GOOGLE_API_KEY",
|
||||
"GEMINI_API_KEY",
|
||||
"RENAMER_AI_KEY",
|
||||
}
|
||||
|
||||
// Credentials encapsulates the values required to authenticate with the AI provider.
|
||||
type Credentials struct {
|
||||
APIKey string
|
||||
}
|
||||
|
||||
// LoadCredentials returns the AI credentials sourced from environment variables.
|
||||
func LoadCredentials() (Credentials, error) {
|
||||
for _, env := range apiKeyEnvVars {
|
||||
if key, ok := os.LookupEnv(env); ok && key != "" {
|
||||
return Credentials{APIKey: key}, nil
|
||||
}
|
||||
}
|
||||
return Credentials{}, errors.New("AI provider key missing; set GOOGLE_API_KEY (recommended), GEMINI_API_KEY, or RENAMER_AI_KEY")
|
||||
}
|
||||
|
||||
// MaskedCredentials returns a redacted view of the credentials for logging purposes.
|
||||
func MaskedCredentials(creds Credentials) string {
|
||||
if creds.APIKey == "" {
|
||||
return "(empty)"
|
||||
}
|
||||
|
||||
if len(creds.APIKey) <= 6 {
|
||||
return "***"
|
||||
}
|
||||
|
||||
return fmt.Sprintf("%s***", creds.APIKey[:3])
|
||||
}
|
||||
Reference in New Issue
Block a user