public async Task <Google.Apis.Drive.v3.Data.File> CreateFolderAsync(string folderName) { Google.Apis.Drive.v3.Data.File file = new Google.Apis.Drive.v3.Data.File(); file.Name = folderName; file.MimeType = "application/vnd.google-apps.folder"; FilesResource.CreateRequest request = _service.Files.Create(file); request.Fields = "id"; return(await request.ExecuteAsync()); }
//-------------------------------------------------------------------------------------------------- public static async Task <Google.Apis.Drive.v3.Data.File> CreateFolderAsync(string folderName, string parentFolderId, string hexFolderColor = "#000000") { Google.Apis.Drive.v3.Data.File fileMetadata = new Google.Apis.Drive.v3.Data.File() { Name = folderName, MimeType = "application/vnd.google-apps.folder", Parents = new List <string> { parentFolderId }, FolderColorRgb = hexFolderColor }; FilesResource.CreateRequest request = Service.Files.Create(fileMetadata); request.Fields = "id"; return(await request.ExecuteAsync()); }
public static async Task <File> FetchGoogleFile(string fileName) { File f = null; FilesResource resource = _service.Files; FileList files = null; try { FilesResource.ListRequest req = resource.List(); req.Q = $"name='{_filePrefix + fileName}'"; files = await req.ExecuteAsync(); } catch (Exception) { return(null); } if (files == null) { return(null); } if (files.Files.Count <= 0) { f = new File(); f.Name = _filePrefix + fileName; f.MimeType = "application/json"; try { FilesResource.CreateRequest create = resource.Create(f); await create.ExecuteAsync(); } catch (Exception) { } } else { f = files.Files[0]; } await DownloadGoogleFile(f, fileName); return(f); }
/// <summary> /// Create a file in the appDataFolder. /// </summary> /// <param name="name">The name of the new file</param> /// <returns>The ID of the new file</returns> public async Task <string> CreateFileAsync(string name) { List <string> parents = new List <string>(); parents.Add("appDataFolder"); var file = new Google.Apis.Drive.v3.Data.File() { Name = name, Parents = parents }; FilesResource.CreateRequest createRequest = service.Files.Create(file); createRequest.Fields = "id"; var responseFile = await createRequest.ExecuteAsync(); return(responseFile.Id); }
private TryAsync <string> CreateNewFolder(string folderName, string parentFolderId, List <DriveFile> folders) { if (folders.Any(f => f.Name.ToLower() == folderName.ToLower())) { return(TryAsync(() => Task.Run(() => folders.First(f => f.Name.ToLower() == folderName.ToLower()).Id))); } DriveFile newFolder = new() { Name = folderName, MimeType = "application/vnd.google-apps.folder", Parents = new[] { parentFolderId } }; FilesResource.CreateRequest command = _service.Files.Create(newFolder); return(TryAsync(async() => { DriveFile folder = await command.ExecuteAsync(); return folder.Id; })); }
private async Task <string> CreateTaskerDriveDirectory(DriveService service) { mLogger.LogInformation($"Drive directory {mTaskerDriveDirectory} not found, creating.."); GoogleData.File directory = new GoogleData.File() { Name = mTaskerDriveDirectory, MimeType = FolderMimeType, }; FilesResource.CreateRequest createRequest = service.Files.Create(directory); createRequest.Fields = "id"; GoogleData.File resultDirectory = await createRequest.ExecuteAsync().ConfigureAwait(false); mLogger.LogInformation($"Done creating drive directory {mTaskerDriveDirectory}"); return(resultDirectory.Id); }
private async Task <string> GetOrCreateRootFolderIdAsync() { _logger.LogInformation($"Access app root '{_config.RootFolderName}' in '{_config.StorageRoot}'"); var isTeamDrive = false; var pathItems = _config.StorageRoot.Split(new[] { '\\', '/' }, StringSplitOptions.RemoveEmptyEntries); if (pathItems[0].ToLower() != "root") { isTeamDrive = true; var tdReq = new TeamdrivesResource.ListRequest(_driveService) { Fields = "teamDrives(id,name)", QuotaUser = QuotaUser }; var tds = await tdReq.ExecuteAsync(); var td = tds.TeamDrives.FirstOrDefault(x => x.Name == pathItems[0]); if (td == null) { throw new ApplicationException($"TeamDrive '{pathItems[0]}' not found"); } pathItems[0] = td.Id; _logger.LogInformation($"TeamDrive id: {pathItems[0]}"); } //todo: add nested path parsing var baseRoot = pathItems[0]; var rootFolder = await GetFilesAsync(x => x.Name == _config.RootFolderName && x.Parents.Contains(baseRoot)); if (rootFolder.Count(x => x.IsDirectory) > 1) { throw new InvalidOperationException($"More than one {_config.RootFolderName} folders exists in the drive root."); } var rootId = rootFolder.FirstOrDefault(x => x.IsDirectory)?.Id; if (!rootFolder.Any(x => x.IsDirectory)) { var file = new File { Name = _config.RootFolderName, MimeType = GoogleDriveFolderMime, Parents = new List <string> { baseRoot } }; var createRequest = new FilesResource.CreateRequest(_driveService, file) { QuotaUser = QuotaUser, SupportsTeamDrives = _config.SupportsTeamDrives }; rootId = (await createRequest.ExecuteAsync()).Id; _logger.LogInformation($"New app root {_config.RootFolderName} created in '{_config.StorageRoot}'"); } _logger.LogInformation($"Root Id : {rootId}"); if (!isTeamDrive) { await ShareWithAccountsAsync(rootId, _config.ShareWithAccount); } return(rootId); }