diff --git a/AsbCloudInfrastructure/Services/GoogleDriveService.cs b/AsbCloudInfrastructure/Services/GoogleDriveService.cs index 6afe2d7f..8a26609c 100644 --- a/AsbCloudInfrastructure/Services/GoogleDriveService.cs +++ b/AsbCloudInfrastructure/Services/GoogleDriveService.cs @@ -16,9 +16,7 @@ namespace AsbCloudInfrastructure.Services { public class GoogleDriveService : IGoogleDriveService { - private readonly DriveService service; - - public GoogleDriveService() + private static DriveService GetService() { // ключи для почты asbautodrilling@gmail.com. var tokenResponse = new TokenResponse { @@ -42,16 +40,17 @@ namespace AsbCloudInfrastructure.Services var credential = new UserCredential(apiCodeFlow, username, tokenResponse); - using var newService = new DriveService(new BaseClientService.Initializer + var newService = new DriveService(new BaseClientService.Initializer { HttpClientInitializer = credential, ApplicationName = applicationName }); - service = newService; + return newService; } public IEnumerable GetAllFiles() { + using var service = GetService(); var fileList = service.Files.List(); fileList.Fields = "files(id, webViewLink, size)"; //fileList.Q =$"mimeType!='application/vnd.google-apps.folder' and '{folder}' in parents"; @@ -74,6 +73,7 @@ namespace AsbCloudInfrastructure.Services public async Task GetFileWebLinkAsync(string idFile, CancellationToken token = default) { + using var service = GetService(); var fileList = service.Files.List(); fileList.Fields = "files(id, webViewLink, size)"; var filesResult = await fileList.ExecuteAsync(token) @@ -84,7 +84,8 @@ namespace AsbCloudInfrastructure.Services public async Task CreateFolderAsync(string folderName, CancellationToken token = default) - { + { + using var service = GetService(); var driveFolder = new Google.Apis.Drive.v3.Data.File(); driveFolder.Name = folderName; driveFolder.MimeType = "application/vnd.google-apps.folder"; @@ -98,6 +99,7 @@ namespace AsbCloudInfrastructure.Services public async Task CreatePublicPermissionForFileAsync(string idFile, CancellationToken token = default) { + using var service = GetService(); var permission = new Permission() { Type = "anyone", Role = "reader"}; var addPermissionRequest = service.Permissions.Create(permission, idFile); await addPermissionRequest.ExecuteAsync(token) @@ -107,6 +109,7 @@ namespace AsbCloudInfrastructure.Services public async Task UploadFileAsync(Stream file, string fileName, string fileMime, string fileDescription, CancellationToken token = default) { + using var service = GetService(); var driveFile = new Google.Apis.Drive.v3.Data.File(); driveFile.Name = fileName; driveFile.Description = fileDescription; @@ -127,6 +130,7 @@ namespace AsbCloudInfrastructure.Services public async Task DeleteFileAsync(string fileId, CancellationToken token = default) { + using var service = GetService(); var command = service.Files.Delete(fileId); var result = await command.ExecuteAsync(token) .ConfigureAwait(false);