| 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) | |