From 45df5bb0157a46f228e690f06504a11dfb352595 Mon Sep 17 00:00:00 2001 From: cult Date: Wed, 27 Oct 2021 15:00:58 +0500 Subject: [PATCH] CS2-106: Made google drive uploaded files accessible to everyone --- ConsoleApp1/GoogleDriveFilesService.cs | 48 +++++++++++++++++--------- ConsoleApp1/Program.cs | 31 +++++++++++------ 2 files changed, 52 insertions(+), 27 deletions(-) diff --git a/ConsoleApp1/GoogleDriveFilesService.cs b/ConsoleApp1/GoogleDriveFilesService.cs index 25d222f9..5c80c1dd 100644 --- a/ConsoleApp1/GoogleDriveFilesService.cs +++ b/ConsoleApp1/GoogleDriveFilesService.cs @@ -7,13 +7,14 @@ 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 { - private static DriveService GetService() + public DriveService GetService() { // ключи для почты asbautodrilling@gmail.com. var tokenResponse = new TokenResponse { @@ -45,7 +46,6 @@ namespace ConsoleApp1 return service; } - //public string CreateFolder(string parent, string folderName) public string CreateFolder(string folderName) // Это fileName. У гугла почему-то все называется folder: и папка, и файл. { // С parent почему-то не дружит, выкидывает Exception. var service = GetService(); @@ -58,7 +58,6 @@ namespace ConsoleApp1 return file.Id; } - //public string UploadFile(Stream file, string fileName, string fileMime, string folder, string fileDescription) public string UploadFile(Stream file, string fileName, string fileMime, string fileDescription) { DriveService service = GetService(); @@ -79,14 +78,12 @@ namespace ConsoleApp1 return request.ResponseBody.Id; } - //public IEnumerable GetFiles(string folder) - public IEnumerable GetFiles() + public IEnumerable GetAllFiles() { var service = GetService(); var fileList = service.Files.List(); - // Это выражение ниже тоже чот не работает, выкидывает Exception. Без них выгружаются все файлы и - // папки водин список. + 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)"; @@ -103,6 +100,15 @@ namespace ConsoleApp1 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) { @@ -115,16 +121,24 @@ namespace ConsoleApp1 // usage example: -// var service = new GoogleDriveFilesService(); +// var serviceWrapper = new GoogleDriveFilesService(); // -// var files = service.GetFiles(); -// Console.WriteLine(files); -// -// var newFolderId = service.CreateFolder("testText.txt"); -// Console.WriteLine(newFolderId); +// //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/vladimir/TestUploadFile.txt"; +// var path = "/home/cult/First.xlsx"; // var fileInfo = new FileInfo(path); -// var fileStream = File.Open(path, FileMode.Open); -// var uploadedFileId = service.UploadFile(fileStream, fileInfo.Name, "", "uploaded"); -// Console.WriteLine(uploadedFileId); \ No newline at end of file +// 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); \ No newline at end of file diff --git a/ConsoleApp1/Program.cs b/ConsoleApp1/Program.cs index f2d690ff..a55f131e 100644 --- a/ConsoleApp1/Program.cs +++ b/ConsoleApp1/Program.cs @@ -1,5 +1,8 @@ using System; +using System.Collections.Generic; using System.IO; +using System.Linq; +using Google.Apis.Drive.v3.Data; namespace ConsoleApp1 { @@ -12,19 +15,27 @@ namespace ConsoleApp1 { static void Main(/*string[] args*/) { - var service = new GoogleDriveFilesService(); + var serviceWrapper = new GoogleDriveFilesService(); - var files = service.GetFiles(); - Console.WriteLine(files); - - var newFolderId = service.CreateFolder("testText.txt"); - Console.WriteLine(newFolderId); + //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/vladimir/TestUploadFile.txt"; + var path = "/home/cult/First.xlsx"; var fileInfo = new FileInfo(path); - var fileStream = File.Open(path, FileMode.Open); - var uploadedFileId = service.UploadFile(fileStream, fileInfo.Name, "", "uploaded"); - Console.WriteLine(uploadedFileId); + 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); } } }