import json import sys from clients.webclients import CLIENTS def load_source(config): if config["type"] in CLIENTS: source = CLIENTS[config["type"]](**config) source.login() return source class LogSettings: log_format = None type_field = None spatials = None actions = None analyzers = [] boards = None sequences = None custom = None def __init__(self, json_dict): self.log_format = json_dict['logFormat'] self.type_field = json_dict['entryType'] self.spatials = json_dict['spatials'] self.actions = json_dict['actions'] self.boards = json_dict['boards'] for mod in json_dict['analyzers']: for name in json_dict['analyzers'][mod]: print(mod, name, getattr(sys.modules[mod], name)) self.analyzers.append(getattr(sys.modules[mod], name)) self.sequences = json_dict['sequences'] if 'custom' in json_dict: self.custom = json_dict['custom'] if "source" in json_dict: self.source = load_source(json_dict['source']) if "render" in json_dict: self.render = json_dict['render'] def __repr__(self): return str({ "logFormat": self.log_format, "entryType": self.type_field, "spatials": self.spatials, "actions": self.actions, "analyzers": self.analyzers, "boards": self.boards, "sequences": self.sequences, "custom": self.custom, }) def load_settings(file: str) -> LogSettings: return LogSettings(json.load(open(file))) def parse_settings(config: str) -> LogSettings: return LogSettings(json.loads(config))