Exemplo n.º 1
0
 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());
 }
Exemplo n.º 2
0
 //--------------------------------------------------------------------------------------------------
 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);
        }
Exemplo n.º 4
0
        /// <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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 7
0
        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);
        }