123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540 |
- using AipGateway.AIP;
- using AipGateway.API.Domain.IRepositories.IGenericRepositories;
- using AipGateway.API.Domain.Models.Request;
- using AipGateway.API.Domain.Models.Response;
- using AutoMapper;
- using Quartz.Util;
- using System.IO;
- namespace AipGateway.API.Services.impl
- {
- public class ApiStreamService : IApiStreamService
- {
- private readonly ILogger<ApiFileService> _log;
- private readonly IUnitOfWork _unitOfWork;
- private readonly IMapper _mapper;
- public ApiStreamService(ILogger<ApiFileService> logger, IUnitOfWork unitOfWork, IMapper mapper)
- {
- _log = logger;
- _unitOfWork = unitOfWork;
- _mapper = mapper;
- _log.LogError("ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo: ApiStreamService");
- }
- public async Task<ResponseInfo> GetInfo(RequestStream req)
- {
- string actualFileName = Path.Combine(ContainerService.aipConfig.TargetFileDir, req.apiGuid + Path.GetExtension(req.dispFileName).ToLower());
- try
- {
- string? newFileExt = ContainerService.GetSupportedFileType(req.dispFileName);
- if (newFileExt == null)
- {
- return new ResponseInfo
- {
- errorCode = 102,
- errorMessage = "지원하지 않는 파일형식 입니다.",
- };
- }
- var task = Task.Run(() =>
- {
- using(var stream = new MemoryStream(Convert.FromBase64String(req.fileData)))
- {
- var fileInfo = ContainerService.aipFileManager.GetFileInfo(stream, actualFileName);
- bool isLabled = false;
- bool isProtected = false;
- DateTime creationTime = DateTime.Now;
- string contentId = string.Empty;
- string owner = string.Empty;
- string labelId = string.Empty;
- string labelName = string.Empty;
- string templateId = string.Empty;
- string templateName = string.Empty;
- Int64 fileSize = 0;
- if (fileInfo != null)
- {
- fileSize = fileInfo.FileSize;
- if (fileInfo.Content != null)
- {
- creationTime = fileInfo.Content.CreationTime;
- }
- if (fileInfo.Label != null)
- {
- isLabled = true;
- labelId = fileInfo.Label.Id;
- labelName = fileInfo.Label.Name;
- }
- if (fileInfo.Protection != null)
- {
- owner = fileInfo.Protection.Owner;
- contentId = fileInfo.Protection.ContentId;
- if (fileInfo.Protection.ProtectionDescriptor != null)
- {
- isProtected = true;
- templateId = fileInfo.Protection.ProtectionDescriptor.TemplateId;
- templateName = fileInfo.Protection.ProtectionDescriptor.Name;
- }
- }
- }
- return new ResponseInfo
- {
- isLabled = isLabled,
- isProtected = isProtected,
- creationTime = creationTime,
- contentId = contentId,
- owner = owner,
- labelId = labelId,
- labelName = labelName,
- templateId = templateId,
- templateName = templateName,
- dispFileName = req.dispFileName,
- FileLabelGuid = labelId,
- FileProtectionGuid = templateId,
- FileOwner = owner,
- FileExt = Path.GetExtension(req.dispFileName),
- FileSize = fileSize,
- };
- }
- });
- ResponseInfo result = await task;
- return result;
- }
- catch (Exception)
- {
- throw;
- }
- finally
- {
- ContainerService.DeleteFile(actualFileName);
- }
- }
- public async Task<ResponseStream> SetLabel(RequestStreamSet req)
- {
- string actualFileName = Path.Combine(ContainerService.aipConfig.TargetFileDir, req.apiGuid + Path.GetExtension(req.dispFileName).ToLower());
- try
- {
- string? newFileExt = ContainerService.GetSupportedFileType(req.dispFileName);
- if (newFileExt == null)
- {
- return new ResponseStream
- {
- errorCode = 102,
- errorMessage = "지원하지 않는 파일형식 입니다.",
- dispFileName = req.dispFileName,
- };
- }
- var task = Task.Run(() =>
- {
- string fileExt = Path.GetExtension(req.dispFileName).ToLower();
- string? newFileExt = ContainerService.GetSupportedFileType(req.dispFileName);
- if (newFileExt == null)
- {
- return new ResponseStream
- {
- errorCode = 102,
- errorMessage = "지원하지 않는 파일형식 입니다.",
- dispFileName = req.dispFileName,
- };
- }
- using (var stream = new MemoryStream(Convert.FromBase64String(req.fileData)))
- {
- string dispFileName = Path.GetFileNameWithoutExtension(req.dispFileName) + newFileExt;
- actualFileName = Path.Combine(ContainerService.aipConfig.TargetFileDir, req.apiGuid + newFileExt);
- string comment = req.comment.IsNullOrWhiteSpace() ? "SetLabel" : req.comment;
- SetFileInfo result = ContainerService.aipFileManager.SetLabel(stream, actualFileName, req.email, req.aipGuid, "", comment);
- return new ResponseStream
- {
- errorCode = result.errorNo,
- errorMessage = result.errorMsg,
- dispFileName = dispFileName,
- outputFileName = Path.GetFileName(actualFileName),
- fileData = ContainerService.GetFileData(actualFileName),
- FileOwner = result.fileOwner,
- FileExt = fileExt,
- FileSize = result.fileSize,
- FileLabelGuid = result.lableGuid,
- FileProtectionGuid = result.templateGuid,
- NewFileName = dispFileName,
- NewFileOwner = result.newFileOwner,
- NewFileExt = newFileExt,
- NewFileSize = result.newFileSize,
- NewFileLabelGuid = result.newFileLabelGuid,
- NewFileProtectionGuid = result.newFileTemplateGuid,
- };
- }
- });
- ResponseStream result = await task;
- return result;
- }
- catch (Exception)
- {
- throw;
- }
- finally
- {
- ContainerService.DeleteFile(actualFileName);
- }
- }
- public async Task<ResponseStream> DelLabel(RequestStreamDel req)
- {
- string actualFileName = Path.Combine(ContainerService.aipConfig.TargetFileDir, req.apiGuid + Path.GetExtension(req.dispFileName).ToLower());
- try
- {
- string? newFileExt = ContainerService.GetSupportedFileType(req.dispFileName);
- if (newFileExt == null)
- {
- return new ResponseStream
- {
- errorCode = 102,
- errorMessage = "지원하지 않는 파일형식 입니다.",
- dispFileName = req.dispFileName,
- };
- }
- var task = Task.Run(() =>
- {
- string fileExt = Path.GetExtension(req.dispFileName).ToLower();
- string? newFileExt = ContainerService.GetSupportedFileType(req.dispFileName);
- if (newFileExt == null)
- {
- return new ResponseStream
- {
- errorCode = 102,
- errorMessage = "지원하지 않는 파일형식 입니다.",
- dispFileName = req.dispFileName,
- };
- }
- using (var stream = new MemoryStream(Convert.FromBase64String(req.fileData)))
- {
- string dispFileName = Path.GetFileNameWithoutExtension(req.dispFileName) + newFileExt;
- actualFileName = Path.Combine(ContainerService.aipConfig.TargetFileDir, req.apiGuid + newFileExt);
- string comment = req.comment.IsNullOrWhiteSpace() ? "DelLabel" : req.comment;
- SetFileInfo result = ContainerService.aipFileManager.DeleteLabel(stream, actualFileName, req.email, comment);
- return new ResponseStream
- {
- errorCode = result.errorNo,
- errorMessage = result.errorMsg,
- dispFileName = dispFileName,
- outputFileName = Path.GetFileName(actualFileName),
- fileData = ContainerService.GetFileData(actualFileName),
- FileOwner = result.fileOwner,
- FileExt = fileExt,
- FileSize = result.fileSize,
- FileLabelGuid = result.lableGuid,
- FileProtectionGuid = result.templateGuid,
- NewFileName = dispFileName,
- NewFileOwner = result.newFileOwner,
- NewFileExt = newFileExt,
- NewFileSize = result.newFileSize,
- NewFileLabelGuid = result.newFileLabelGuid,
- NewFileProtectionGuid = result.newFileTemplateGuid,
- };
- }
- });
- ResponseStream result = await task;
- return result;
- }
- catch (Exception)
- {
- throw;
- }
- finally
- {
- ContainerService.DeleteFile(actualFileName);
- }
- }
- public async Task<ResponseStream> SetProtection(RequestStreamSet req)
- {
- string actualFileName = Path.Combine(ContainerService.aipConfig.TargetFileDir, req.apiGuid + Path.GetExtension(req.dispFileName).ToLower());
- try
- {
- string? newFileExt = ContainerService.GetSupportedFileType(req.dispFileName);
- if (newFileExt == null)
- {
- return new ResponseStream
- {
- errorCode = 102,
- errorMessage = "지원하지 않는 파일형식 입니다.",
- dispFileName = req.dispFileName,
- };
- }
- var task = Task.Run(() =>
- {
- string fileExt = Path.GetExtension(req.dispFileName).ToLower();
- string? newFileExt = ContainerService.GetSupportedFileType(req.dispFileName);
- if (newFileExt == null)
- {
- return new ResponseStream
- {
- errorCode = 102,
- errorMessage = "지원하지 않는 파일형식 입니다.",
- dispFileName = req.dispFileName,
- };
- }
- using (var stream = new MemoryStream(Convert.FromBase64String(req.fileData)))
- {
- string dispFileName = Path.GetFileNameWithoutExtension(req.dispFileName) + newFileExt;
- actualFileName = Path.Combine(ContainerService.aipConfig.TargetFileDir, req.apiGuid + newFileExt);
- string comment = req.comment.IsNullOrWhiteSpace() ? "SetProtection" : req.comment;
- SetFileInfo result = ContainerService.aipFileManager.SetProtection(stream, actualFileName, req.email, req.aipGuid, comment);
- return new ResponseStream
- {
- errorCode = result.errorNo,
- errorMessage = result.errorMsg,
- dispFileName = dispFileName,
- outputFileName = Path.GetFileName(actualFileName),
- fileData = ContainerService.GetFileData(actualFileName),
- FileOwner = result.fileOwner,
- FileExt = fileExt,
- FileSize = result.fileSize,
- FileLabelGuid = result.lableGuid,
- FileProtectionGuid = result.templateGuid,
- NewFileName = dispFileName,
- NewFileOwner = result.newFileOwner,
- NewFileExt = newFileExt,
- NewFileSize = result.newFileSize,
- NewFileLabelGuid = result.newFileLabelGuid,
- NewFileProtectionGuid = result.newFileTemplateGuid,
- };
- }
- });
- ResponseStream result = await task;
- return result;
- }
- catch (Exception)
- {
- throw;
- }
- finally
- {
- ContainerService.DeleteFile(actualFileName);
- }
- }
- public async Task<ResponseStream> DelProtection(RequestStreamDel req)
- {
- string actualFileName = Path.Combine(ContainerService.aipConfig.TargetFileDir, req.apiGuid + Path.GetExtension(req.dispFileName).ToLower());
- try
- {
- string? newFileExt = ContainerService.GetSupportedFileType(req.dispFileName);
- if (newFileExt == null)
- {
- return new ResponseStream
- {
- errorCode = 102,
- errorMessage = "지원하지 않는 파일형식 입니다.",
- dispFileName = req.dispFileName,
- };
- }
- var task = Task.Run(() =>
- {
- string fileExt = Path.GetExtension(req.dispFileName).ToLower();
- string? newFileExt = ContainerService.GetSupportedFileType(req.dispFileName);
- if (newFileExt == null)
- {
- return new ResponseStream
- {
- errorCode = 102,
- errorMessage = "지원하지 않는 파일형식 입니다.",
- dispFileName = req.dispFileName,
- };
- }
- using (var stream = new MemoryStream(Convert.FromBase64String(req.fileData)))
- {
- string dispFileName = Path.GetFileNameWithoutExtension(req.dispFileName) + newFileExt;
- actualFileName = Path.Combine(ContainerService.aipConfig.TargetFileDir, req.apiGuid + newFileExt);
- string comment = req.comment.IsNullOrWhiteSpace() ? "DelLabel" : req.comment;
- SetFileInfo result = ContainerService.aipFileManager.DeleteLabel(stream, actualFileName, req.email, comment);
- return new ResponseStream
- {
- errorCode = result.errorNo,
- errorMessage = result.errorMsg,
- dispFileName = dispFileName,
- outputFileName = Path.GetFileName(actualFileName),
- fileData = ContainerService.GetFileData(actualFileName),
- FileOwner = result.fileOwner,
- FileExt = fileExt,
- FileSize = result.fileSize,
- FileLabelGuid = result.lableGuid,
- FileProtectionGuid = result.templateGuid,
- NewFileName = dispFileName,
- NewFileOwner = result.newFileOwner,
- NewFileExt = newFileExt,
- NewFileSize = result.newFileSize,
- NewFileLabelGuid = result.newFileLabelGuid,
- NewFileProtectionGuid = result.newFileTemplateGuid,
- };
- }
- });
- ResponseStream result = await task;
- return result;
- }
- catch (Exception)
- {
- throw;
- }
- finally
- {
- ContainerService.DeleteFile(actualFileName);
- }
- }
- public async Task<ResponseStream> SetLabelProtection(RequestStreamAllSet req)
- {
- string actualFileName = Path.Combine(ContainerService.aipConfig.TargetFileDir, req.apiGuid + Path.GetExtension(req.dispFileName).ToLower());
- try
- {
- string? newFileExt = ContainerService.GetSupportedFileType(req.dispFileName);
- if (newFileExt == null)
- {
- return new ResponseStream
- {
- errorCode = 102,
- errorMessage = "지원하지 않는 파일형식 입니다.",
- dispFileName = req.dispFileName,
- };
- }
- var task = Task.Run(() =>
- {
- string fileExt = Path.GetExtension(req.dispFileName).ToLower();
- string? newFileExt = ContainerService.GetSupportedFileType(req.dispFileName);
- if (newFileExt == null)
- {
- return new ResponseStream
- {
- errorCode = 102,
- errorMessage = "지원하지 않는 파일형식 입니다.",
- dispFileName = req.dispFileName,
- };
- }
- using (var stream = new MemoryStream(Convert.FromBase64String(req.fileData)))
- {
- string dispFileName = Path.GetFileNameWithoutExtension(req.dispFileName) + newFileExt;
- actualFileName = Path.Combine(ContainerService.aipConfig.TargetFileDir, req.apiGuid + newFileExt);
- string comment = req.comment.IsNullOrWhiteSpace() ? "SetLabel" : req.comment;
- SetFileInfo result = ContainerService.aipFileManager.SetLabel(stream, actualFileName, req.email, req.labelGuid, req.templateGuid, comment);
- return new ResponseStream
- {
- errorCode = result.errorNo,
- errorMessage = result.errorMsg,
- dispFileName = dispFileName,
- outputFileName = Path.GetFileName(actualFileName),
- fileData = ContainerService.GetFileData(actualFileName),
- FileOwner = result.fileOwner,
- FileExt = fileExt,
- FileSize = result.fileSize,
- FileLabelGuid = result.lableGuid,
- FileProtectionGuid = result.templateGuid,
- NewFileName = dispFileName,
- NewFileOwner = result.newFileOwner,
- NewFileExt = newFileExt,
- NewFileSize = result.newFileSize,
- NewFileLabelGuid = result.newFileLabelGuid,
- NewFileProtectionGuid = result.newFileTemplateGuid,
- };
- }
- });
- ResponseStream result = await task;
- return result;
- }
- catch (Exception)
- {
- throw;
- }
- finally
- {
- ContainerService.DeleteFile(actualFileName);
- }
- }
- public async Task<ResponseStream> DelLabelProtection(RequestStreamDel req)
- {
- string actualFileName = Path.Combine(ContainerService.aipConfig.TargetFileDir, req.apiGuid + Path.GetExtension(req.dispFileName).ToLower());
- try
- {
- string? newFileExt = ContainerService.GetSupportedFileType(req.dispFileName);
- if (newFileExt == null)
- {
- return new ResponseStream
- {
- errorCode = 102,
- errorMessage = "지원하지 않는 파일형식 입니다.",
- dispFileName = req.dispFileName,
- };
- }
- var task = Task.Run(() =>
- {
- string fileExt = Path.GetExtension(req.dispFileName).ToLower();
- string? newFileExt = ContainerService.GetSupportedFileType(req.dispFileName);
- if (newFileExt == null)
- {
- return new ResponseStream
- {
- errorCode = 102,
- errorMessage = "지원하지 않는 파일형식 입니다.",
- dispFileName = req.dispFileName,
- };
- }
- using (var stream = new MemoryStream(Convert.FromBase64String(req.fileData)))
- {
- string dispFileName = Path.GetFileNameWithoutExtension(req.dispFileName) + newFileExt;
- actualFileName = Path.Combine(ContainerService.aipConfig.TargetFileDir, req.apiGuid + newFileExt);
- string comment = req.comment.IsNullOrWhiteSpace() ? "DelLabel" : req.comment;
- SetFileInfo result = ContainerService.aipFileManager.DeleteLabel(stream, actualFileName, req.email, comment, true);
- return new ResponseStream
- {
- errorCode = result.errorNo,
- errorMessage = result.errorMsg,
- dispFileName = dispFileName,
- outputFileName = Path.GetFileName(actualFileName),
- fileData = ContainerService.GetFileData(actualFileName),
- FileOwner = result.fileOwner,
- FileExt = fileExt,
- FileSize = result.fileSize,
- FileLabelGuid = result.lableGuid,
- FileProtectionGuid = result.templateGuid,
- NewFileName = dispFileName,
- NewFileOwner = result.newFileOwner,
- NewFileExt = newFileExt,
- NewFileSize = result.newFileSize,
- NewFileLabelGuid = result.newFileLabelGuid,
- NewFileProtectionGuid = result.newFileTemplateGuid,
- };
- }
- });
- ResponseStream result = await task;
- return result;
- }
- catch (Exception)
- {
- throw;
- }
- finally
- {
- ContainerService.DeleteFile(actualFileName);
- }
- }
- }
- }
|