From 63ba82dd0e8c64f5dac7e311187e6e3026b1e0c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Vinot?= <raphael@vinot.info> Date: Mon, 10 Oct 2022 14:14:31 +0200 Subject: [PATCH] fix: Catch exception when getting redirects on broken capture --- website/web/genericapi.py | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/website/web/genericapi.py b/website/web/genericapi.py index 20d3e0b6..d7448834 100644 --- a/website/web/genericapi.py +++ b/website/web/genericapi.py @@ -127,19 +127,25 @@ class CaptureRedirects(Resource): if not cache: return {'error': 'UUID missing in cache, try again later and check the status first.'}, 400 - to_return: Dict[str, Any] = {'response': {'url': cache.url, 'redirects': []}} - if not cache.redirects: - to_return['response']['info'] = 'No redirects' - return to_return - if cache.incomplete_redirects: - # Trigger tree build, get all redirects - lookyloo.get_crawled_tree(capture_uuid) - cache = lookyloo.capture_cache(capture_uuid) - if cache: + to_return: Dict[str, Any] = {} + try: + to_return = {'response': {'url': cache.url, 'redirects': []}} + if not cache.redirects: + to_return['response']['info'] = 'No redirects' + return to_return + if cache.incomplete_redirects: + # Trigger tree build, get all redirects + lookyloo.get_crawled_tree(capture_uuid) + cache = lookyloo.capture_cache(capture_uuid) + if cache: + to_return['response']['redirects'] = cache.redirects + else: to_return['response']['redirects'] = cache.redirects - else: - to_return['response']['redirects'] = cache.redirects - + except Exception as e: + if cache and hasattr(cache, 'error'): + to_return['error'] = cache.error + else: + to_return['error'] = str(e) return to_return