private void btnRevertSelected_Click(object sender, EventArgs e) { foreach (Object item in lstResults.SelectedItems) { RestoreFileItem file = (RestoreFileItem)item; Console.WriteLine("Starting restore of... " + file.current_name); // Do restore string fileCachePath = downloadPath + "\\cache\\" + file.fileId + ".bin"; Google.Apis.Drive.v3.Data.File f = service.Files.Get(file.fileId).Execute(); //Download Revision MemoryStream stream = new MemoryStream(); RevisionsResource.GetRequest dlRevision = new RevisionsResource.GetRequest(service, file.fileId, file.previous_revisionId); dlRevision.Download(stream); //service.Files.Get(revision.Id).Download(stream); System.IO.File.WriteAllBytes(fileCachePath, stream.ToArray()); //Replace revision //System.IO.FileStream fs = new FileStream(downloadPath + "\\download\\"+ revision.OriginalFilename, FileMode.Open); FilesResource.UpdateMediaUpload fUpload = service.Files.Update(f, file.fileId, stream, file.current_mimeType); f.Name = file.previous_name; f.Id = null; fUpload.Fields = "name"; var uploadStatus = fUpload.Upload(); if (uploadStatus.Exception != null) { MessageBox.Show("Error Uploading File!"); } } }
static void Main(string[] args) { UserCredential credential; using (FileStream stream = new FileStream("credentials.json", FileMode.Open, FileAccess.Read)) { // The file token.json stores the user's access and refresh tokens, and is created // automatically when the authorization flow completes for the first time. string credPath = "token.json"; credential = GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.Load(stream).Secrets, Scopes, "user", CancellationToken.None, new FileDataStore(credPath, true)).Result; Console.WriteLine("Credential file saved to: " + credPath); } // Create Drive API service. DriveService service = new DriveService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = ApplicationName, }); string sFileID = "1R9wI7T2s7V5vz749x8KwyqQIGvJnpLpOkyzzjzjQeww"; int iPageSize = 1000; string sFields = "*"; FilesResource.GetRequest fFileReq = service.Files.Get(sFileID); fFileReq.Fields = "*"; GFile gfResult = fFileReq.Execute(); if (gfResult.Capabilities.CanReadRevisions == false) { gfResult.Capabilities.CanReadRevisions = true; } // 1_QfxWkF_NdvWPZALZONKzyzmHLkw71PkoCXfkFEtgqo - 1ATeam // 11W9OPD5ABoOa7ODHSmoWHxVCVNHyfWc14Qxk4gaeO5o - NotAdminLogins List <Revision> lAllrevisions = new List <Revision>(); RevisionList rlResult = null; //var Result = GetRevisionsAsync(rlResult, service, sFileID, iPageSize, sFields, lAllrevisions); //rlResult = Result.Result.Item1; //lAllrevisions = Result.Result.Item2; var Result = GetRevisionsSync(rlResult, service, sFileID, iPageSize, sFields, lAllrevisions); rlResult = Result.Item1; lAllrevisions = Result.Item2; Console.WriteLine("Revisions:\n"); int iCounter = 0; if (lAllrevisions != null && lAllrevisions.Count > 0) { foreach (var rev in lAllrevisions) { Console.WriteLine("{0} {1} {2} {3}", iCounter++, rev.Id, rev.ModifiedTime, rev.LastModifyingUser.DisplayName); } } Console.Read(); Console.WriteLine("Paste Revision ID that You want to download: "); string sRevID = Console.ReadLine(); RevisionsResource.GetRequest gRevisionReq = service.Revisions.Get(sFileID, sRevID); gRevisionReq.Alt = DriveBaseServiceRequest <Revision> .AltEnum.Json; }
//ORIGINAL CODE FROM TESTING DO NOT EDIT private void consoleRun() { UserCredential credential; downloadPath = System.Environment.CurrentDirectory; using (var stream = new FileStream("client_secret.json", FileMode.Open, FileAccess.Read)) { string credPath = System.Environment.CurrentDirectory; credPath = Path.Combine(credPath, ".credentials/drive-dotnet-quickstart.json"); credential = GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.Load(stream).Secrets, Scopes, "user", CancellationToken.None, new FileDataStore(credPath, true)).Result; Console.WriteLine("Credential file saved to: " + credPath); } // Create Drive API service. var service = new DriveService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = ApplicationName, }); // Define parameters of request. FilesResource.ListRequest listRequest = service.Files.List(); listRequest.PageSize = 100; listRequest.Fields = "nextPageToken, files(id, name, modifiedTime, mimeType)"; // List files. IList <Google.Apis.Drive.v3.Data.File> files = listRequest.Execute() .Files; Console.WriteLine("Files:"); if (files != null && files.Count > 0) { foreach (var file in files) { if (file.Name != "Sample document RANSOM.txt") { continue; } Console.WriteLine("{0} - {1} ({2})", file.ModifiedTime, file.Name, file.Id); RevisionsResource.ListRequest revisionListRequest = service.Revisions.List(file.Id); revisionListRequest.PageSize = 100; revisionListRequest.Fields = "kind, revisions(id, modifiedTime, originalFilename, md5Checksum)"; IList <Google.Apis.Drive.v3.Data.Revision> revisions = revisionListRequest.Execute().Revisions; if (revisions != null && revisions.Count > 0) { foreach (var revision in revisions) { Console.WriteLine("{0} - {1} ({2})", revision.ModifiedTime, revision.OriginalFilename, revision.Id); //Replace original file //Rename Google.Apis.Drive.v3.Data.File f = service.Files.Get(file.Id).Execute(); /*FilesResource.UpdateRequest fUpdate = new FilesResource.UpdateRequest(service, f, file.Id); * fUpdate.*/ //Download Revision MemoryStream stream = new MemoryStream(); RevisionsResource.GetRequest dlRevision = new RevisionsResource.GetRequest(service, file.Id, revision.Id); dlRevision.Download(stream); //service.Files.Get(revision.Id).Download(stream); //Replace revision //System.IO.FileStream fs = new FileStream(downloadPath + "\\download\\"+ revision.OriginalFilename, FileMode.Open); FilesResource.UpdateMediaUpload fUpload = service.Files.Update(f, file.Id, stream, f.MimeType); f.Name = revision.OriginalFilename; f.Id = null; fUpload.Fields = "name"; var uploadStatus = fUpload.Upload(); //Console.WriteLine(fUpload.ResponseBody.ToString()); //fs.Close(); break; //Download Revision /*System.IO.FileStream fs = new FileStream(downloadPath + "\\download\\"+ revision.OriginalFilename, FileMode.Create); * RevisionsResource.GetRequest dlRevision = new RevisionsResource.GetRequest(service, file.Id, revision.Id); * dlRevision.Download(fs); * service.Files.Get(revision.Id).Download(fs); * fs.Flush(); * fs.Close(); * break;*/ } } } } else { Console.WriteLine("No files found."); } Console.Read(); }