Class: Zwischen::Credentials
- Inherits:
-
Object
- Object
- Zwischen::Credentials
- Defined in:
- lib/zwischen/credentials.rb
Constant Summary collapse
- PROVIDER_ENV_VARS =
{ "claude" => "ANTHROPIC_API_KEY", "openai" => "OPENAI_API_KEY" }.freeze
- PROVIDER_KEYS =
{ "claude" => "anthropic_api_key", "openai" => "openai_api_key" }.freeze
Class Method Summary collapse
- .credentials_path ⇒ Object
- .ensure_directory ⇒ Object
- .get_api_key(provider = "claude") ⇒ Object
- .load ⇒ Object
- .save(provider: "claude", api_key:) ⇒ Object
Class Method Details
.credentials_path ⇒ Object
18 19 20 |
# File 'lib/zwischen/credentials.rb', line 18 def self.credentials_path File.join(Dir.home, ".zwischen", "credentials") end |
.ensure_directory ⇒ Object
22 23 24 25 |
# File 'lib/zwischen/credentials.rb', line 22 def self.ensure_directory dir = File.dirname(credentials_path) FileUtils.mkdir_p(dir) unless File.directory?(dir) end |
.get_api_key(provider = "claude") ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/zwischen/credentials.rb', line 55 def self.get_api_key(provider = "claude") # Priority: ENV var > credentials file env_var = PROVIDER_ENV_VARS[provider] env_value = env_var && ENV[env_var] return env_value if env_value && !env_value.strip.empty? key_name = PROVIDER_KEYS[provider] return nil unless key_name credentials = load credentials[key_name] end |
.load ⇒ Object
27 28 29 30 31 32 33 34 |
# File 'lib/zwischen/credentials.rb', line 27 def self.load return {} unless File.exist?(credentials_path) YAML.safe_load(File.read(credentials_path)) || {} rescue StandardError => e warn "Failed to load credentials: #{e.}" {} end |
.save(provider: "claude", api_key:) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/zwischen/credentials.rb', line 36 def self.save(provider: "claude", api_key:) ensure_directory credentials = load key_name = PROVIDER_KEYS[provider] if key_name credentials[key_name] = api_key else warn "Unknown provider: #{provider}" end File.write(credentials_path, credentials.to_yaml) File.chmod(0o600, credentials_path) rescue StandardError => e warn "Failed to save credentials: #{e.}" raise end |