1
0
mirror of https://github.com/EDCD/EDMarketConnector.git synced 2025-06-01 16:11:18 +03:00

updated inara to work with new killswitches

This commit is contained in:
A_D 2021-07-07 16:28:42 +02:00
parent 366da05cba
commit 8c0457bf47
No known key found for this signature in database
GPG Key ID: 4BE9EB7DF45076C4

View File

@ -1,5 +1,6 @@
"""Inara Sync.""" """Inara Sync."""
import copy
import json import json
import threading import threading
import time import time
@ -9,7 +10,8 @@ from operator import itemgetter
from threading import Lock, Thread from threading import Lock, Thread
from typing import TYPE_CHECKING, Any, Callable, Deque, Dict, List, Mapping, NamedTuple, Optional from typing import TYPE_CHECKING, Any, Callable, Deque, Dict, List, Mapping, NamedTuple, Optional
from typing import OrderedDict as OrderedDictT from typing import OrderedDict as OrderedDictT
from typing import Sequence, Union, cast from typing import Sequence, Tuple, Union, cast
from dataclasses import dataclass
import requests import requests
@ -47,7 +49,8 @@ class Credentials(NamedTuple):
EVENT_DATA = Union[Mapping[str, Any], Sequence[Mapping[str, Any]]] EVENT_DATA = Union[Mapping[str, Any], Sequence[Mapping[str, Any]]]
class Event(NamedTuple): @dataclass
class Event:
"""Event represents an event for the Inara API.""" """Event represents an event for the Inara API."""
name: str name: str
@ -334,21 +337,21 @@ def journal_entry( # noqa: C901, CCR001
:return: str - empty if no error, else error string. :return: str - empty if no error, else error string.
""" """
if (ks := killswitch.get_disabled('plugins.inara.journal')).disabled: should_return, new_entry = killswitch.check_killswitch('plugins.inara.journal', entry, logger)
logger.warning(f'Inara support has been disabled via killswitch: {ks.reason}') if should_return:
plug.show_error(_('Inara disabled. See Log.')) # LANG: INARA support disabled via killswitch plug.show_error(_('Inara disabled. See Log.')) # LANG: INARA support disabled via killswitch
logger.trace('returning due to killswitch match')
return '' return ''
elif (ks := killswitch.get_disabled(f'plugins.inara.journal.event.{entry["event"]}')).disabled: should_return, new_entry = killswitch.check_killswitch(
logger.warning(f'event {entry["event"]} processing has been disabled via killswitch: {ks.reason}') f'plugins.inara.journal.event.{entry["event"]}', entry, logger
if ks.kill is None or 'delete_fields' not in ks.kill.additional_data: )
# this can and WILL break state, but if we're concerned about it sending bad data, we'd disable globally anyway if should_return:
return '' logger.trace('returning due to killswitch match')
# this can and WILL break state, but if we're concerned about it sending bad data, we'd disable globally anyway
elif 'delete_fields' in ks.kill.additional_data: return ''
for field in ks.kill.additional_data['delete_fields']:
entry.pop(field, None)
entry = new_entry # type: ignore # Im done trying to teach mypy how to generic. Its the same thing, I promise.
this.on_foot = state['OnFoot'] this.on_foot = state['OnFoot']
event_name: str = entry['event'] event_name: str = entry['event']
this.cmdr = cmdr this.cmdr = cmdr
@ -1466,21 +1469,17 @@ def new_add_event(
this.events[key].append(Event(name, timestamp, data)) this.events[key].append(Event(name, timestamp, data))
def clean_event_list(event_list: List[Event]) -> list[Event]: def clean_event_list(event_list: List[Event]) -> List[Event]:
"""Check for killswitched events and remove or modify them as requested.""" """Check for killswitched events and remove or modify them as requested."""
out = [] out = []
for e in event_list: for e in event_list:
ks = killswitch.get_disabled(f'plugins.inara.worker.{e.name}') bad, new_event = killswitch.check_killswitch(f'plugins.inara.worker.{e.name}', e.data, logger)
if not ks.disabled: if bad:
out.append(e) continue
if ks.kill is not None and 'delete_fields' in ks.kill.additional_data: e.data = new_event
# its disabled, but... we have out.append(e)
for field in ks.kill.additional_data['delete_fields']:
cast(Dict[str, Any], e.data).pop(field, None)
out.append(e)
return out return out
@ -1515,6 +1514,7 @@ def new_worker():
{'eventName': e.name, 'eventTimestamp': e.timestamp, 'eventData': e.data} for e in event_list {'eventName': e.name, 'eventTimestamp': e.timestamp, 'eventData': e.data} for e in event_list
] ]
} }
logger.info(f'sending {len(data["events"])} events for {creds.cmdr}') logger.info(f'sending {len(data["events"])} events for {creds.cmdr}')
logger.trace_if('plugin.inara.events', f'Events:\n{json.dumps(data)}\n') logger.trace_if('plugin.inara.events', f'Events:\n{json.dumps(data)}\n')