diff --git a/pywb/webapp/cdx_api_handler.py b/pywb/webapp/cdx_api_handler.py index 1835647a..1ebd0018 100644 --- a/pywb/webapp/cdx_api_handler.py +++ b/pywb/webapp/cdx_api_handler.py @@ -1,11 +1,13 @@ from pywb.cdx.cdxserver import create_cdx_server +from pywb.utils.wbexception import NotFoundException from pywb.framework.basehandlers import BaseHandler from pywb.framework.wbrequestresponse import WbResponse from pywb.webapp.query_handler import QueryHandler from six.moves.urllib.parse import parse_qs +import json import six @@ -21,7 +23,18 @@ class CDXAPIHandler(BaseHandler): def __call__(self, wbrequest): params = self.extract_params_from_wsgi_env(wbrequest.env) - cdx_iter = self.index_handler.load_cdx(wbrequest, params) + try: + cdx_iter = self.index_handler.load_cdx(wbrequest, params) + except NotFoundException: + msg = 'No Captures found for: ' + params.get('url') + if params.get('output') == 'json': + msg = json.dumps(dict(error=msg)) + content_type='application/json' + else: + content_type='text/plain' + + return WbResponse.text_response(msg, content_type=content_type, + status='404 Not Found') return WbResponse.text_stream(cdx_iter, content_type='text/plain')