from flask import jsonify from typing import Optional, Union, Dict, List, Any class ResponseHelper: """ A helper class for building standardized JSON responses using resultCode and resultDescription. """ @staticmethod def build_response( result_code: str, result_description: str, data: Optional[Union[Dict, List, str]] = None ) -> Dict[str, Any]: response = { "resultCode": result_code, "resultDescription": result_description } if isinstance(data, dict): response.update(data) return jsonify(response) @staticmethod def success( result_description: str = "Successful", result_code: str = "0", data: Optional[Dict[str, Any]] = None ) -> Dict[str, Any]: return ResponseHelper.build_response(result_code, result_description, data) @staticmethod def error( result_description: str = "An error occurred", result_code: str = "01", data: Optional[Dict[str, Any]] = None ) -> Dict[str, Any]: return ResponseHelper.build_response(result_code, result_description, data) @staticmethod def created( result_description: str = "Resource created successfully", result_code: str = "00", data: Optional[Dict[str, Any]] = None ) -> Dict[str, Any]: return ResponseHelper.build_response(result_code, result_description, data) @staticmethod def updated( result_description: str = "Resource updated successfully", result_code: str = "00", data: Optional[Dict[str, Any]] = None ) -> Dict[str, Any]: return ResponseHelper.build_response(result_code, result_description, data) @staticmethod def internal_server_error( result_description: str = "Internal Server Error", result_code: str = "500", data: Optional[Dict[str, Any]] = None ) -> Dict[str, Any]: return ResponseHelper.build_response(result_code, result_description, data) @staticmethod def unauthorized( result_description: str = "Unauthorized", result_code: str = "401", data: Optional[Dict[str, Any]] = None ) -> Dict[str, Any]: return ResponseHelper.build_response(result_code, result_description, data) @staticmethod def forbidden( result_description: str = "Forbidden", result_code: str = "403", data: Optional[Dict[str, Any]] = None ) -> Dict[str, Any]: return ResponseHelper.build_response(result_code, result_description, data) @staticmethod def not_found( result_description: str = "Resource not found", result_code: str = "404", data: Optional[Dict[str, Any]] = None ) -> Dict[str, Any]: return ResponseHelper.build_response(result_code, result_description, data) @staticmethod def unprocessable_entity( result_description: str = "Unprocessable entity", result_code: str = "422", data: Optional[Dict[str, Any]] = None ) -> Dict[str, Any]: return ResponseHelper.build_response(result_code, result_description, data) @staticmethod def method_not_allowed( result_description: str = "Method Not Allowed", result_code: str = "405", data: Optional[Dict[str, Any]] = None ) -> Dict[str, Any]: return ResponseHelper.build_response(result_code, result_description, data) @staticmethod def bad_request( result_description: str = "Bad Request", result_code: str = "400", data: Optional[Dict[str, Any]] = None ) -> Dict[str, Any]: return ResponseHelper.build_response(result_code, result_description, data)