import os | |
from typing import Union, Dict | |
class KeyChain(object): | |
def __init__(self,keys:Union[None, Dict[str, str]]=None): | |
if keys is None: | |
self.keys = {} | |
else: | |
assert isinstance(keys, dict), "Keys should be dict." | |
def add_key(self, service:str, key:str): | |
if os.path.exists(key): # it's a file | |
with open(key, "r") as f: | |
key = f.readline().strip() | |
self.keys.update({service: key}) | |
return self | |
def get_key(self, service:str ): | |
if service not in self.keys: | |
raise ValueError(f"No keys associated with '{service}'") | |
return self.keys[service] | |
def __getitem__(self, service:str): | |
return self.get_key(service) | |