convert ooxml(pr 1304)

This commit is contained in:
Anton Suhorukov 2023-03-21 13:42:19 +03:00
parent 422e0bf3f2
commit c8cb5d087a
7 changed files with 28 additions and 18 deletions

View File

@ -83,7 +83,7 @@ public static class DocumentService
/// <exception>
/// </exception>
public static Task<(int ResultPercent, string ConvertedDocumentUri)> GetConvertedUriAsync(
public static Task<(int ResultPercent, string ConvertedDocumentUri, string convertedFileType)> GetConvertedUriAsync(
FileUtility fileUtility,
string documentConverterUrl,
string documentUri,
@ -112,7 +112,7 @@ public static class DocumentService
return InternalGetConvertedUriAsync(fileUtility, documentConverterUrl, documentUri, fromExtension, toExtension, documentRevisionId, password, region, thumbnail, spreadsheetLayout, isAsync, signatureSecret, clientFactory);
}
private static async Task<(int ResultPercent, string ConvertedDocumentUri)> InternalGetConvertedUriAsync(
private static async Task<(int ResultPercent, string ConvertedDocumentUri, string convertedFileType)> InternalGetConvertedUriAsync(
FileUtility fileUtility,
string documentConverterUrl,
string documentUri,
@ -907,7 +907,7 @@ public static class DocumentService
/// <param name="jsonDocumentResponse">The resulting json from editing service</param>
/// <param name="responseUri">Uri to the converted document</param>
/// <returns>The percentage of completion of conversion</returns>
private static (int ResultPercent, string responseuri) GetResponseUri(string jsonDocumentResponse)
private static (int ResultPercent, string responseuri, string convertedFileType) GetResponseUri(string jsonDocumentResponse)
{
if (string.IsNullOrEmpty(jsonDocumentResponse))
{
@ -930,9 +930,11 @@ public static class DocumentService
int resultPercent;
var responseUri = string.Empty;
var responseType = string.Empty;
if (isEndConvert)
{
responseUri = responseFromService.Value<string>("fileUrl");
responseType = responseFromService.Value<string>("fileType");
resultPercent = 100;
}
else
@ -944,6 +946,6 @@ public static class DocumentService
}
}
return (resultPercent, responseUri);
return (resultPercent, responseUri, responseType);
}
}

View File

@ -247,10 +247,16 @@ public class FileUtility
return GetInternalExtension(googleExtension);
}
public string GetInternalConvertExtension(string fileName)
{
return "ooxml";
}
public static string ReplaceFileExtension(string fileName, string newExtension)
{
newExtension = string.IsNullOrEmpty(newExtension) ? string.Empty : newExtension;
return Path.GetFileNameWithoutExtension(fileName) + newExtension;
return Path.GetFileNameWithoutExtension(fileName)
+ "." + newExtension.TrimStart('.');
}
public static FileType GetFileTypeByFileName(string fileName)

View File

@ -69,7 +69,7 @@ public class DocumentServiceConnector
return ASC.Files.Core.Helpers.DocumentService.GenerateRevisionId(expectedKey);
}
public Task<(int ResultPercent, string ConvertedDocumentUri)> GetConvertedUriAsync(string documentUri,
public Task<(int ResultPercent, string ConvertedDocumentUri, string convertedFileType)> GetConvertedUriAsync(string documentUri,
string fromExtension,
string toExtension,
string documentRevisionId,

View File

@ -456,13 +456,14 @@ public class FileConverter
var fileUri = _pathProvider.GetFileStreamUrl(file);
var fileExtension = file.ConvertedExtension;
var toExtension = _fileUtility.GetInternalExtension(file.Title);
var toExtension = _fileUtility.GetInternalConvertExtension(file.Title);
var docKey = _documentServiceHelper.GetDocKey(file);
fileUri = _documentServiceConnector.ReplaceCommunityAdress(fileUri);
var uriTuple = await _documentServiceConnector.GetConvertedUriAsync(fileUri, fileExtension, toExtension, docKey, null, CultureInfo.CurrentUICulture.Name, null, null, false);
var convertUri = uriTuple.ConvertedDocumentUri;
var convertType = uriTuple.convertedFileType;
var operationResult = new FileConverterOperationResult
{
@ -484,7 +485,7 @@ public class FileConverter
var operationResultError = string.Empty;
var newFile = await SaveConvertedFileAsync(file, convertUri);
var newFile = await SaveConvertedFileAsync(file, convertUri, convertType);
if (newFile != null)
{
await _socketManager.CreateFileAsync(file);
@ -545,13 +546,13 @@ public class FileConverter
}
}
public async Task<File<T>> SaveConvertedFileAsync<T>(File<T> file, string convertedFileUrl)
public async Task<File<T>> SaveConvertedFileAsync<T>(File<T> file, string convertedFileUrl, string convertedFileType)
{
var fileDao = _daoFactory.GetFileDao<T>();
var folderDao = _daoFactory.GetFolderDao<T>();
File<T> newFile = null;
var markAsTemplate = false;
var newFileTitle = FileUtility.ReplaceFileExtension(file.Title, _fileUtility.GetInternalExtension(file.Title));
var newFileTitle = FileUtility.ReplaceFileExtension(file.Title, convertedFileType);
if (!_filesSettingsHelper.StoreOriginalFiles && await _fileSecurity.CanEditAsync(file))
{

View File

@ -122,7 +122,8 @@ internal class FileConverterService<T> : BackgroundService
var file = await daoFactory.GetFileDao<T>().GetFileAsync(fileId, fileVersion);
var fileUri = file.Id.ToString();
string convertedFileUrl;
string convertedFileUrl;
string convertedFileType;
try
{
@ -147,12 +148,12 @@ internal class FileConverterService<T> : BackgroundService
fileUri = pathProvider.GetFileStreamUrl(file);
var toExtension = fileUtility.GetInternalExtension(file.Title);
var toExtension = fileUtility.GetInternalConvertExtension(file.Title);
var fileExtension = file.ConvertedExtension;
var docKey = documentServiceHelper.GetDocKey(file);
fileUri = documentServiceConnector.ReplaceCommunityAdress(fileUri);
(operationResultProgress, convertedFileUrl) = await documentServiceConnector.GetConvertedUriAsync(fileUri, fileExtension, toExtension, docKey, password, CultureInfo.CurrentUICulture.Name, null, null, true);
(operationResultProgress, convertedFileUrl, convertedFileType) = await documentServiceConnector.GetConvertedUriAsync(fileUri, fileExtension, toExtension, docKey, password, CultureInfo.CurrentUICulture.Name, null, null, true);
}
catch (Exception exception)
{
@ -213,13 +214,13 @@ internal class FileConverterService<T> : BackgroundService
try
{
newFile = await fileConverter.SaveConvertedFileAsync(file, convertedFileUrl);
newFile = await fileConverter.SaveConvertedFileAsync(file, convertedFileUrl, convertedFileType);
}
catch (Exception e)
{
operationResultError = e.Message;
logger.ErrorOperation(operationResultError, convertedFileUrl, fileUri, e);
logger.ErrorOperation(operationResultError, convertedFileUrl, fileUri, convertedFileType, e);
continue;
}

View File

@ -39,8 +39,8 @@ public static partial class FileConverterLogger
[LoggerMessage(Level = LogLevel.Error, Message = "Error convert {fileId} with url {url}")]
public static partial void ErrorConvertFileWithUrl(this ILogger logger, string fileId, string url, Exception exception);
[LoggerMessage(Level = LogLevel.Error, Message = "{operationResultError} ConvertUrl: {convertedFileUrl} fromUrl: {fileUri}")]
public static partial void ErrorOperation(this ILogger logger, string operationResultError, string convertedFileUrl, string fileUri, Exception exception);
[LoggerMessage(Level = LogLevel.Error, Message = "{operationResultError} ConvertUrl: {convertedFileUrl} fromUrl: {fileUri} ConvertedFileType: {convertedFileType}")]
public static partial void ErrorOperation(this ILogger logger, string operationResultError, string convertedFileUrl, string fileUri, string convertedFileType, Exception exception);
[LoggerMessage(Level = LogLevel.Error, Message = "CheckConvertFilesStatus timeout: {fileId} ({contentLengthString})")]
public static partial void ErrorCheckConvertFilesStatus(this ILogger logger, string fileId, long contentLengthString);

View File

@ -303,7 +303,7 @@ public class Builder<T>
}
};
var (operationResultProgress, url) = await _documentServiceConnector.GetConvertedUriAsync(fileUri, fileExtension, toExtension, docKey, null, CultureInfo.CurrentCulture.Name, thumbnail, spreadsheetLayout, false);
var (operationResultProgress, url, _) = await _documentServiceConnector.GetConvertedUriAsync(fileUri, fileExtension, toExtension, docKey, null, CultureInfo.CurrentCulture.Name, thumbnail, spreadsheetLayout, false);
operationResultProgress = Math.Min(operationResultProgress, 100);
return (operationResultProgress, url);