private void UpdateFileList() { var onServiceCreatedTask = Task.Run(() => { files = OldOwnerGoogleService.GetOwnedFiles().OrderBy(file => file.MimeType).ThenBy(file => file.Name).ToArray(); var userInfo = OldOwnerGoogleService.GetUserInfo(); return(userInfo); }); onServiceCreatedTask.ContinueWith(t => { var userInfo = t.Result; OldOnerNameLabel.Text = userInfo.Name + " (" + userInfo.EmailAddress + ")"; //pictureBox1.Load(userInfo.PhotoLink.AbsoluteUri); textBox1.Text = ""; var sb = new StringBuilder(); sb.AppendLine($"Мои файлы и папки ({files.Count} шт.): "); foreach (var file in files) { var prefix = file.MimeType == "application/vnd.google-apps.folder" ? "[Папка]: " : string.Empty; sb.AppendLine($"{prefix}{file.Name}"); } textBox1.Text = sb.ToString(); }, CancellationToken.None, TaskContinuationOptions.OnlyOnRanToCompletion, TaskScheduler.FromCurrentSynchronizationContext()); }
private void button1_Click(object sender, EventArgs e) { var authTask = NewOwnerAuthService.Authorize(); var contTask = authTask.ContinueWith(t => { var service = new DriveService(new BaseClientService.Initializer() { HttpClientInitializer = t.Result, ApplicationName = ApplicationName, }); _logger.LogMessage("Создан сервис Гугла для обработки запросов"); NewOwnerGoogleService = new GoogleService(service, _expBackoffPolicy, _logger); var userInfo = NewOwnerGoogleService.GetUserInfo(); label1.Text = userInfo.Name + " (" + userInfo.EmailAddress + ")"; // pictureBox2.Load(userInfo.PhotoLink.AbsoluteUri); }, CancellationToken.None, TaskContinuationOptions.OnlyOnRanToCompletion, TaskScheduler.FromCurrentSynchronizationContext()); contTask.ContinueWith(t => { var message = Helpers.GetFullMessage(t.Exception); _logger.LogMessage(message); MessageBox.Show(message); }, CancellationToken.None, TaskContinuationOptions.OnlyOnFaulted, TaskScheduler.FromCurrentSynchronizationContext()); }
private void TransferOwnershipTo(IReadOnlyList <FileDTO> googleFiles, IGoogleService newOwnerGoogleService, Action <FileDTO> callback) { var newOwner = newOwnerGoogleService.GetUserInfo(); var commandsDto = googleFiles .Select(file => { var command = _driveService.Permissions.Create(new Google.Apis.Drive.v3.Data.Permission { Role = "owner", Type = "user", EmailAddress = newOwner.EmailAddress }, file.Id); command.TransferOwnership = true; command.EmailMessage = "Автоматический перенос."; return(new { command, file }); }) .ToArray(); _logger.LogMessage("Запускаем функцию переноса гугл-документов в пакетном режиме."); WrapBatchOperation(commandsDto, commandDto => commandDto.command, (index) => callback(googleFiles[index])); // removing edit permissions _logger.LogMessage("Останавливаем поток на 2 секунды, чтобы все данные сохранились в сервисах Google Drive"); Thread.Sleep(2000); newOwnerGoogleService.DeleteOwnershipPermission(googleFiles); // correct dirs chain _logger.LogMessage("Останавливаем поток на 2 секунды, чтобы все данные сохранились в сервисах Google Drive"); Thread.Sleep(2000); newOwnerGoogleService.RecoverParents(googleFiles); }