-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patherrors.py
More file actions
59 lines (51 loc) · 1.9 KB
/
Copy patherrors.py
File metadata and controls
59 lines (51 loc) · 1.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import logging
from flask import Blueprint, jsonify
from werkzeug.exceptions import NotFound, MethodNotAllowed, BadRequest
from flask_limiter.errors import RateLimitExceeded
logger = logging.getLogger(__name__)
errors_bp = Blueprint('errors', __name__)
class APIError(Exception):
def __init__(self, error_code: str, error_message: str):
super().__init__()
self.error_code = error_code
self.error_message = error_message
@errors_bp.app_errorhandler(APIError)
def handle_api_error(error):
response = {
"error_code": error.error_code,
"message": error.error_message
}
logger.error(f"APIError: {error.error_message}")
return jsonify(response), 400
@errors_bp.app_errorhandler(RateLimitExceeded)
def handle_rate_limit_exceeded(error):
response = {
"error_code": "RATE_LIMIT_EXCEEDED",
"message": getattr(error, 'error_message', str(error))
}
logger.warning(f"RateLimitExceeded: {str(error)}")
return jsonify(response), 429
@errors_bp.app_errorhandler(NotFound)
def handle_not_found_error(error):
response = {
"error_code": "NOT_FOUND",
"message": error.description if hasattr(error, 'description') else str(error)
}
logger.error(f"NotFound: {str(error)}")
return jsonify(response), 404
@errors_bp.app_errorhandler(MethodNotAllowed)
def handle_method_not_allowed_error(error):
response = {
"error_code": "METHOD_NOT_ALLOWED",
"message": error.description if hasattr(error, 'description') else str(error)
}
logger.error(f"MethodNotAllowed: {str(error)}")
return jsonify(response), 405
@errors_bp.app_errorhandler(BadRequest)
def handle_bad_request_error(error):
response = {
"error_code": "BAD_REQUEST",
"message": error.description if hasattr(error, 'description') else str(error)
}
logger.error(f"BadRequest: {str(error)}")
return jsonify(response), 400