64 lines
1.6 KiB
Python
64 lines
1.6 KiB
Python
import json
|
|
import logging
|
|
import sys
|
|
from clients.webclients import CLIENTS
|
|
|
|
log: logging.Logger = logging.getLogger(__name__)
|
|
|
|
def load_source(config):
|
|
if config["type"] in CLIENTS:
|
|
source = CLIENTS[config["type"]](**config)
|
|
source.login()
|
|
return source
|
|
else:
|
|
log.warn(f"client {config['type']} not found!")
|
|
|
|
|
|
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))
|