From 5f63666f5fc75b1b6e6b06c16de4cbf1e48c4e8d Mon Sep 17 00:00:00 2001 From: Mark Jessop Date: Sat, 3 Feb 2024 15:56:02 +1030 Subject: [PATCH] Handle 202 responses from Sondehub better. --- horusdemodlib/__init__.py | 2 +- horusdemodlib/sondehubamateur.py | 24 ++++++++++++++++++++++++ pyproject.toml | 2 +- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/horusdemodlib/__init__.py b/horusdemodlib/__init__.py index df0ed33..8a3be2e 100755 --- a/horusdemodlib/__init__.py +++ b/horusdemodlib/__init__.py @@ -1 +1 @@ -__version__ = "0.3.12" +__version__ = "0.3.13" diff --git a/horusdemodlib/sondehubamateur.py b/horusdemodlib/sondehubamateur.py index fc244f1..b3da2bd 100644 --- a/horusdemodlib/sondehubamateur.py +++ b/horusdemodlib/sondehubamateur.py @@ -344,6 +344,30 @@ class SondehubAmateurUploader(object): _upload_success = True break + elif _req.status_code == 202: + # A 202 return code means there was some kind of data issue. + # We expect a response of the form {"message": "error message", "errors":[], "warnings":[]} + try: + _resp_json = _req.json() + + for _error in _resp_json['errors']: + self.log_error("Payload data error: " + _error["error_message"]) + if 'payload' in _error: + self.log_debug("Payload data associated with error: " + str(_error['payload'])) + + for _warning in _resp_json['warnings']: + self.log_warning("Payload data warning: " + _warning["warning_message"]) + if 'payload' in _warning: + self.log_debug("Payload data associated with warning: " + str(_warning['payload'])) + + except Exception as e: + self.log_error("Error when parsing 202 response: %s" % str(e)) + self.log_debug("Content of 202 response: %s" % _req.text) + + _upload_success = True + break + + elif _req.status_code in [500,501,502,503,504]: # Server Error, Retry. _retries += 1 diff --git a/pyproject.toml b/pyproject.toml index 1935df1..d0e870f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "horusdemodlib" -version = "0.3.12" +version = "0.3.13" description = "Project Horus HAB Telemetry Demodulators" authors = ["Mark Jessop"] license = "LGPL-2.1-or-later"