forked from ddrilling/AsbCloudServer
CS2-106: Fixed Google drive service disposing
This commit is contained in:
parent
ee1c368f8d
commit
3e00dac818
@ -16,9 +16,7 @@ namespace AsbCloudInfrastructure.Services
|
|||||||
{
|
{
|
||||||
public class GoogleDriveService : IGoogleDriveService
|
public class GoogleDriveService : IGoogleDriveService
|
||||||
{
|
{
|
||||||
private readonly DriveService service;
|
private static DriveService GetService()
|
||||||
|
|
||||||
public GoogleDriveService()
|
|
||||||
{ // ключи для почты asbautodrilling@gmail.com.
|
{ // ключи для почты asbautodrilling@gmail.com.
|
||||||
var tokenResponse = new TokenResponse
|
var tokenResponse = new TokenResponse
|
||||||
{
|
{
|
||||||
@ -42,16 +40,17 @@ namespace AsbCloudInfrastructure.Services
|
|||||||
|
|
||||||
var credential = new UserCredential(apiCodeFlow, username, tokenResponse);
|
var credential = new UserCredential(apiCodeFlow, username, tokenResponse);
|
||||||
|
|
||||||
using var newService = new DriveService(new BaseClientService.Initializer
|
var newService = new DriveService(new BaseClientService.Initializer
|
||||||
{
|
{
|
||||||
HttpClientInitializer = credential,
|
HttpClientInitializer = credential,
|
||||||
ApplicationName = applicationName
|
ApplicationName = applicationName
|
||||||
});
|
});
|
||||||
service = newService;
|
return newService;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<Google.Apis.Drive.v3.Data.File> GetAllFiles()
|
public IEnumerable<Google.Apis.Drive.v3.Data.File> GetAllFiles()
|
||||||
{
|
{
|
||||||
|
using var service = GetService();
|
||||||
var fileList = service.Files.List();
|
var fileList = service.Files.List();
|
||||||
fileList.Fields = "files(id, webViewLink, size)";
|
fileList.Fields = "files(id, webViewLink, size)";
|
||||||
//fileList.Q =$"mimeType!='application/vnd.google-apps.folder' and '{folder}' in parents";
|
//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,
|
public async Task<string> GetFileWebLinkAsync(string idFile,
|
||||||
CancellationToken token = default)
|
CancellationToken token = default)
|
||||||
{
|
{
|
||||||
|
using var service = GetService();
|
||||||
var fileList = service.Files.List();
|
var fileList = service.Files.List();
|
||||||
fileList.Fields = "files(id, webViewLink, size)";
|
fileList.Fields = "files(id, webViewLink, size)";
|
||||||
var filesResult = await fileList.ExecuteAsync(token)
|
var filesResult = await fileList.ExecuteAsync(token)
|
||||||
@ -84,7 +84,8 @@ namespace AsbCloudInfrastructure.Services
|
|||||||
|
|
||||||
public async Task<string> CreateFolderAsync(string folderName,
|
public async Task<string> CreateFolderAsync(string folderName,
|
||||||
CancellationToken token = default)
|
CancellationToken token = default)
|
||||||
{
|
{
|
||||||
|
using var service = GetService();
|
||||||
var driveFolder = new Google.Apis.Drive.v3.Data.File();
|
var driveFolder = new Google.Apis.Drive.v3.Data.File();
|
||||||
driveFolder.Name = folderName;
|
driveFolder.Name = folderName;
|
||||||
driveFolder.MimeType = "application/vnd.google-apps.folder";
|
driveFolder.MimeType = "application/vnd.google-apps.folder";
|
||||||
@ -98,6 +99,7 @@ namespace AsbCloudInfrastructure.Services
|
|||||||
public async Task CreatePublicPermissionForFileAsync(string idFile,
|
public async Task CreatePublicPermissionForFileAsync(string idFile,
|
||||||
CancellationToken token = default)
|
CancellationToken token = default)
|
||||||
{
|
{
|
||||||
|
using var service = GetService();
|
||||||
var permission = new Permission() { Type = "anyone", Role = "reader"};
|
var permission = new Permission() { Type = "anyone", Role = "reader"};
|
||||||
var addPermissionRequest = service.Permissions.Create(permission, idFile);
|
var addPermissionRequest = service.Permissions.Create(permission, idFile);
|
||||||
await addPermissionRequest.ExecuteAsync(token)
|
await addPermissionRequest.ExecuteAsync(token)
|
||||||
@ -107,6 +109,7 @@ namespace AsbCloudInfrastructure.Services
|
|||||||
public async Task<string> UploadFileAsync(Stream file, string fileName, string fileMime,
|
public async Task<string> UploadFileAsync(Stream file, string fileName, string fileMime,
|
||||||
string fileDescription, CancellationToken token = default)
|
string fileDescription, CancellationToken token = default)
|
||||||
{
|
{
|
||||||
|
using var service = GetService();
|
||||||
var driveFile = new Google.Apis.Drive.v3.Data.File();
|
var driveFile = new Google.Apis.Drive.v3.Data.File();
|
||||||
driveFile.Name = fileName;
|
driveFile.Name = fileName;
|
||||||
driveFile.Description = fileDescription;
|
driveFile.Description = fileDescription;
|
||||||
@ -127,6 +130,7 @@ namespace AsbCloudInfrastructure.Services
|
|||||||
public async Task DeleteFileAsync(string fileId,
|
public async Task DeleteFileAsync(string fileId,
|
||||||
CancellationToken token = default)
|
CancellationToken token = default)
|
||||||
{
|
{
|
||||||
|
using var service = GetService();
|
||||||
var command = service.Files.Delete(fileId);
|
var command = service.Files.Delete(fileId);
|
||||||
var result = await command.ExecuteAsync(token)
|
var result = await command.ExecuteAsync(token)
|
||||||
.ConfigureAwait(false);
|
.ConfigureAwait(false);
|
||||||
|
Loading…
Reference in New Issue
Block a user