-
Notifications
You must be signed in to change notification settings - Fork 41
Open
Labels
Description
Describe the bug
Using a search radius > 180 km causes a http 400 error, but libcomcat does not check http error code before trying to parse json.
To Reproduce
Steps to reproduce the behavior:
from libcomcat.search import search
from datetime import datetime
start = datetime.fromisoformat('2020-11-20T03:19:00')
end = datetime.fromisoformat('2020-11-20T03:20:00')
# eq search paramaters
radius = 500 # km
lat = -53.9
lon = 140.5
minmag = 5
summary_events = search(starttime=start,
endtime = end,
maxradius=radius,
latitude=-lat,
longitude=lon,
minmagnitude=minmag)
Expected behavior
Check http error code, do not parse as json if not success, return http error message to user.
Screenshots
python3 testcomcat.py
Traceback (most recent call last):
File "/Users/crotwell/opt/miniconda3/envs/obspy/lib/python3.7/site-packages/libcomcat/search.py", line 536, in _search
jdict = response.json()
File "/Users/crotwell/opt/miniconda3/envs/obspy/lib/python3.7/site-packages/requests/models.py", line 898, in json
return complexjson.loads(self.text, **kwargs)
File "/Users/crotwell/opt/miniconda3/envs/obspy/lib/python3.7/json/__init__.py", line 348, in loads
return _default_decoder.decode(s)
File "/Users/crotwell/opt/miniconda3/envs/obspy/lib/python3.7/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/Users/crotwell/opt/miniconda3/envs/obspy/lib/python3.7/json/decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "testcomcat.py", line 18, in <module>
minmagnitude=minmag)
File "/Users/crotwell/opt/miniconda3/envs/obspy/lib/python3.7/site-packages/libcomcat/search.py", line 468, in search
events += _search(**newargs)
File "/Users/crotwell/opt/miniconda3/envs/obspy/lib/python3.7/site-packages/libcomcat/search.py", line 554, in _search
raise ConnectionError(fmt % (url, msg))
ConnectionError: Error downloading data from url https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&starttime=2020-11-20T03%3A19%3A00&endtime=2020-11-20T03%3A20%3A00&latitude=53.9&longitude=140.5&maxradius=500&limit=20000&maxdepth=1000&maxmagnitude=10.0&mindepth=-100&minmagnitude=5&offset=1&orderby=time-asc&eventtype=earthquake. "Expecting value: line 1 column 1 (char 0)".
Environmnet (please complete the following information):
- OS: [e.g. macOS]
- Python Version [e.g. 3.6] 3.7
- Libcomcat Version [e.g. 1.0] 2.0.6
- Numpy Version [e.g. 1.17]
{'date': '2020-09-03T08:41:34-0600', 'dirty': False, 'error': None, 'full-revisionid': '5d3fcb2b7c15f9786016942c0f88dc3595c3416a', 'version': '2.0.6'}
Additional context
Add any other context about the problem here.
On about line 546 in libcomcat/search.py, the HTTPError is caught, but only 503 is actually handled. Any other error code is silently eaten. In general, if you do not handle an error you should re-raise.
Reactions are currently unavailable