-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathapi.py
60 lines (53 loc) · 2.04 KB
/
api.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# api.py
import os
from dotenv import load_dotenv, set_key, unset_key, dotenv_values
class APIManager:
def __init__(self, env_file='.env'):
self.env_file = env_file
load_dotenv(self.env_file)
self.api_keys = self.load_api_keys()
def load_api_keys(self):
api_keys = {}
for key, value in dotenv_values(self.env_file).items():
if key.endswith('_API_KEY'):
api_keys[key] = value
return api_keys
def get_api_key(self, api_name):
key_name = f"{api_name.upper()}_API_KEY"
api_key = self.api_keys.get(key_name)
print(f"DEBUG: Loaded API key for {api_name}: {api_key}") # Debug statement
return api_key
def add_api_key_interactive(self):
while True:
api_name = input("Enter API name (or press Enter to quit): ").strip()
if not api_name:
break
api_key = input(f"Enter API key for {api_name}: ").strip()
if not api_key:
print("API key cannot be empty.")
continue
key_name = f"{api_name.upper()}_API_KEY"
self.api_keys[key_name] = api_key
set_key(self.env_file, key_name, api_key)
print(f"API key for {api_name} added.")
def list_api_keys(self):
print("Loaded API keys:")
for key in self.api_keys.keys():
api_name = key.replace('_API_KEY', '').lower()
print(f"- {api_name}")
def remove_api_key(self, api_name):
key_name = f"{api_name.upper()}_API_KEY"
if key_name in self.api_keys:
unset_key(self.env_file, key_name)
del self.api_keys[key_name]
print(f"API key for {api_name} removed.")
else:
print(f"No API key found for {api_name}.")
# Usage example
if __name__ == "__main__":
api_manager = APIManager()
openai_api_key = api_manager.get_api_key('openai')
if openai_api_key:
print(f"OpenAI API key: {openai_api_key}")
else:
print("OpenAI API key not found.")