public ResultModel ConvertFile(ConversionDto conversionDto) { var fileNames = _storageRepository.ParseNames(conversionDto.sessionId); if (fileNames == null) { return(ResultModel.Error(fileNames.Id, "Invalid session id", 400)); } return(OpConvert.Measure(fileNames.Id, () => { FileFormat fmt; if (conversionDto.outputType != null && formats.TryGetValue(conversionDto.outputType, out fmt)) { SceneImportContext importContext = CreateLoadContext(fileNames); //User uploaded an unsupported file format. if (importContext.SourceFormat == null) { _logger.LogError("Failed to detect file type from file {0}", fileNames.Id); return ResultModel.Error(fileNames.Id, "Unsupported input file", 400); } Scene scene; try { scene = importContext.LoadScene(); } catch (Exception e) { _logger.LogError(e, "Failed to open input file {0}", fileNames.Id); OperationFailed(e); return ResultModel.Error(fileNames.Id, "Internal server error", 500); } var originalFile = importContext.MainFile; try { var fileName = fileNames[OutputFile]; using (var stream = LimitedStream.CreateFile(fileName, MaximumOutputSize)) { scene.Save(stream, fmt); } } catch (Exception e) { var msg = "Internal server error"; if (e is ExportException) { msg = e.Message; } _logger.LogError(e, "Failed to save converted file to {0}", fileNames[SourceFile]); OperationFailed(e); return ResultModel.Error(fileNames.Id, msg, 500); } var newFileName = Path.ChangeExtension(originalFile, fmt.Extension); importContext.MetaData.OutputFile = newFileName; SetMetaData(fileNames, importContext.MetaData); return ResultModel.Ok(true); } return ResultModel.Error(fileNames.Id, "Output type not found", 400); })); }
public ResultModel UploadIForm([FromForm] IFormCollection formData) { IFormFileCollection files = formData.Files; int fileCount = files.Count; if (files == null || fileCount == 0) { return(ResultModel.Error("file can't be null!", 400)); } var fileNames = _storageRepository.NewNames(); return(OpUpload.Measure(fileNames.Id, () => { try { SaveUploadedFiles(fileNames, files); } catch (Exception e) { OperationFailed(e); return ResultModel.Error(fileNames.Id, e.Message, 400); } return ResultModel.Ok(fileNames.Id); })); }
public ResultObject UploadFile([FromForm] IFormCollection formData) { var files = formData.Files; if (files == null || files.Count == 0) { return(new ResultObject { state = "Fail", resultObject = "files==null" }); } var file = files[0]; var originalFileName = Path.GetFileName(file.FileName); var fileNames = _storageRepository.NewNames(); return(OpUpload.Measure(fileNames.Id, () => { try { SaveUploadedFiles(fileNames, files); } catch (Exception e) { return new ResultObject { state = "Fail", resultObject = "Server error", sessionId = fileNames.Id }; } try { HashSet <string> s = DiagnoseResult(fileNames); _logger.LogInformation("File analyzed, id = " + fileNames.Id); return new ResultObject { state = "Success", types = s, sessionId = fileNames.Id, }; } catch (Exception e) { _logger.LogError(e, "Failed to diagnose result from input file, session id = {0}", fileNames.Id); OperationFailed(e); return new ResultObject { state = "Fail", resultObject = "Server error", sessionId = fileNames.Id }; } })); }
public IActionResult Fileres(string sessionId) { var fileNames = _storageRepository.ParseNames(sessionId); if (fileNames == null || FileIO.Exists(fileNames[ReviewFile]) == false) { return(NotFound()); } return(OpReview.Measure(fileNames.Id, () => { var reviewFile = fileNames[ReviewFile]; return PhysicalFile(reviewFile, "application/octet-stream", "review.a3dw"); })); }
public ResultObject UploadIForm([FromForm] IFormCollection formData) { IFormFileCollection files = formData.Files; int fileCount = files.Count; if (files == null || fileCount == 0) { return(new ResultObject { state = "Fail", resultObject = "files==null" }); } var file = files[0]; var originalFileName = Path.GetFileName(file.FileName); var fileNames = _storageRepository.NewNames(); return(OpUpload.Measure(fileNames.Id, () => { try { SaveUploadedFiles(fileNames, files); var ctx = CreateLoadContext(fileNames); var scene = ctx.LoadScene(); var opt = new A3DWSaveOptions(); opt.ExportMetaData = true; scene.AssetInfo.SetProperty("OriginalFileName", ctx.MainFile); scene.Save(fileNames[ReviewFile], opt); _logger.LogInformation("File analyzed, id = " + fileNames.Id); return new ResultObject { state = "Success", sessionId = fileNames.Id }; } catch (Exception e) { _logger.LogError(e, "Failed to diagnose result from input file, session id = {0}", fileNames.Id); OperationFailed(e); return new ResultObject { state = "Fail", resultObject = "Server error", sessionId = fileNames.Id }; } })); }
public IActionResult Download(string sessionId) { var fileNames = _storageRepository.ParseNames(sessionId); if (fileNames == null) { return(NotFound()); } return(OpDownload.Measure <IActionResult>(fileNames.Id, () => { var ctx = CreateLoadContext(fileNames); var path = ctx.PhysicalMainFile; if (FileIO.Exists(path) == false) { return NotFound(); } return PhysicalFile(path, "application/octet-stream", ctx.MainFile); })); }
public ResultModel SendEmail(string address, string url) { return(OpEmail.Measure(url, () => { var uid = _configuration["SystemConfig:uid"]; var pwd = _configuration["SystemConfig:MailServerPassword"]; var applicationUrl = _configuration["SystemConfig:applicationUrl"]; var fromEmail = _configuration["SystemConfig:FromAddress"]; var MailServer = _configuration["SystemConfig:MailServer"]; var MailServerPort = _configuration["SystemConfig:MailServerPort"]; try { MailAddress from = new MailAddress(fromEmail); MailAddress to = new MailAddress(address); MailMessage mailMessage = new MailMessage(from, to); string strbody = ReplaceText("Free Converter App for 3D File Formats ", "Your file has been converted successfully", applicationUrl + "/api/conversion/download/" + url); mailMessage.Subject = "Download File"; mailMessage.Body = strbody; mailMessage.IsBodyHtml = true; SmtpClient smtpClient = new SmtpClient(); smtpClient.UseDefaultCredentials = false; smtpClient.Host = MailServer; smtpClient.Port = int.Parse(MailServerPort); smtpClient.EnableSsl = true; smtpClient.Credentials = new NetworkCredential(uid, pwd); smtpClient.Send(mailMessage); _logger.LogInformation("Send file {0} to {1}", url, address); return ResultModel.Ok(); } catch (Exception e) { _logger.LogError(e, "Failed to send email"); OperationFailed(e); return ResultModel.Error("send Error", 500); } })); }
public IActionResult DownloadFile(string sessionId) { var fileNames = _storageRepository.ParseNames(sessionId); if (fileNames == null) { return(NotFound()); } return(OpDownload.Measure <IActionResult>(fileNames.Id, () => { string path = fileNames[OutputFile]; if (FileIO.Exists(path) == false) { return NotFound(); } var metaData = GetMetaData(fileNames); var outputFile = metaData.OutputFile; return PhysicalFile(path, "application/octet-stream", outputFile); })); }
public IActionResult DownloadResult(string type, string resultType, string sessionId) { var outputFormat = GetFileFormat(type); if (outputFormat == null) { return(NotFound()); } var fileNames = _storageRepository.ParseNames(sessionId); if (fileNames == null || !FileIO.Exists(fileNames[AnalyzeResult])) { return(NotFound()); } return(OpRepair.Measure <IActionResult>(fileNames.Id, () => { if (!string.IsNullOrEmpty(resultType)) { var issuesToRepair = ParseIssues(resultType); using (var fs = FileIO.OpenRead(fileNames[AnalyzeResult])) { SceneDiagnoser sd; try { sd = SceneDiagnoser.LoadFromStream(fs); } catch (Exception e) { _logger.LogError(e, "Failed to restore the diagnosing result, session id = {0}", sessionId); OperationFailed(e); return this.Problem("Internal server error"); } Mesh result; try { result = sd.Repair(issuesToRepair); } catch (Exception e) { _logger.LogError(e, "Failed to repair the input mesh, session id = {0}", sessionId); OperationFailed(e); return this.Problem("Internal server error"); } try { Scene scene = new Scene(result); scene.Save(fileNames[RepairedFile], outputFormat); } catch (Exception e) { _logger.LogError(e, "Failed to save the repaired result, session id = {0}", sessionId); OperationFailed(e); return this.Problem("Internal server error"); } } } else { //No issues were selected, just make a direct conversion. try { Scene scene = OpenInput(fileNames); scene.Save(fileNames[RepairedFile], outputFormat); } catch (Exception e) { _logger.LogError(e, "Failed to save to the required type, session id = {0}", sessionId); OperationFailed(e); return this.Problem("Internal server error"); } } if (!FileIO.Exists(fileNames[RepairedFile])) { return NotFound(); } try { var path = fileNames[RepairedFile]; string downfile = Guid.NewGuid().ToString(); return PhysicalFile(path, "application/octet-stream", downfile + "." + type); } catch (Exception e) { OperationFailed(e); return NotFound(); } })); }