CS2-106: Made google drive uploaded files accessible to everyone

This commit is contained in:
cult 2021-10-27 15:00:58 +05:00
parent 488107a804
commit 45df5bb015
2 changed files with 52 additions and 27 deletions

View File

@ -7,13 +7,14 @@ using Google.Apis.Util.Store;
using Google.Apis.Drive.v3.Data; using Google.Apis.Drive.v3.Data;
using System.IO; using System.IO;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
// usage example at the very bottom // usage example at the very bottom
namespace ConsoleApp1 namespace ConsoleApp1
{ {
public class GoogleDriveFilesService public class GoogleDriveFilesService
{ {
private static DriveService GetService() public DriveService GetService()
{ // ключи для почты asbautodrilling@gmail.com. { // ключи для почты asbautodrilling@gmail.com.
var tokenResponse = new TokenResponse var tokenResponse = new TokenResponse
{ {
@ -45,7 +46,6 @@ namespace ConsoleApp1
return service; return service;
} }
//public string CreateFolder(string parent, string folderName)
public string CreateFolder(string folderName) // Это fileName. У гугла почему-то все называется folder: и папка, и файл. public string CreateFolder(string folderName) // Это fileName. У гугла почему-то все называется folder: и папка, и файл.
{ // С parent почему-то не дружит, выкидывает Exception. { // С parent почему-то не дружит, выкидывает Exception.
var service = GetService(); var service = GetService();
@ -58,7 +58,6 @@ namespace ConsoleApp1
return file.Id; 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) public string UploadFile(Stream file, string fileName, string fileMime, string fileDescription)
{ {
DriveService service = GetService(); DriveService service = GetService();
@ -79,14 +78,12 @@ namespace ConsoleApp1
return request.ResponseBody.Id; return request.ResponseBody.Id;
} }
//public IEnumerable<Google.Apis.Drive.v3.Data.File> GetFiles(string folder) public IEnumerable<Google.Apis.Drive.v3.Data.File> GetAllFiles()
public IEnumerable<Google.Apis.Drive.v3.Data.File> GetFiles()
{ {
var service = GetService(); var service = GetService();
var fileList = service.Files.List(); 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.Q =$"mimeType!='application/vnd.google-apps.folder' and '{folder}' in parents";
//fileList.Fields = "nextPageToken, files(id, name, size, mimeType)"; //fileList.Fields = "nextPageToken, files(id, name, size, mimeType)";
@ -104,6 +101,15 @@ namespace ConsoleApp1
return result; 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) public void DeleteFile(string fileId)
{ {
var service = GetService(); var service = GetService();
@ -115,16 +121,24 @@ namespace ConsoleApp1
// usage example: // usage example:
// var service = new GoogleDriveFilesService(); // var serviceWrapper = new GoogleDriveFilesService();
// //
// var files = service.GetFiles(); // //var files = serviceWrapper.GetAllFiles();
// Console.WriteLine(files); // 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 newFolderId = service.CreateFolder("testText.txt"); // var path = "/home/cult/First.xlsx";
// Console.WriteLine(newFolderId);
//
// var path = "/home/vladimir/TestUploadFile.txt";
// var fileInfo = new FileInfo(path); // var fileInfo = new FileInfo(path);
// var fileStream = File.Open(path, FileMode.Open); // var fileStream = System.IO.File.Open(path, FileMode.Open);
// var uploadedFileId = service.UploadFile(fileStream, fileInfo.Name, "", "uploaded"); // var uploadedFileId = serviceWrapper.UploadFile(fileStream, fileInfo.Name, "", "uploaded");
// Console.WriteLine(uploadedFileId); // 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);

View File

@ -1,5 +1,8 @@
using System; using System;
using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq;
using Google.Apis.Drive.v3.Data;
namespace ConsoleApp1 namespace ConsoleApp1
{ {
@ -12,19 +15,27 @@ namespace ConsoleApp1
{ {
static void Main(/*string[] args*/) static void Main(/*string[] args*/)
{ {
var service = new GoogleDriveFilesService(); var serviceWrapper = new GoogleDriveFilesService();
var files = service.GetFiles(); //var files = serviceWrapper.GetAllFiles();
Console.WriteLine(files); 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 newFolderId = service.CreateFolder("testText.txt"); var path = "/home/cult/First.xlsx";
Console.WriteLine(newFolderId);
var path = "/home/vladimir/TestUploadFile.txt";
var fileInfo = new FileInfo(path); var fileInfo = new FileInfo(path);
var fileStream = File.Open(path, FileMode.Open); var fileStream = System.IO.File.Open(path, FileMode.Open);
var uploadedFileId = service.UploadFile(fileStream, fileInfo.Name, "", "uploaded"); var uploadedFileId = serviceWrapper.UploadFile(fileStream, fileInfo.Name, "", "uploaded");
Console.WriteLine(uploadedFileId); 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);
} }
} }
} }