コード例 #1
0
        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());
        }
コード例 #2
0
        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());
        }
コード例 #3
0
        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);
        }