DD.WellWorkover.Cloud/ConsoleApp1/GoogleDriveFilesService.cs

144 lines
5.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Google.Apis.Auth.OAuth2;
using Google.Apis.Auth.OAuth2.Flows;
using Google.Apis.Auth.OAuth2.Responses;
using Google.Apis.Drive.v3;
using Google.Apis.Services;
using Google.Apis.Util.Store;
using Google.Apis.Drive.v3.Data;
using System.IO;
using System.Collections.Generic;
using System.Linq;
// usage example at the very bottom
namespace ConsoleApp1
{
public class GoogleDriveFilesService
{
public DriveService GetService()
{ // ключи для почты asbautodrilling@gmail.com.
var tokenResponse = new TokenResponse
{
AccessToken = "ya29.a0ARrdaM-lM7q0TIC_DXixR4oW63QUftjSPHl-8nIdvZwtqA8Z1bXtlYpDrQXj9UFTjW8FW8uqPMrdamUSp4kO4a9JX7FddkBWxaJ_omSJpqzDfnHTHA_7-zGMUohaAsmPLsQtFz_GUmB5ZoVLmA8xWdbJxVxU",
RefreshToken = "1//04FeDguc19IfgCgYIARAAGAQSNwF-L9Ir8U7wX2seanUzsxXXGgFzOYQqjbtN9O27ZZybbOobZjVAo_4_eFNLMX1ElPKOFVWsrJQ"
};
var applicationName = "Files"; // Use the name of the project in Google Cloud
var username = "asbautodrilling@gmail.com"; // Use your email
var apiCodeFlow = new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer
{
ClientSecrets = new ClientSecrets
{
ClientId = "1020584579240-f7amqg35qg7j94ta1ntgitajq27cgh49.apps.googleusercontent.com",
ClientSecret = "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"
},
Scopes = new[] {DriveService.Scope.Drive},
DataStore = new FileDataStore(applicationName)
});
var credential = new UserCredential(apiCodeFlow, username, tokenResponse);
var service = new DriveService(new BaseClientService.Initializer
{
HttpClientInitializer = credential,
ApplicationName = applicationName
});
return service;
}
public string CreateFolder(string folderName) // Это fileName. У гугла почему-то все называется folder: и папка, и файл.
{ // С parent почему-то не дружит, выкидывает Exception.
var service = GetService();
var driveFolder = new Google.Apis.Drive.v3.Data.File();
driveFolder.Name = folderName;
driveFolder.MimeType = "application/vnd.google-apps.folder";
//driveFolder.Parents = new string[] { parent };
var command = service.Files.Create(driveFolder);
var file = command.Execute();
return file.Id;
}
public string UploadFile(Stream file, string fileName, string fileMime, string fileDescription)
{
DriveService service = GetService();
var driveFile = new Google.Apis.Drive.v3.Data.File();
driveFile.Name = fileName;
driveFile.Description = fileDescription;
driveFile.MimeType = fileMime;
//driveFile.Parents = new [] {folder};
var request = service.Files.Create(driveFile, file, fileMime);
request.Fields = "id";
var response = request.Upload();
if (response.Status != Google.Apis.Upload.UploadStatus.Completed)
throw response.Exception;
return request.ResponseBody.Id;
}
public IEnumerable<Google.Apis.Drive.v3.Data.File> GetAllFiles()
{
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";
//fileList.Fields = "nextPageToken, files(id, name, size, mimeType)";
var result = new List<Google.Apis.Drive.v3.Data.File>();
string pageToken = null;
do
{
fileList.PageToken = pageToken;
var filesResult = fileList.Execute();
var files = filesResult.Files;
pageToken = filesResult.NextPageToken;
result.AddRange(files);
} while (pageToken != null);
return result;
}
public Google.Apis.Drive.v3.Data.File GetFileById(string idFile)
{
var service = GetService();
var fileList = service.Files.List();
fileList.Fields = "files(id, webViewLink, size)";
var filesResult = fileList.Execute();
return filesResult.Files.FirstOrDefault(f => f.Id == idFile);
}
public void DeleteFile(string fileId)
{
var service = GetService();
var command = service.Files.Delete(fileId);
var result = command.Execute();
}
}
}
// usage example:
// var serviceWrapper = new GoogleDriveFilesService();
//
// //var files = serviceWrapper.GetAllFiles();
// var service = serviceWrapper.GetService();
// // foreach (var file in files)
// // {
// // var permission = new Permission() { Type = "anyone", Role = "reader"};
// // var createRequest = service.Permissions.Create(permission, file.Id);
// // createRequest.Execute();
// // Console.WriteLine(file.WebViewLink);
// // }
//
// var path = "/home/cult/First.xlsx";
// var fileInfo = new FileInfo(path);
// var fileStream = System.IO.File.Open(path, FileMode.Open);
// var uploadedFileId = serviceWrapper.UploadFile(fileStream, fileInfo.Name, "", "uploaded");
// var permission = new Permission() { Type = "anyone", Role = "reader"};
// var addPermissionRequest = service.Permissions.Create(permission, uploadedFileId);
// addPermissionRequest.Execute();
// var file = serviceWrapper.GetFileById(uploadedFileId);
// Console.WriteLine(file.WebViewLink);