BaseController.cs 6.5 KB

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