private string CreateFolder(GDriveFile objGDriveFile) { string newFileId = null; Google.Apis.Drive.v3.Data.File newDirectory = null; // Create metaData for a new Directory Google.Apis.Drive.v3.Data.File body = new Google.Apis.Drive.v3.Data.File { Name = objGDriveFile.Title, Description = objGDriveFile.Description, MimeType = objGDriveFile.MimeType, Parents = new List <string>() { objGDriveFile.Parent }, }; using (DriveService service = this.AuthenticateServiceAccount()) { FilesResource.CreateRequest request = service.Files.Create(body); request.Fields = "*"; newDirectory = request.Execute(); newFileId = newDirectory.Id; } return(newFileId); }
public string CreateChildFolderOfRoot(string directoryTitle) { // TODO - think if GDriveFile Model is needed. // Can we just use the "File" class within GDrive API? var objGDriveFile = new GDriveFile { Parent = this._gdriveFactorySettings.RootFolderId, MimeType = GDriveFolderMimeType, Title = directoryTitle, Description = string.Empty, }; return(this.CreateFolder(objGDriveFile)); }
public override void Write(byte[] buffer, int offset, int count) { base.Write(buffer, offset, count); // Someday I will separate it out and make a PR to SharpFileSystem //string directoryID = // db.ExecuteScalar("SELECT fileid FROM gdrive WHERE filename = 'distrodedup' AND directory = 1"); string directoryID = db.ExecuteScalar("SELECT fileid FROM gdrive WHERE filename = @fileName AND directory = @directory", new Dictionary <string, object>() { { "@fileName", "distrodedup" }, { "@directory", 1 } }); if (directoryID == "") { File fileData = new File(); fileData.Name = "DistroDeDup"; fileData.MimeType = "application/vnd.google-apps.folder"; var req = svc.Files.Create(fileData); req.Fields = "id"; var folder = req.Execute(); //db.ExecuteNonQuery( // $"INSERT INTO gdrive (filename, fileid, directory) VALUES ('distrodedup', '{folder.Id}', 1)"); db.ExecuteNonQuery( "INSERT INTO gdrive (filename, fileid, directory) VALUES (@fileName, @fileID, @directory)", new Dictionary <string, object>() { { "@fileName", "distrodedup" }, { "@fileID", folder.Id }, { "@directory", 1 } }); directoryID = folder.Id; } //string fileId = // db.ExecuteScalar($"SELECT fileid FROM gdrive WHERE filename = '{fileName}' AND directory = 0"); string fileId = db.ExecuteScalar("SELECT fileid FROM gdrive WHERE filename = @fileName AND directory = @directory", new Dictionary <string, object>() { { "@fileName", fileName }, { "@directory", 0 } }); if (fileId != "") { FilesResource.ListRequest reqExists = svc.Files.List(); reqExists.Q = String.Format("name = '{0}' and trashed=false and parents in '{1}'", fileName, directoryID); reqExists.Fields = "nextPageToken, files(id, name,parents,mimeType, trashed)"; var result = reqExists.Execute(); bool foundFile = false; foreach (var file in result.Files) { if (file.Id == fileId) { // I guess we need to create another file object? /*File uploadFile = new File(); * uploadFile.Name = fileName; * uploadFile.MimeType = mimeType; * var res = svc.Files.Update(uploadFile, fileId, this, mimeType); * var req = res.Upload();*/ GDriveFile f = new GDriveFile(this, fileName, mimeType, directoryID, db, GDriveFile.Operation.NONE); f.Update(svc, fileId); foundFile = true; break; } } if (!foundFile) { GDriveFile f = new GDriveFile(this, fileName, mimeType, directoryID, db, GDriveFile.Operation.UPDATE); f.Upload(svc); /*File body = new File(); * body.Name = fileName; * body.MimeType = mimeType; * body.Parents = new List<string>(); * body.Parents.Add(directoryID); * FilesResource.CreateMediaUpload req = svc.Files.Create(body, this, mimeType); * req.Fields = "id, parents"; * var res = req.Upload(); * string newFileId = req.ResponseBody.Id; * * //db.ExecuteNonQuery( * // $"UPDATE gdrive set fileid = '{newFileId}' WHERE filename = '{fileName}' and directory = 0"); * * db.ExecuteNonQuery( * "UPDATE gdrive set fileid = @newFileId WHERE filename = @fileName and directory = 0", * new Dictionary<string, object>() * { * {"@newFileId", newFileId}, * {"@fileName", fileName} * });*/ } } else { GDriveFile f = new GDriveFile(this, fileName, mimeType, directoryID, db, GDriveFile.Operation.CREATE); f.Upload(svc); /*File body = new File(); * body.Name = fileName; * body.MimeType = mimeType; * body.Parents = new List<string>(); * body.Parents.Add(directoryID); * FilesResource.CreateMediaUpload req = svc.Files.Create(body, this, mimeType); * req.Fields = "id, parents"; * req.ProgressChanged += ReqOnProgressChanged; * //req.UploadAsync() * var res = req.Upload(); * * string newFileId = req.ResponseBody.Id; * * //db.ExecuteNonQuery( * // $"INSERT INTO gdrive (filename, fileid, directory) VALUES ('{fileName}', '{newFileId}', 0)"); * db.ExecuteNonQuery( * "INSERT INTO gdrive (filename, fileid, directory) VALUES (@fileName, @newFileId, 0)", * new Dictionary<string, object>() * { * {"@fileName", fileName}, * {"@newFileID", newFileId} * });*/ } }