BaseController.cs 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. 
  2. using Aip.Service.Aip.Exceptions;
  3. using Aip.Service.Exceptions;
  4. using Aip.Service.Models.Response;
  5. using Aip.Service.Repositories;
  6. using Microsoft.AspNetCore.Mvc;
  7. namespace Aip.Service.Controllers;
  8. public class BaseController : ControllerBase
  9. {
  10. protected async Task<IResult> CreateResponseAsync(Func<Task<IResult>> function)
  11. {
  12. IResult response;
  13. try
  14. {
  15. response = await function.Invoke();
  16. }
  17. catch (ApiException aipEx)
  18. {
  19. response = Results.BadRequest(new ApiResponseModel<ApiException>
  20. {
  21. success = false,
  22. errorCode = aipEx.errorCode,
  23. errorMessage = aipEx.errorMessage,
  24. result = null,
  25. });
  26. }
  27. catch (AipFileException aipFileEx)
  28. {
  29. HttpContext.Items[GlobalConstants.API_RESULT_CODE] = aipFileEx.ErrorCode;
  30. HttpContext.Items[GlobalConstants.API_RESULT_MESSAGE] = aipFileEx.Message;
  31. response = Results.BadRequest(new ApiResponseModel<AipFileException>
  32. {
  33. success = false,
  34. errorCode = aipFileEx.ErrorCode,
  35. errorMessage = aipFileEx.Message,
  36. result = null,
  37. });
  38. }
  39. catch (Exception ex)
  40. {
  41. HttpContext.Items[GlobalConstants.API_RESULT_CODE] = 500;
  42. HttpContext.Items[GlobalConstants.API_RESULT_MESSAGE] = ex.InnerException?.Message ?? ex.Message;
  43. response = Results.BadRequest(new ApiResponseModel<Exception>
  44. {
  45. success = false,
  46. errorCode = 500,
  47. errorMessage = ex.InnerException?.Message ?? ex.Message,
  48. result = null,
  49. });
  50. //response = Results.Problem(new ProblemDetails()
  51. //{
  52. // Status = 500, // 내부오류
  53. // Title = ex.InnerException?.Message ?? ex.Message,
  54. // Detail = ex.InnerException?.Message,
  55. // Instance = ex.HResult.ToString(),
  56. // Type = ex.HResult.ToString(),
  57. //});
  58. }
  59. return response;
  60. }
  61. protected ApiException ResponseApiKeyValidationError(HttpContext httpContext, int errorNo)
  62. {
  63. string errorMessage;
  64. switch (errorNo)
  65. {
  66. case 0: errorMessage = GlobalConstants.API_RESULT_SUCCESS; break;
  67. case 1: errorMessage = "등록되어 있지 않은 API KEY 입니다."; break;
  68. case 2: errorMessage = "등록되어 있지 않은 IP Address에서 호출된 API KEY 입니다."; break;
  69. case 3: errorMessage = "API KEY 유효기간이 지났습니다."; break;
  70. case 4: errorMessage = "API 사용 권한이 없습니다."; break;
  71. default: errorMessage = errorNo + ", API KEY 유효성 검사 중 알수 없는 오류가 발생하였습니다."; break;
  72. }
  73. httpContext.Items[GlobalConstants.API_RESULT_CODE] = errorNo;
  74. httpContext.Items[GlobalConstants.API_RESULT_MESSAGE] = errorMessage;
  75. return new ApiException(errorNo, errorMessage);
  76. }
  77. #if false
  78. protected ApiResponseModel<T> ResponseSuccess<T>(HttpContext context, T response) where T : GeneralResponse
  79. {
  80. context.Items[GlobalConstants.API_RESULT_CODE] = response.errorCode;
  81. context.Items[GlobalConstants.API_RESULT_MESSAGE] = response.errorCode == 0 ? GlobalConstants.API_RESULT_SUCCESS : response.errorMessage;
  82. context.Items.Add(GlobalConstants.API_RESULT, (ResponseBase)response);
  83. return new ApiResponseModel<T>()
  84. {
  85. success = response.errorCode == 0 ? true : false,
  86. errorCode = response.errorCode,
  87. errorMessage = response.errorCode == 0 ? GlobalConstants.API_RESULT_SUCCESS : response.errorMessage,
  88. result = response,
  89. };
  90. }
  91. #else
  92. protected ApiResponseModel<GeneralResponse> ResponseSuccess(HttpContext context, GeneralResponse response)
  93. {
  94. //context.Items.Add(GlobalConstants.API_RESULT, (ResponseBase)response);
  95. context.Items[GlobalConstants.API_RESULT_CODE] = response.errorCode;
  96. context.Items[GlobalConstants.API_RESULT_MESSAGE] = response.errorCode == 0 ? GlobalConstants.API_RESULT_SUCCESS : response.errorMessage;
  97. return new ApiResponseModel<GeneralResponse>()
  98. {
  99. success = response.errorCode == 0 ? true : false,
  100. errorCode = response.errorCode,
  101. errorMessage = response.errorCode == 0 ? GlobalConstants.API_RESULT_SUCCESS : response.errorMessage,
  102. result = response,
  103. };
  104. }
  105. protected ApiResponseModel<ResponseInfo> ResponseSuccess(HttpContext context, ResponseInfo response)
  106. {
  107. context.Items[GlobalConstants.API_RESULT_CODE] = response.errorCode;
  108. context.Items[GlobalConstants.API_RESULT_MESSAGE] = response.errorCode == 0 ? GlobalConstants.API_RESULT_SUCCESS : response.errorMessage;
  109. context.Items.Add(GlobalConstants.API_RESULT, (ResponseBase)response);
  110. return new ApiResponseModel<ResponseInfo>()
  111. {
  112. success = response.errorCode == 0 ? true : false,
  113. errorCode = response.errorCode,
  114. errorMessage = response.errorCode == 0 ? GlobalConstants.API_RESULT_SUCCESS : response.errorMessage,
  115. result = response,
  116. };
  117. }
  118. protected ApiResponseModel<ResponseFile> ResponseSuccess(HttpContext context, ResponseFile response)
  119. {
  120. context.Items[GlobalConstants.API_RESULT_CODE] = response.errorCode;
  121. context.Items[GlobalConstants.API_RESULT_MESSAGE] = response.errorCode == 0 ? GlobalConstants.API_RESULT_SUCCESS : response.errorMessage;
  122. context.Items.Add(GlobalConstants.API_RESULT, (ResponseBase)response);
  123. return new ApiResponseModel<ResponseFile>()
  124. {
  125. success = response.errorCode == 0 ? true : false,
  126. errorCode = response.errorCode,
  127. errorMessage = response.errorCode == 0 ? GlobalConstants.API_RESULT_SUCCESS : response.errorMessage,
  128. result = response,
  129. };
  130. }
  131. protected ApiResponseModel<ResponseStream> ResponseSuccess(HttpContext context, ResponseStream response)
  132. {
  133. context.Items[GlobalConstants.API_RESULT_CODE] = response.errorCode;
  134. context.Items[GlobalConstants.API_RESULT_MESSAGE] = response.errorCode == 0 ? GlobalConstants.API_RESULT_SUCCESS : response.errorMessage;
  135. context.Items.Add(GlobalConstants.API_RESULT, (ResponseBase)response);
  136. return new ApiResponseModel<ResponseStream>()
  137. {
  138. success = response.errorCode == 0 ? true : false,
  139. errorCode = response.errorCode,
  140. errorMessage = response.errorCode == 0 ? GlobalConstants.API_RESULT_SUCCESS : response.errorMessage,
  141. result = response,
  142. };
  143. }
  144. #endif
  145. }