Skip to content

satnogs_client: Fix error handling in get_paginated_endpoint

Previously, using an inavlid API url (that returned 404) caused the following JSON parsing error:

❯ ./schedule_single_station.py -s $SATNOGS_STATION_ID --duration 2 -T --log-level DEBUG
Starting new HTTPS connection (1): network-dev.satnogs.org:443
https://network-dev.satnogs.org:443 "GET /api//api/stations/?id=338 HTTP/1.1" 404 4164
Traceback (most recent call last):
  File "/mnt/caelum0/mnt/home/c4/satnogs/src/satnogs/auto-scheduler/./schedule_single_station.py", line 528, in <module>
    main()
  File "/mnt/caelum0/mnt/home/c4/satnogs/src/satnogs/auto-scheduler/./schedule_single_station.py", line 238, in main
    ground_station = get_groundstation_info(ground_station_id)

[...]
  File "/mnt/caelum0/mnt/home/c4/satnogs/src/satnogs/auto-scheduler/auto_scheduler/satnogs_client.py", line 91, in get_paginated_endpoint
    err = response.json()
          ^^^^^^^^^^^^^^^
  File "/mnt/caelum0/home/kerel/.virtualenvs/auto-scheduler/lib/python3.11/site-packages/requests/models.py", line 900, in json
    return complexjson.loads(self.text, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 6 column 1 (char 5)

New behaviour:

Starting new HTTPS connection (1): network-dev.satnogs.org:443
https://network-dev.satnogs.org:443 "GET /api//api/stations/?id=338 HTTP/1.1" 404 4164
API Request for https://network-dev.satnogs.org/api//api/stations/?id=338 failed; HTTPError: 404 Client Error: Not Found for url: https://network-dev.satnogs.org/api//api/stations/?id=338

Merge request reports