project/analysis/analyzers/settings.py

60 lines
1.5 KiB
Python

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