Class: Zwischen::Credentials

Inherits:
Object
  • Object
show all
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

Class Method Details

.credentials_pathObject



18
19
20
# File 'lib/zwischen/credentials.rb', line 18

def self.credentials_path
  File.join(Dir.home, ".zwischen", "credentials")
end

.ensure_directoryObject



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

.loadObject



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.message}"
  {}
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.message}"
  raise
end