Show MediaWiki API error messages
This commit is contained in:
parent
1442620ece
commit
0188cbe0bf
3 changed files with 98 additions and 7 deletions
27
lookup.py
27
lookup.py
|
|
@ -381,9 +381,26 @@ def index() -> str | Response:
|
|||
except (wikidata.QueryError, wikidata.APIResponseError) as e:
|
||||
r = e.r if isinstance(e, wikidata.QueryError) else e.response
|
||||
if r.status_code == 429:
|
||||
extra = {"Retry-After": r.headers["Retry-After"]} if "Retry-After" in r.headers else {}
|
||||
return jsonify(error="Rate limited by Wikidata, please try again later"), 429, extra
|
||||
return jsonify(error=f"Wikidata query failed (HTTP {r.status_code}), please try again later"), 503
|
||||
extra = (
|
||||
{"Retry-After": r.headers["Retry-After"]}
|
||||
if "Retry-After" in r.headers
|
||||
else {}
|
||||
)
|
||||
error = (
|
||||
e.detail
|
||||
if isinstance(e, wikidata.APIResponseError)
|
||||
else wikidata.mediawiki_error_message(r)
|
||||
)
|
||||
return jsonify(error=error), 429, extra
|
||||
if isinstance(e, wikidata.APIResponseError):
|
||||
return jsonify(error=e.message), 503
|
||||
return (
|
||||
jsonify(
|
||||
error=f"Wikidata query failed (HTTP {r.status_code}), "
|
||||
+ "please try again later"
|
||||
),
|
||||
503,
|
||||
)
|
||||
except requests.exceptions.RequestException:
|
||||
return jsonify(error="Could not connect to Wikidata, please try again later"), 503
|
||||
result.pop("element", None)
|
||||
|
|
@ -457,6 +474,10 @@ def build_detail_page(lat: float, lon: float, needs_commons: bool = True) -> str
|
|||
except wikidata.QueryError as e:
|
||||
query, r = e.args
|
||||
return render_template("query_error.html", lat=lat, lon=lon, query=query, r=r)
|
||||
except wikidata.APIResponseError as e:
|
||||
return render_template(
|
||||
"query_error.html", lat=lat, lon=lon, error=e.message, r=e.response
|
||||
)
|
||||
|
||||
element = reply["result"].pop("element", None)
|
||||
geojson = reply["result"].pop("geojson", None)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue