component AP gateway (http): handle properly NotFound error:

When an `exceptions.NotFound` is received, log a warning message and return the
appropriate HTTP code instead of raising the default `exceptions.InternalError`.
This commit is contained in:
Goffi 2023-03-18 16:53:21 +01:00
commit 8e09c143e7
2 changed files with 18 additions and 8 deletions

View file

@ -474,7 +474,7 @@ class APGateway:
try:
found_item = found_items[0]
except IndexError:
raise exceptions.NotFound("requested items can't be found")
raise exceptions.NotFound(f"requested item at {url} can't be found")
if node.startswith(self._events.namespace):
# this is an event

View file

@ -78,14 +78,24 @@ class HTTPAPGServer(web_resource.Resource):
request.setResponseCode(http_code, None if msg is None else msg.encode())
def _onRequestError(self, failure_: failure.Failure, request: "HTTPRequest") -> None:
log.exception(f"Internal error: {failure_.value}")
self.responseCode(
request,
http.INTERNAL_SERVER_ERROR,
f"internal error: {failure_.value}"
)
exc = failure_.value
if isinstance(exc, exceptions.NotFound):
self.responseCode(
request,
http.NOT_FOUND,
str(exc)
)
else:
log.exception(f"Internal error: {failure_.value}")
self.responseCode(
request,
http.INTERNAL_SERVER_ERROR,
f"internal error: {failure_.value}"
)
request.finish()
raise failure_
request.finish()
raise failure_
async def webfinger(self, request):
url_parsed = parse.urlparse(request.uri.decode())