Engine API fails to store playlog due to invalid date format from Liquidsoap
For some reason Liquidsoap passes a different date format %Y/%m/%d+%H:%M:%S
and is hence not parsable bei Connexions default dateutil.parser.parse
implementation.
All other dates are formatted as yyyy-mm-dd hh:mm
.
Reported by @EorlBruder (see engine-api#23 (closed)).
Logs
Engine API
engine-api | 2022-03-24T09:20:43.059388748Z [2022-03-24 10:20:43,057] ERROR in app: Exception on /api/v1/playlog [POST]
engine-api | 2022-03-24T09:20:43.059430694Z Traceback (most recent call last):
engine-api | 2022-03-24T09:20:43.059434955Z File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 2073, in wsgi_app
engine-api | 2022-03-24T09:20:43.059438423Z response = self.full_dispatch_request()
engine-api | 2022-03-24T09:20:43.059441623Z File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1518, in full_dispatch_request
engine-api | 2022-03-24T09:20:43.059445396Z rv = self.handle_user_exception(e)
engine-api | 2022-03-24T09:20:43.059449611Z File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1516, in full_dispatch_request
engine-api | 2022-03-24T09:20:43.059454256Z rv = self.dispatch_request()
engine-api | 2022-03-24T09:20:43.059458768Z File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1502, in dispatch_request
engine-api | 2022-03-24T09:20:43.059463240Z return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
engine-api | 2022-03-24T09:20:43.059468469Z File "/usr/local/lib/python3.8/site-packages/connexion/decorators/decorator.py", line 48, in wrapper
engine-api | 2022-03-24T09:20:43.059489497Z response = function(request)
engine-api | 2022-03-24T09:20:43.059493929Z File "/usr/local/lib/python3.8/site-packages/connexion/decorators/uri_parsing.py", line 144, in wrapper
engine-api | 2022-03-24T09:20:43.059523835Z response = function(request)
engine-api | 2022-03-24T09:20:43.059528181Z File "/usr/local/lib/python3.8/site-packages/connexion/decorators/validation.py", line 184, in wrapper
engine-api | 2022-03-24T09:20:43.059532534Z response = function(request)
engine-api | 2022-03-24T09:20:43.059536749Z File "/usr/local/lib/python3.8/site-packages/connexion/decorators/parameter.py", line 121, in wrapper
engine-api | 2022-03-24T09:20:43.059541158Z return function(**kwargs)
engine-api | 2022-03-24T09:20:43.059544150Z File "/srv/src/rest/controllers/internal_controller.py", line 25, in add_playlog
engine-api | 2022-03-24T09:20:43.059547111Z body = PlayLog.from_dict(connexion.request.get_json()) # noqa: E501
engine-api | 2022-03-24T09:20:43.059550035Z File "/srv/src/rest/models/play_log.py", line 106, in from_dict
engine-api | 2022-03-24T09:20:43.059564551Z return util.deserialize_model(dikt, cls)
engine-api | 2022-03-24T09:20:43.059568264Z File "/srv/src/rest/util.py", line 125, in deserialize_model
engine-api | 2022-03-24T09:20:43.059571304Z setattr(instance, attr, _deserialize(value, attr_type))
engine-api | 2022-03-24T09:20:43.059574153Z File "/srv/src/rest/util.py", line 25, in _deserialize
engine-api | 2022-03-24T09:20:43.059577073Z return deserialize_datetime(data)
engine-api | 2022-03-24T09:20:43.059579980Z File "/srv/src/rest/util.py", line 102, in deserialize_datetime
engine-api | 2022-03-24T09:20:43.059582877Z return parse(string)
engine-api | 2022-03-24T09:20:43.059585637Z File "/usr/local/lib/python3.8/site-packages/dateutil/parser.py", line 1168, in parse
engine-api | 2022-03-24T09:20:43.059588621Z return DEFAULTPARSER.parse(timestr, **kwargs)
engine-api | 2022-03-24T09:20:43.059591810Z File "/usr/local/lib/python3.8/site-packages/dateutil/parser.py", line 559, in parse
engine-api | 2022-03-24T09:20:43.059597083Z raise ValueError("Unknown string format")
engine-api | 2022-03-24T09:20:43.059602356Z ValueError: Unknown string format