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