using Aip.Service.Aip.Exceptions; using Aip.Service.Exceptions; using Aip.Service.Models.Response; using Aip.Service.Repositories; using Microsoft.AspNetCore.Mvc; namespace Aip.Service.Controllers; public class BaseController : ControllerBase { protected async Task CreateResponseAsync(Func> function) { IResult response; try { response = await function.Invoke(); } catch (ApiException aipEx) { response = Results.BadRequest(new ApiResponseModel { success = false, errorCode = aipEx.errorCode, errorMessage = aipEx.errorMessage, result = null, }); } catch (AipFileException aipFileEx) { HttpContext.Items[GlobalConstants.API_RESULT_CODE] = aipFileEx.ErrorCode; HttpContext.Items[GlobalConstants.API_RESULT_MESSAGE] = aipFileEx.Message; response = Results.BadRequest(new ApiResponseModel { success = false, errorCode = aipFileEx.ErrorCode, errorMessage = aipFileEx.Message, result = null, }); } catch (Exception ex) { HttpContext.Items[GlobalConstants.API_RESULT_CODE] = 500; HttpContext.Items[GlobalConstants.API_RESULT_MESSAGE] = ex.InnerException?.Message ?? ex.Message; response = Results.BadRequest(new ApiResponseModel { success = false, errorCode = 500, errorMessage = ex.InnerException?.Message ?? ex.Message, result = null, }); //response = Results.Problem(new ProblemDetails() //{ // Status = 500, // 내부오류 // Title = ex.InnerException?.Message ?? ex.Message, // Detail = ex.InnerException?.Message, // Instance = ex.HResult.ToString(), // Type = ex.HResult.ToString(), //}); } return response; } protected ApiException ResponseApiKeyValidationError(HttpContext httpContext, int errorNo) { string errorMessage; switch (errorNo) { case 0: errorMessage = GlobalConstants.API_RESULT_SUCCESS; break; case 1: errorMessage = "등록되어 있지 않은 API KEY 입니다."; break; case 2: errorMessage = "등록되어 있지 않은 IP Address에서 호출된 API KEY 입니다."; break; case 3: errorMessage = "API KEY 유효기간이 지났습니다."; break; case 4: errorMessage = "API 사용 권한이 없습니다."; break; default: errorMessage = errorNo + ", API KEY 유효성 검사 중 알수 없는 오류가 발생하였습니다."; break; } httpContext.Items[GlobalConstants.API_RESULT_CODE] = errorNo; httpContext.Items[GlobalConstants.API_RESULT_MESSAGE] = errorMessage; return new ApiException(errorNo, errorMessage); } #if false protected ApiResponseModel ResponseSuccess(HttpContext context, T response) where T : GeneralResponse { context.Items[GlobalConstants.API_RESULT_CODE] = response.errorCode; context.Items[GlobalConstants.API_RESULT_MESSAGE] = response.errorCode == 0 ? GlobalConstants.API_RESULT_SUCCESS : response.errorMessage; context.Items.Add(GlobalConstants.API_RESULT, (ResponseBase)response); return new ApiResponseModel() { success = response.errorCode == 0 ? true : false, errorCode = response.errorCode, errorMessage = response.errorCode == 0 ? GlobalConstants.API_RESULT_SUCCESS : response.errorMessage, result = response, }; } #else protected ApiResponseModel ResponseSuccess(HttpContext context, GeneralResponse response) { //context.Items.Add(GlobalConstants.API_RESULT, (ResponseBase)response); context.Items[GlobalConstants.API_RESULT_CODE] = response.errorCode; context.Items[GlobalConstants.API_RESULT_MESSAGE] = response.errorCode == 0 ? GlobalConstants.API_RESULT_SUCCESS : response.errorMessage; return new ApiResponseModel() { success = response.errorCode == 0 ? true : false, errorCode = response.errorCode, errorMessage = response.errorCode == 0 ? GlobalConstants.API_RESULT_SUCCESS : response.errorMessage, result = response, }; } protected ApiResponseModel ResponseSuccess(HttpContext context, ResponseInfo response) { context.Items[GlobalConstants.API_RESULT_CODE] = response.errorCode; context.Items[GlobalConstants.API_RESULT_MESSAGE] = response.errorCode == 0 ? GlobalConstants.API_RESULT_SUCCESS : response.errorMessage; context.Items.Add(GlobalConstants.API_RESULT, (ResponseBase)response); return new ApiResponseModel() { success = response.errorCode == 0 ? true : false, errorCode = response.errorCode, errorMessage = response.errorCode == 0 ? GlobalConstants.API_RESULT_SUCCESS : response.errorMessage, result = response, }; } protected ApiResponseModel ResponseSuccess(HttpContext context, ResponseFile response) { context.Items[GlobalConstants.API_RESULT_CODE] = response.errorCode; context.Items[GlobalConstants.API_RESULT_MESSAGE] = response.errorCode == 0 ? GlobalConstants.API_RESULT_SUCCESS : response.errorMessage; context.Items.Add(GlobalConstants.API_RESULT, (ResponseBase)response); return new ApiResponseModel() { success = response.errorCode == 0 ? true : false, errorCode = response.errorCode, errorMessage = response.errorCode == 0 ? GlobalConstants.API_RESULT_SUCCESS : response.errorMessage, result = response, }; } protected ApiResponseModel ResponseSuccess(HttpContext context, ResponseStream response) { context.Items[GlobalConstants.API_RESULT_CODE] = response.errorCode; context.Items[GlobalConstants.API_RESULT_MESSAGE] = response.errorCode == 0 ? GlobalConstants.API_RESULT_SUCCESS : response.errorMessage; context.Items.Add(GlobalConstants.API_RESULT, (ResponseBase)response); return new ApiResponseModel() { success = response.errorCode == 0 ? true : false, errorCode = response.errorCode, errorMessage = response.errorCode == 0 ? GlobalConstants.API_RESULT_SUCCESS : response.errorMessage, result = response, }; } #endif }