ApiStreamService.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. package com.aip.gateway.api.service.impl;
  2. import com.aip.gateway.api.aip.model.SetFileInfo;
  3. import com.aip.gateway.api.aip.utils.AipFileUtils;
  4. import com.aip.gateway.api.model.app.CheckAip;
  5. import com.aip.gateway.api.model.app.CheckMultipartFile;
  6. import com.aip.gateway.api.model.request.*;
  7. import com.aip.gateway.api.model.response.ResponseInfo;
  8. import com.aip.gateway.api.model.response.ResponseStream;
  9. import com.aip.gateway.api.repository.AipFileRepository;
  10. import com.aip.gateway.api.repository.AppRepository;
  11. import com.aip.gateway.api.service.IApiStreamService;
  12. import lombok.extern.slf4j.Slf4j;
  13. import org.springframework.stereotype.Service;
  14. import org.springframework.web.multipart.MultipartFile;
  15. import java.util.Base64;
  16. @Slf4j
  17. @Service
  18. public class ApiStreamService extends AbstractAipService implements IApiStreamService {
  19. public ApiStreamService(AppRepository repo, AipFileRepository aipFile) {
  20. super(repo, aipFile);
  21. }
  22. @Override
  23. public ResponseInfo getInfo(RequestStream req) {
  24. try {
  25. String tempOrgFileName = getRequestFileName(req.getApiGuid() + AipFileUtils.getExtension(req.getDispFileName()));
  26. String actualFileName = getActualFileName(req.getApiGuid() + AipFileUtils.getExtension(req.getDispFileName()));
  27. String newFileExt = getSupportedFileType(req.getDispFileName());
  28. if (newFileExt == null) {
  29. return new ResponseInfo(102, "지원하지 않는 파일형식 입니다.");
  30. }
  31. byte[] fileDataArr = Base64.getDecoder().decode(req.getFileData());
  32. if (!AipFileUtils.streamToFile(fileDataArr, tempOrgFileName)) {
  33. return new ResponseInfo(110, "작업 중에 파일 시스템 오류가 발생했습니다.");
  34. }
  35. try {
  36. return responseGetFileInfo(this.aipFile.getManager().getFileInfo(tempOrgFileName, actualFileName), req.getDispFileName());
  37. }
  38. finally {
  39. AipFileUtils.delete(tempOrgFileName);
  40. }
  41. //AipFileStream fileStream = new AipFileStream(req.getFileData());
  42. //return responseGetFileInfo(this.aipFile.getManager().getFileInfo(fileStream, actualFileName), req.getDispFileName());
  43. }
  44. catch (Exception e) {
  45. return responseInfoException(e);
  46. }
  47. }
  48. @Override
  49. public ResponseStream setLabel(RequestStreamSet req) {
  50. CheckAip check = checkAipRequest(req.getApiGuid(), req.getDispFileName(), "", true);
  51. if (check.getErrorCode() != 0) {
  52. return new ResponseStream(check.getErrorCode(), check.getErrorMessage(), check.getDispFileName());
  53. }
  54. try {
  55. byte[] fileDataArr = Base64.getDecoder().decode(req.getFileData());
  56. if (!AipFileUtils.streamToFile(fileDataArr, check.getReqFileName())) {
  57. return responseStreamFail(req.getDispFileName());
  58. }
  59. try {
  60. SetFileInfo result = this.aipFile.getManager().setLabel(check.getReqFileName(), check.getActualFileName(), req.getEmail(), req.getAipGuid(), "", req.getComment());
  61. return responseSetStream(result, req.getDispFileName(), check.getActualFileName());
  62. }
  63. finally {
  64. AipFileUtils.delete(check.getReqFileName());
  65. AipFileUtils.delete(check.getActualFileName());
  66. }
  67. }
  68. catch (Exception e) {
  69. return responseStreamException(e, req.getDispFileName());
  70. }
  71. }
  72. @Override
  73. public ResponseStream delLabel(RequestStreamDel req) {
  74. CheckAip check = checkAipRequest(req.getApiGuid(), req.getDispFileName(), "", true);
  75. if (check.getErrorCode() != 0) {
  76. return new ResponseStream(check.getErrorCode(), check.getErrorMessage(), check.getDispFileName());
  77. }
  78. try {
  79. byte[] fileDataArr = Base64.getDecoder().decode(req.getFileData());
  80. if (!AipFileUtils.streamToFile(fileDataArr, check.getReqFileName())) {
  81. return responseStreamFail(req.getDispFileName());
  82. }
  83. try {
  84. SetFileInfo result = this.aipFile.getManager().deleteLabel(check.getReqFileName(), check.getActualFileName(), req.getEmail(), req.getComment(), false);
  85. return responseSetStream(result, req.getDispFileName(), check.getActualFileName());
  86. }
  87. finally {
  88. AipFileUtils.delete(check.getReqFileName());
  89. AipFileUtils.delete(check.getActualFileName());
  90. }
  91. }
  92. catch (Exception e) {
  93. return responseStreamException(e, req.getDispFileName());
  94. }
  95. }
  96. @Override
  97. public ResponseStream setProtection(RequestStreamSet req) {
  98. CheckAip check = checkAipRequest(req.getApiGuid(), req.getDispFileName(), "", true);
  99. if (check.getErrorCode() != 0) {
  100. return new ResponseStream(check.getErrorCode(), check.getErrorMessage(), check.getDispFileName());
  101. }
  102. try {
  103. byte[] fileDataArr = Base64.getDecoder().decode(req.getFileData());
  104. if (!AipFileUtils.streamToFile(fileDataArr, check.getReqFileName())) {
  105. return responseStreamFail(req.getDispFileName());
  106. }
  107. try {
  108. SetFileInfo result = this.aipFile.getManager().setProtection(check.getReqFileName(), check.getActualFileName(), req.getEmail(), req.getAipGuid(), req.getComment());
  109. return responseSetStream(result, req.getDispFileName(), check.getActualFileName());
  110. }
  111. finally {
  112. AipFileUtils.delete(check.getReqFileName());
  113. AipFileUtils.delete(check.getActualFileName());
  114. }
  115. }
  116. catch (Exception e) {
  117. return responseStreamException(e, req.getDispFileName());
  118. }
  119. }
  120. @Override
  121. public ResponseStream delProtection(RequestStreamDel req) {
  122. CheckAip check = checkAipRequest(req.getApiGuid(), req.getDispFileName(), "", true);
  123. if (check.getErrorCode() != 0) {
  124. return new ResponseStream(check.getErrorCode(), check.getErrorMessage(), check.getDispFileName());
  125. }
  126. try {
  127. byte[] fileDataArr = Base64.getDecoder().decode(req.getFileData());
  128. if (!AipFileUtils.streamToFile(fileDataArr, check.getReqFileName())) {
  129. return responseStreamFail(req.getDispFileName());
  130. }
  131. try {
  132. SetFileInfo result = this.aipFile.getManager().deleteProtection(check.getReqFileName(), check.getActualFileName(), req.getEmail(), req.getComment());
  133. return responseSetStream(result, req.getDispFileName(), check.getActualFileName());
  134. }
  135. finally {
  136. AipFileUtils.delete(check.getReqFileName());
  137. AipFileUtils.delete(check.getActualFileName());
  138. }
  139. }
  140. catch (Exception e) {
  141. return responseStreamException(e, req.getDispFileName());
  142. }
  143. }
  144. @Override
  145. public ResponseStream setLabelProtection(RequestStreamAllSet req) {
  146. CheckAip check = checkAipRequest(req.getApiGuid(), req.getDispFileName(), "", true);
  147. if (check.getErrorCode() != 0) {
  148. return new ResponseStream(check.getErrorCode(), check.getErrorMessage(), check.getDispFileName());
  149. }
  150. try {
  151. byte[] fileDataArr = Base64.getDecoder().decode(req.getFileData());
  152. if (!AipFileUtils.streamToFile(fileDataArr, check.getReqFileName())) {
  153. return responseStreamFail(req.getDispFileName());
  154. }
  155. try {
  156. SetFileInfo result = this.aipFile.getManager().setLabel(check.getReqFileName(), check.getActualFileName(), req.getEmail(), req.getLabelGuid(), req.getTemplateGuid(), req.getComment());
  157. return responseSetStream(result, req.getDispFileName(), check.getActualFileName());
  158. }
  159. finally {
  160. AipFileUtils.delete(check.getReqFileName());
  161. AipFileUtils.delete(check.getActualFileName());
  162. }
  163. }
  164. catch (Exception e) {
  165. return responseStreamException(e, req.getDispFileName());
  166. }
  167. }
  168. @Override
  169. public ResponseStream delLabelProtection(RequestStreamDel req) {
  170. CheckAip check = checkAipRequest(req.getApiGuid(), req.getDispFileName(), "", true);
  171. if (check.getErrorCode() != 0) {
  172. return new ResponseStream(check.getErrorCode(), check.getErrorMessage(), check.getDispFileName());
  173. }
  174. try {
  175. byte[] fileDataArr = Base64.getDecoder().decode(req.getFileData());
  176. if (!AipFileUtils.streamToFile(fileDataArr, check.getReqFileName())) {
  177. return responseStreamFail(req.getDispFileName());
  178. }
  179. try {
  180. SetFileInfo result = this.aipFile.getManager().deleteLabel(check.getReqFileName(), check.getActualFileName(), req.getEmail(), req.getComment(), true);
  181. return responseSetStream(result, req.getDispFileName(), check.getActualFileName());
  182. }
  183. finally {
  184. AipFileUtils.delete(check.getReqFileName());
  185. AipFileUtils.delete(check.getActualFileName());
  186. }
  187. }
  188. catch (Exception e) {
  189. return responseStreamException(e, req.getDispFileName());
  190. }
  191. }
  192. @Override
  193. public ResponseStream encryptFile(MultipartFile file, RequestBase baseReq) {
  194. CheckMultipartFile result = checkMultipartFile(file, baseReq.getApiGuid());
  195. if (result.getErrorCode() != 0) {
  196. return new ResponseStream(result.getErrorCode(), result.getErrorMessage(), result.getDispFileName());
  197. }
  198. String savedFileName = getRequestFileName(result.getSaveFileName());
  199. RequestStreamSet req = new RequestStreamSet(baseReq.getApiKey(), baseReq.getEmail(), baseReq.getApiGuid(), "",
  200. result.getDispFileName(), AipFileUtils.getFileDataString(savedFileName));
  201. req.setAipGuid(this.repo.getSettings().getSetLabelId());
  202. req.setComment("SetEncryptStream");
  203. ResponseStream response = setLabel(req);
  204. AipFileUtils.delete(getRequestFileName(result.getSaveFileName()));
  205. return response;
  206. }
  207. @Override
  208. public ResponseStream decryptFile(MultipartFile file, RequestBase baseReq) {
  209. CheckMultipartFile result = checkMultipartFile(file, baseReq.getApiGuid());
  210. if (result.getErrorCode() != 0) {
  211. return new ResponseStream(result.getErrorCode(), result.getErrorMessage(), result.getDispFileName());
  212. }
  213. RequestStreamDel req = new RequestStreamDel(baseReq.getApiKey(), baseReq.getEmail(), baseReq.getApiGuid(), "",
  214. result.getDispFileName(), result.getSaveFileName(), "DelDecryptStream");
  215. ResponseStream response = delLabel(req);
  216. AipFileUtils.delete(getRequestFileName(result.getSaveFileName()));
  217. return response;
  218. }
  219. }