コード例 #1
0
        public List<string> Invoke(string parentId, List<string> fileIds)
        {
            try
              {
            using (DriveService driveService = DriveService.Create())
            {
              FileInfo parent = driveService.GetFile(parentId);

              if (parent == null)
              {
            throw new Exception("Parent no longer exists.");
              }

              var moveStreams = new List<DriveProxy.API.DriveService.MoveStream>();

              foreach (string fileId in fileIds)
              {
            FileInfo fileInfo = driveService.GetFile(fileId);

            if (fileInfo == null)
            {
              throw new Exception("File no longer exists.");
            }

            var moveStream = new DriveProxy.API.DriveService.MoveStream();

            moveStream.Init(parent.Id, fileInfo);

            moveStreams.Add(moveStream);
              }

              driveService.MoveFiles(moveStreams);

              while (true)
              {
            bool finished = true;

            for (int i = 0; i < moveStreams.Count; i++)
            {
              DriveProxy.API.DriveService.MoveStream moveStream = moveStreams[i];

              if (!moveStream.Finished)
              {
                finished = false;
                break;
              }
            }

            if (finished)
            {
              break;
            }

            System.Threading.Thread.Sleep(250);
              }

              var movedFileIds = new List<string>();

              foreach (DriveService.MoveStream moveStream in moveStreams)
              {
            if (moveStream.Completed)
            {
              movedFileIds.Add(moveStream.FileId);
            }
            else if (moveStream.Cancelled)
            {
            }
            else if (moveStream.Failed)
            {
              throw new LogException("Move could not complete - " + moveStream.ExceptionMessage, true, true);
            }
              }

              return movedFileIds;
            }
              }
              catch (Exception exception)
              {
            Log.Error(exception);

            return null;
              }
        }
コード例 #2
0
        public List <string> Invoke(string parentId, List <string> fileIds)
        {
            try
            {
                using (DriveService driveService = DriveService.Create())
                {
                    FileInfo parent = driveService.GetFile(parentId);

                    if (parent == null)
                    {
                        throw new Exception("Parent no longer exists.");
                    }

                    var moveStreams = new List <DriveProxy.API.DriveService.MoveStream>();

                    foreach (string fileId in fileIds)
                    {
                        FileInfo fileInfo = driveService.GetFile(fileId);

                        if (fileInfo == null)
                        {
                            throw new Exception("File no longer exists.");
                        }

                        var moveStream = new DriveProxy.API.DriveService.MoveStream();

                        moveStream.Init(parent.Id, fileInfo);

                        moveStreams.Add(moveStream);
                    }

                    driveService.MoveFiles(moveStreams);

                    while (true)
                    {
                        bool finished = true;

                        for (int i = 0; i < moveStreams.Count; i++)
                        {
                            DriveProxy.API.DriveService.MoveStream moveStream = moveStreams[i];

                            if (!moveStream.Finished)
                            {
                                finished = false;
                                break;
                            }
                        }

                        if (finished)
                        {
                            break;
                        }

                        System.Threading.Thread.Sleep(250);
                    }

                    var movedFileIds = new List <string>();

                    foreach (DriveService.MoveStream moveStream in moveStreams)
                    {
                        if (moveStream.Completed)
                        {
                            movedFileIds.Add(moveStream.FileId);
                        }
                        else if (moveStream.Cancelled)
                        {
                        }
                        else if (moveStream.Failed)
                        {
                            throw new LogException("Move could not complete - " + moveStream.ExceptionMessage, true, true);
                        }
                    }

                    return(movedFileIds);
                }
            }
            catch (Exception exception)
            {
                Log.Error(exception);

                return(null);
            }
        }