import { ResponseMessage } from './message.constant' import { ApiResponse, ServiceResponse } from './response.interface' import { HttpStatusCode, BusinessCode } from './status-code.enum' export class ResponseUtil { private static readonly statusCodeMap: Record = { [HttpStatusCode.OK]: BusinessCode.SUCCESS, [HttpStatusCode.BAD_REQUEST]: BusinessCode.BAD_REQUEST, [HttpStatusCode.UNAUTHORIZED]: BusinessCode.UNAUTHORIZED, [HttpStatusCode.FORBIDDEN]: BusinessCode.FORBIDDEN, [HttpStatusCode.NOT_FOUND]: BusinessCode.NOT_FOUND, [HttpStatusCode.INTERNAL_SERVER_ERROR]: BusinessCode.INTERNAL_SERVER_ERROR, [HttpStatusCode.TOO_MANY_REQUESTS]: BusinessCode.TOO_MANY_REQUESTS } private static readonly defaultMessages: Record = { [HttpStatusCode.OK]: ResponseMessage.SUCCESS, [HttpStatusCode.BAD_REQUEST]: ResponseMessage.BAD_REQUEST, [HttpStatusCode.UNAUTHORIZED]: ResponseMessage.UNAUTHORIZED, [HttpStatusCode.FORBIDDEN]: ResponseMessage.FORBIDDEN, [HttpStatusCode.NOT_FOUND]: ResponseMessage.NOT_FOUND, [HttpStatusCode.INTERNAL_SERVER_ERROR]: ResponseMessage.INTERNAL_SERVER_ERROR, [HttpStatusCode.TOO_MANY_REQUESTS]: ResponseMessage.TOO_MANY_REQUESTS } static handleResponse(response: ServiceResponse): ApiResponse { const { code, msg, data } = response const businessCode = this.statusCodeMap[code] || BusinessCode.UNKNOWN_ERROR const message = msg || this.defaultMessages[code] || ResponseMessage.UNKNOWN_ERROR return { code: businessCode, msg: message, data: businessCode === BusinessCode.SUCCESS ? data : null } } }