Further clean up error handling

This commit is contained in:
Florian Bruhin 2018-07-10 01:17:19 +02:00 committed by Florian Bruhin
parent 92fcc523c5
commit 58793d95d7
3 changed files with 34 additions and 30 deletions

View File

@ -80,21 +80,23 @@ class QuteSchemeHandler(QWebEngineUrlSchemeHandler):
log.misc.debug("Got request for {}".format(url.toDisplayString())) log.misc.debug("Got request for {}".format(url.toDisplayString()))
try: try:
mimetype, data = qutescheme.data_for_url(url) mimetype, data = qutescheme.data_for_url(url)
except qutescheme.NotFoundError: except qutescheme.Error as e:
log.misc.exception("Error while handling qute://* URL") errors = {
job.fail(QWebEngineUrlRequestJob.UrlNotFound) qutescheme.NotFoundError:
except qutescheme.UrlInvalidError: QWebEngineUrlRequestJob.UrlNotFound,
log.misc.exception("Error while handling qute://* URL") qutescheme.UrlInvalidError:
job.fail(QWebEngineUrlRequestJob.UrlInvalid) QWebEngineUrlRequestJob.UrlInvalid,
except qutescheme.RequestDeniedError: qutescheme.RequestDeniedError:
log.misc.exception("Error while handling qute://* URL") QWebEngineUrlRequestJob.RequestDenied,
job.fail(QWebEngineUrlRequestJob.RequestDenied) qutescheme.SchemeOSError:
except qutescheme.SchemeOSError: QWebEngineUrlRequestJob.UrlNotFound,
log.misc.exception("OSError while handling qute://* URL") qutescheme.Error:
job.fail(QWebEngineUrlRequestJob.UrlNotFound) QWebEngineUrlRequestJob.RequestFailed,
except qutescheme.Error: }
log.misc.exception("Error while handling qute://* URL") exctype = e.__type__
job.fail(QWebEngineUrlRequestJob.RequestFailed) log.misc.exception("{} while handling qute://* URL".format(
exctype.__name__))
job.fail(errors[exctype])
except qutescheme.Redirect as e: except qutescheme.Redirect as e:
qtutils.ensure_valid(e.url) qtutils.ensure_valid(e.url)
job.redirect(e.url) job.redirect(e.url)

View File

@ -59,21 +59,23 @@ def handler(request, operation, current_url):
try: try:
mimetype, data = qutescheme.data_for_url(url) mimetype, data = qutescheme.data_for_url(url)
except qutescheme.NotFoundError as e:
return networkreply.ErrorNetworkReply(
request, str(e), QNetworkReply.ContentNotFoundError)
except qutescheme.SchemeOSError as e:
return networkreply.ErrorNetworkReply(
request, str(e), QNetworkReply.ContentNotFoundError)
except qutescheme.UrlInvalidError as e:
return networkreply.ErrorNetworkReply(
request, str(e), QNetworkReply.ContentOperationNotPermittedError)
except qutescheme.RequestDeniedError as e:
return networkreply.ErrorNetworkReply(
request, str(e), QNetworkReply.ContentAccessDenied)
except qutescheme.Error as e: except qutescheme.Error as e:
return networkreply.ErrorNetworkReply( errors = {
request, str(e), QNetworkReply.InternalServerError) qutescheme.NotFoundError:
QNetworkReply.ContentNotFoundError,
qutescheme.UrlInvalidError:
QNetworkReply.ContentOperationNotPermittedError,
qutescheme.RequestDeniedError:
QNetworkReply.ContentAccessDenied,
qutescheme.SchemeOSError:
QNetworkReply.ContentNotFoundError,
qutescheme.Error:
QNetworkReply.InternalServerError,
}
exctype = e.__type__
log.misc.exception("{} while handling qute://* URL".format(
exctype.__name__))
return networkreply.ErrorNetworkReply(request, str(e), errors[exctype])
except qutescheme.Redirect as e: except qutescheme.Redirect as e:
qtutils.ensure_valid(e.url) qtutils.ensure_valid(e.url)
return networkreply.RedirectNetworkReply(e.url) return networkreply.RedirectNetworkReply(e.url)

View File

@ -67,7 +67,7 @@ class TestJavascriptHandler:
def test_qutejavascript_empty_query(self): def test_qutejavascript_empty_query(self):
url = QUrl("qute://javascript") url = QUrl("qute://javascript")
with pytest.raises(qutescheme.InvalidURLError): with pytest.raises(qutescheme.UrlInvalidError):
qutescheme.qute_javascript(url) qutescheme.qute_javascript(url)