async Task <mediaItemsCreateResponse?> _UploadMultiple(string[] filePaths, string?albumId = null, GooglePhotosUploadMethod uploadMethod = GooglePhotosUploadMethod.ResumableMultipart)
        {
            var uploadItems = new List <UploadItem>(filePaths.Length);

            foreach (var filePath in filePaths)
            {
                var uploadToken = await UploadMediaAsync(filePath, uploadMethod);

                if (!string.IsNullOrWhiteSpace(uploadToken))
                {
                    uploadItems.Add(new UploadItem(uploadToken !, filePath));
                }
                //todo: raise photo uploaded event here
            }
            return(await AddMediaItemsAsync(uploadItems, albumId));
        }
 public Task <mediaItemsCreateResponse?> UploadMultiple(string[] filePaths, string?albumId = null, GooglePhotosUploadMethod uploadMethod = GooglePhotosUploadMethod.ResumableMultipart)
 => _UploadMultiple(filePaths, albumId, uploadMethod);
        public Task <mediaItemsCreateResponse?> UploadMultiple(string folderPath, string?searchPattern = null, string?albumId = null, GooglePhotosUploadMethod uploadMethod = GooglePhotosUploadMethod.ResumableMultipart)
        {
            var filePaths = Directory.GetFiles(folderPath, searchPattern);

            return(_UploadMultiple(filePaths, albumId, uploadMethod));
        }
        public async Task <NewMediaItemResult?> UploadSingle(string path, string?albumId = null, string?description = null, GooglePhotosUploadMethod uploadMethod = GooglePhotosUploadMethod.ResumableMultipart)
        {
            var uploadToken = await UploadMediaAsync(path, uploadMethod);

            if (!string.IsNullOrWhiteSpace(uploadToken))
            {
                return(await AddMediaItemAsync(uploadToken !, path, description, albumId));
            }
            return(null);
        }