diff --git a/AsbCloudApp/Services/IFileService.cs b/AsbCloudApp/Services/IFileService.cs index 5b1079cb..ab09661b 100644 --- a/AsbCloudApp/Services/IFileService.cs +++ b/AsbCloudApp/Services/IFileService.cs @@ -12,7 +12,7 @@ namespace AsbCloudApp.Services string RootPath { get; } Task GetFileWebUrlAsync(FileInfoDto dto, string userLogin, - string relativePath, CancellationToken token = default); + CancellationToken token = default); Task SaveAsync(int idWell, int? idUser, int idCategory, string fileFullName, Stream fileStream, CancellationToken token = default); diff --git a/AsbCloudInfrastructure/Services/FileService.cs b/AsbCloudInfrastructure/Services/FileService.cs index 3fe137b6..2991796d 100644 --- a/AsbCloudInfrastructure/Services/FileService.cs +++ b/AsbCloudInfrastructure/Services/FileService.cs @@ -32,12 +32,18 @@ namespace AsbCloudInfrastructure.Services this.googleDriveService = googleDriveService; } - public async Task GetFileWebUrlAsync(FileInfoDto dto, string userLogin, - string relativePath, CancellationToken token = default) + public async Task GetFileWebUrlAsync(FileInfoDto fileInfo, string userLogin, + CancellationToken token = default) { + var fileWebUrl = fileInfo.PublishInfo?.WebStorageFileUrl; + + if (!string.IsNullOrEmpty(fileWebUrl)) + return fileWebUrl; + + var relativePath = GetUrl(fileInfo); var fileWebLink = await PublishFileToCloudAsync(relativePath, - dto.Name, token); - await SaveWeblinkToFileInfo(dto.Id, userLogin, fileWebLink, token); + fileInfo.Name, token); + await SaveWeblinkToFileInfo(fileInfo.Id, userLogin, fileWebLink, token); return fileWebLink; } diff --git a/AsbCloudInfrastructure/Services/GoogleDriveService.cs b/AsbCloudInfrastructure/Services/GoogleDriveService.cs index a19ef137..c553c2d8 100644 --- a/AsbCloudInfrastructure/Services/GoogleDriveService.cs +++ b/AsbCloudInfrastructure/Services/GoogleDriveService.cs @@ -51,7 +51,7 @@ namespace AsbCloudInfrastructure.Services service = newService; } - public IEnumerable GetAllFiles() + public async Task> GetAllFileNames() { var fileList = service.Files.List(); fileList.Fields = "files(id, webViewLink, size)"; @@ -63,13 +63,13 @@ namespace AsbCloudInfrastructure.Services do { fileList.PageToken = pageToken; - var filesResult = fileList.Execute(); + var filesResult = await fileList.ExecuteAsync(); var files = filesResult.Files; pageToken = filesResult.NextPageToken; result.AddRange(files); } while (pageToken != null); - return result; + return result.Select(r => r.Name); } public async Task GetFileWebLinkAsync(string idFile, diff --git a/AsbCloudWebApi/Controllers/DrillingProgramController.cs b/AsbCloudWebApi/Controllers/DrillingProgramController.cs index fbf571f9..952b4e83 100644 --- a/AsbCloudWebApi/Controllers/DrillingProgramController.cs +++ b/AsbCloudWebApi/Controllers/DrillingProgramController.cs @@ -53,19 +53,14 @@ namespace AsbCloudWebApi.Controllers { var fileInfo = await drillingProgramService.GetAsync(idWell, token) .ConfigureAwait(false); + if (fileInfo is null) return NoContent(); - var fileWebUrl = fileInfo.PublishInfo?.WebStorageFileUrl; - - if (!string.IsNullOrEmpty(fileWebUrl)) - return Ok(fileWebUrl); - - var relativePath = fileService.GetUrl(fileInfo); var userLogin = User.Identity?.Name ?? ""; - fileWebUrl = await fileService.GetFileWebUrlAsync(fileInfo, - userLogin, relativePath, token); + var fileWebUrl = await fileService.GetFileWebUrlAsync(fileInfo, + userLogin, token); return Ok(fileWebUrl); }