1
0
mirror of https://github.com/webrecorder/pywb.git synced 2025-03-23 22:52:25 +01:00
pywb/pywb/utils/wbexception.py
John Berlin 802b9fa4f5
apps:
- frontendapp.py: restored the pulling out of collection route creation into its own function
 - rewriterapp.py: reformated file and added documentation

 utils:
  - geventserver.py: added documentation
  - wbexception.py: updated documentation
2019-09-10 14:45:05 -04:00

134 lines
4.0 KiB
Python

from werkzeug.http import HTTP_STATUS_CODES
# =================================================================
class WbException(Exception):
"""Base class for exceptions raised by Pywb"""
def __init__(self, msg=None, url=None):
"""Initialize a new WbException
:param str|dict|None msg: The message for the error response
:param str|None url: The URL that caused the error
:rtype: None
"""
super(WbException, self).__init__(msg)
self.msg = msg
self.url = url
@property
def status_code(self):
"""Returns the status code to be used for the error response
:return: The status code for the error response (500)
:rtype: int
"""
return 500
def status(self):
"""Returns the HTTP status line for the error response
:return: The HTTP status line for the error response
:rtype: str
"""
return str(self.status_code) + ' ' + HTTP_STATUS_CODES.get(self.status_code, 'Unknown Error')
def __repr__(self):
return "{0}('{1}',)".format(self.__class__.__name__, self.msg)
# =================================================================
class AccessException(WbException):
"""An Exception used to indicate an access control violation"""
@property
def status_code(self):
"""Returns the status code to be used for the error response
:return: The status code for the error response (451)
:rtype: int
"""
return 451
# =================================================================
class BadRequestException(WbException):
"""An Exception used to indicate that request was bad"""
@property
def status_code(self):
"""Returns the status code to be used for the error response
:return: The status code for the error response (400)
:rtype: int
"""
return 400
# =================================================================
class NotFoundException(WbException):
"""An Exception used to indicate that a resource was not found"""
@property
def status_code(self):
"""Returns the status code to be used for the error response
:return: The status code for the error response (404)
:rtype: int
"""
return 404
# =================================================================
class LiveResourceException(WbException):
"""An Exception used to indicate that an error was encountered during the
retrial of a live web resource"""
@property
def status_code(self):
"""Returns the status code to be used for the error response
:return: The status code for the error response (400)
:rtype: int
"""
return 400
# ============================================================================
class UpstreamException(WbException):
"""An Exception used to indicate that an error was encountered from an upstream endpoint"""
def __init__(self, status_code, url, details):
"""Initialize a new UpstreamException
:param int status_code: The status code for the error response
:param str url: The URL that caused the error
:param str|dict details: The details of the error encountered
:rtype: None
"""
super(UpstreamException, self).__init__(url=url, msg=details)
self._status_code = status_code
@property
def status_code(self):
"""Returns the status code to be used for the error response
:return: The status code for the error response
:rtype: int
"""
return self._status_code
# ============================================================================
class AppPageNotFound(WbException):
"""An Exception used to indicate that a page was not found"""
@property
def status_code(self):
"""Returns the status code to be used for the error response
:return: The status code for the error response (400)
:rtype: int
"""
return 404