BaseService.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  1. 
  2. using Aip.Service.Aip.Exceptions;
  3. using Aip.Service.Aip.Models;
  4. using Aip.Service.Aip.Serivces;
  5. using Aip.Service.Models.App;
  6. using Aip.Service.Models.Response;
  7. using Aip.Service.Repositories;
  8. using Aip.Service.Services.Interfaces;
  9. using Aip.Service.Utils;
  10. namespace Aip.Service.Services;
  11. public class BaseService
  12. {
  13. protected readonly IApiConfigService _aipConfigService;
  14. public BaseService(IApiConfigService aipConfigService)
  15. {
  16. _aipConfigService = aipConfigService;
  17. }
  18. protected CheckAip CheckAipRequest(string apiGuid, string dispFileName, string realFileName, bool isStream)
  19. {
  20. string reqFileName = "";
  21. if (isStream)
  22. {
  23. reqFileName = _aipConfigService.GetRequestFileName(apiGuid + FileUtils.GetExtension(dispFileName));
  24. }
  25. else
  26. {
  27. reqFileName = _aipConfigService.GetRequestFileName(realFileName);
  28. if (!FileUtils.IsExists(reqFileName))
  29. {
  30. return new CheckAip(101, "파일이 존재하지 않습니다.", dispFileName);
  31. }
  32. }
  33. string? newFileExt = _aipConfigService.GetSupportedFileType(reqFileName);
  34. if (newFileExt == null)
  35. {
  36. return new CheckAip(102, "지원하지 않는 파일형식 입니다.", dispFileName);
  37. }
  38. CheckAip result = new CheckAip(0, GlobalConstants.API_RESULT_SUCCESS, dispFileName);
  39. result.reqFileName = reqFileName;
  40. result.newFileExt = newFileExt;
  41. if (isStream)
  42. {
  43. result.dispFileName = FileUtils.GetFileNameWithoutExtension(dispFileName) + newFileExt;
  44. }
  45. else
  46. {
  47. result.dispFileName = FileUtils.GetFileNameWithoutExtension(realFileName) + newFileExt;
  48. }
  49. result.actualFileName = _aipConfigService.GetActualFileName(FileUtils.GetFileNameWithoutExtension(realFileName) + newFileExt);
  50. //result.actualFileName = _aipConfigService.GetActualFileName(apiGuid + newFileExt);
  51. return result;
  52. }
  53. protected ResponseFile ResponseFileException(Exception exception, string displayFileName)
  54. {
  55. if (exception is AipFileException)
  56. {
  57. AipFileException aipFileException = (AipFileException)exception;
  58. return new ResponseFile
  59. {
  60. errorCode = aipFileException.ErrorCode,
  61. errorMessage = aipFileException.Message,
  62. dispFileName = displayFileName,
  63. };
  64. }
  65. else
  66. {
  67. return new ResponseFile
  68. {
  69. errorCode = 109,
  70. errorMessage = exception.Message ?? "파일 작업 중에 시스템 오류가 발생했습니다.",
  71. dispFileName = displayFileName,
  72. };
  73. }
  74. }
  75. protected ResponseStream ResponseStreamException(Exception exception, string displayFileName)
  76. {
  77. if (exception is AipFileException)
  78. {
  79. AipFileException aipFileException = (AipFileException)exception;
  80. return new ResponseStream
  81. {
  82. errorCode = aipFileException.ErrorCode,
  83. errorMessage = aipFileException.Message,
  84. dispFileName = displayFileName,
  85. };
  86. }
  87. else
  88. {
  89. return new ResponseStream
  90. {
  91. errorCode = 109,
  92. errorMessage = exception.Message ?? "파일 스트림 작업 중에 시스템 오류가 발생했습니다.",
  93. dispFileName = displayFileName,
  94. };
  95. }
  96. }
  97. protected ResponseInfo ResponseInfoException(Exception exception)
  98. {
  99. if (exception is AipFileException)
  100. {
  101. AipFileException aipFileException = (AipFileException)exception;
  102. return new ResponseInfo
  103. {
  104. errorCode = aipFileException.ErrorCode,
  105. errorMessage = aipFileException.Message,
  106. };
  107. }
  108. else
  109. {
  110. return new ResponseInfo
  111. {
  112. errorCode = 109,
  113. errorMessage = exception.Message ?? "작업 중에 시스템 오류가 발생했습니다."
  114. };
  115. }
  116. }
  117. protected ResponseInfo ResponseGetFileInfo(AipFileInfo? fileInfo, string displayFileName)
  118. {
  119. bool isLabled = false;
  120. bool isProtected = false;
  121. DateTime creationTime = DateTime.Now;
  122. string? contentId = string.Empty;
  123. string? owner = string.Empty;
  124. string? labelId = string.Empty;
  125. string? labelName = string.Empty;
  126. string? templateId = string.Empty;
  127. string? templateName = string.Empty;
  128. long fileSize = 0;
  129. if (fileInfo != null)
  130. {
  131. fileSize = fileInfo.FileSize;
  132. if (fileInfo.Content != null)
  133. {
  134. creationTime = fileInfo.Content.CreationTime;
  135. }
  136. if (fileInfo.Label != null)
  137. {
  138. isLabled = true;
  139. labelId = fileInfo.Label.Id;
  140. labelName = fileInfo.Label.Name;
  141. }
  142. if (fileInfo.Protection != null)
  143. {
  144. owner = fileInfo.Protection.Owner;
  145. contentId = fileInfo.Protection.ContentId;
  146. if (fileInfo.Protection.ProtectionDescriptor != null)
  147. {
  148. isProtected = true;
  149. templateId = fileInfo.Protection.ProtectionDescriptor.TemplateId;
  150. templateName = fileInfo.Protection.ProtectionDescriptor.Name;
  151. }
  152. }
  153. }
  154. return new ResponseInfo
  155. {
  156. errorCode = 0,
  157. errorMessage = GlobalConstants.API_RESULT_SUCCESS,
  158. isLabled = isLabled,
  159. isProtected = isProtected,
  160. creationTime = creationTime,
  161. contentId = contentId,
  162. owner = owner,
  163. labelId = labelId,
  164. labelName = labelName,
  165. templateId = templateId,
  166. templateName = templateName,
  167. dispFileName = displayFileName,
  168. FileLabelGuid = labelId,
  169. FileProtectionGuid = templateId,
  170. FileOwner = owner,
  171. FileExt = Path.GetExtension(displayFileName),
  172. FileSize = fileSize,
  173. };
  174. }
  175. protected ResponseBase ResponseBase(SetFileInfo fileInfo, string displayFileName, string realFileName, string actualFileName)
  176. {
  177. ResponseBase result = new ResponseBase
  178. {
  179. errorCode = fileInfo.errorNo,
  180. errorMessage = fileInfo.errorMsg,
  181. dispFileName = displayFileName,
  182. realFileName = realFileName,
  183. };
  184. result.FileExt = FileUtils.GetExtension(displayFileName);
  185. result.FileOwner = fileInfo.fileOwner;
  186. result.FileSize = fileInfo.fileSize;
  187. result.FileLabelGuid = fileInfo.labelGuid;
  188. result.FileProtectionGuid = fileInfo.templateGuid;
  189. result.NewFileName = displayFileName;
  190. result.NewFileOwner = fileInfo.newFileOwner;
  191. result.NewFileExt = FileUtils.GetExtension(actualFileName);
  192. result.NewFileSize = fileInfo.newFileSize;
  193. result.NewFileLabelGuid = fileInfo.newFileLabelGuid;
  194. result.NewFileProtectionGuid = fileInfo.newFileTemplateGuid;
  195. return result;
  196. }
  197. protected ResponseFile ResponseSetFile(SetFileInfo fileInfo, string displayFileName, string realFileName, string actualFileName)
  198. {
  199. ResponseBase baseResponse = ResponseBase(fileInfo, displayFileName, realFileName, actualFileName);
  200. ResponseFile result = new ResponseFile
  201. {
  202. errorCode = baseResponse.errorCode,
  203. errorMessage = baseResponse.errorMessage,
  204. dispFileName = _aipConfigService.GetDispFileName(baseResponse.dispFileName, actualFileName),
  205. FileId = baseResponse.FileId,
  206. FileName = baseResponse.FileName,
  207. FileLabelGuid = baseResponse.FileLabelGuid,
  208. FileProtectionGuid = baseResponse.FileProtectionGuid,
  209. FileOwner = baseResponse.FileOwner,
  210. FileExt = baseResponse.FileExt,
  211. FileSize = baseResponse.FileSize,
  212. NewFileName = baseResponse.NewFileName,
  213. NewFileLabelGuid = baseResponse.NewFileLabelGuid,
  214. NewFileProtectionGuid = baseResponse.NewFileProtectionGuid,
  215. NewFileOwner = baseResponse.NewFileOwner,
  216. NewFileExt = baseResponse.NewFileExt,
  217. NewFileSize = baseResponse.NewFileSize
  218. };
  219. result.realFileName = realFileName;
  220. result.actualFileName = FileUtils.GetFileName(actualFileName);
  221. return result;
  222. }
  223. protected ResponseStream ResponseSetStream(SetFileInfo fileInfo, string displayFileName, string actualFileName)
  224. {
  225. ResponseBase baseResponse = ResponseBase(fileInfo, displayFileName, "", actualFileName);
  226. ResponseStream result = new ResponseStream
  227. {
  228. errorCode = baseResponse.errorCode,
  229. errorMessage = baseResponse.errorMessage,
  230. dispFileName = _aipConfigService.GetDispFileName(baseResponse.dispFileName, actualFileName),
  231. FileId = baseResponse.FileId,
  232. FileName = baseResponse.FileName,
  233. FileLabelGuid = baseResponse.FileLabelGuid,
  234. FileProtectionGuid = baseResponse.FileProtectionGuid,
  235. FileOwner = baseResponse.FileOwner,
  236. FileExt = baseResponse.FileExt,
  237. FileSize = baseResponse.FileSize,
  238. NewFileName = baseResponse.NewFileName,
  239. NewFileLabelGuid = baseResponse.NewFileLabelGuid,
  240. NewFileProtectionGuid = baseResponse.NewFileProtectionGuid,
  241. NewFileOwner = baseResponse.NewFileOwner,
  242. NewFileExt = baseResponse.NewFileExt,
  243. NewFileSize = baseResponse.NewFileSize
  244. };
  245. result.outputFileName = FileUtils.GetFileName(actualFileName);
  246. result.fileData = FileUtils.GetFileData(_aipConfigService.GetActualFileName(actualFileName));
  247. return result;
  248. }
  249. public CheckMultipartFile ValidateMultipartFile(IFormFile file, string apiGuid)
  250. {
  251. CheckMultipartFile result = new CheckMultipartFile
  252. {
  253. errorCode = 0,
  254. };
  255. string dispFileName = file.FileName;
  256. if (dispFileName == null)
  257. {
  258. result.errorCode = 81;
  259. result.errorMessage = "작업 할 파일 이름을 알 수가 없습니다.";
  260. result.dispFileName = "UnknownFileName";
  261. return result;
  262. }
  263. if (dispFileName.Contains(".."))
  264. {
  265. result.errorCode = 82;
  266. result.errorMessage = "파일 이름에 유효 하지 않은 경로가 포함 되어 있습니다.";
  267. return result;
  268. }
  269. if (file.Length <= 0)
  270. {
  271. result.errorCode = 83;
  272. result.errorMessage = "파일의 내용이 없습니다.";
  273. return result;
  274. }
  275. string saveFileName = apiGuid + FileUtils.GetExtension(dispFileName);
  276. string fileStorageLocation = _aipConfigService.GetRequestFileName(saveFileName);
  277. result.dispFileName = dispFileName;
  278. result.saveFileName = saveFileName;
  279. try
  280. {
  281. using (var stream = System.IO.File.Create(fileStorageLocation))
  282. {
  283. file.CopyTo(stream);
  284. }
  285. }
  286. catch (IOException)
  287. {
  288. result.errorCode = 84;
  289. result.errorMessage = "파일 저장 중에 오류가 발생하였습니다.";
  290. return result;
  291. }
  292. return result;
  293. }
  294. }