BaseController.cs 6.6 KB

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