CS2-106: Fixed Google drive service disposing

This commit is contained in:
cult 2021-10-29 14:40:15 +05:00
parent ee1c368f8d
commit 3e00dac818

View File

@ -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<Google.Apis.Drive.v3.Data.File> 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<string> 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<string> 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<string> 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);