1
0
mirror of https://github.com/EDCD/EDMarketConnector.git synced 2025-04-17 17:42:20 +03:00

Merge pull request #1306 from EDCD/fix/eddn-quieten-unknown-schema-errors

EDDN: Quieten "unknown schema" errors
This commit is contained in:
Athanasius 2021-10-17 15:35:25 +01:00 committed by GitHub
commit 488fdf4976
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -108,6 +108,11 @@ class EDDN:
TIMEOUT = 10 # requests timeout
MODULE_RE = re.compile(r'^Hpt_|^Int_|Armour_', re.IGNORECASE)
CANONICALISE_RE = re.compile(r'\$(.+)_name;')
UNKNOWN_SCHEMA_RE = re.compile(
r"^FAIL: \[JsonValidationException\('Schema "
r"https://eddn.edcd.io/schemas/(?P<schema_name>.+)/(?P<schema_version>[0-9]+) is unknown, "
r"unable to validate.',\)\]$"
)
def __init__(self, parent: tk.Tk):
self.parent: tk.Tk = parent
@ -212,14 +217,15 @@ class EDDN:
logger.trace_if('plugin.eddn', "EDDN is still objecting to empty commodities data")
return # We want to silence warnings otherwise
logger.debug(
f'''Status from POST wasn't OK:
if not self.UNKNOWN_SCHEMA_RE.match(r.text):
logger.debug(
f'''Status from POST wasn't OK:
Status\t{r.status_code}
URL\t{r.url}
Headers\t{r.headers}
Content:\n{r.text}
Msg:\n{msg}'''
)
)
r.raise_for_status()
@ -281,7 +287,13 @@ Msg:\n{msg}'''
# in question out of replaylog, else we'll keep retrying a bad message
# forever.
except requests.exceptions.HTTPError as e:
status['text'] = self.http_error_to_log(e)
if unknown_schema := self.UNKNOWN_SCHEMA_RE.match(e.response.text):
logger.debug(f"EDDN doesn't (yet?) know about schema: {unknown_schema['schema_name']}"
f"/{unknown_schema['schema_version']}")
# return # Pretend it went OK so this message isn't retried
else:
status['text'] = self.http_error_to_log(e)
except requests.exceptions.RequestException as e:
logger.debug('Failed sending', exc_info=e)
@ -997,7 +1009,10 @@ def plugin_app(parent: tk.Tk) -> Optional[tk.Frame]:
def tracking_ui_update() -> None:
"""Update the Tracking UI with current data."""
"""Update the Tracking UI with current data, if required."""
if not config.eddn_tracking_ui:
return
this.ui_j_body_name['text'] = '≪None≫'
if this.body_name is not None:
this.ui_j_body_name['text'] = this.body_name