Ejemplo n.º 1
0
 public async Task ListFilesAsync(Containers.Directory directory)
 {
     using (DriveService service = DriveClient.GetInfo())
     {
         try
         {
             FilesResource.ListRequest listRequest = service.Files.List();
             listRequest.Q       = "'" + directory.id + "' in parents and trashed = false";
             listRequest.OrderBy = "name";
             listRequest.Fields  = "nextPageToken, files" +
                                   "(id, name, mimeType, permissions, webContentLink, description, size, shared, owners, parents)";
             Google.Apis.Drive.v3.Data.FileList ListResponse = listRequest.Execute();
             while (ListResponse.Files != null && ListResponse.Files.Count != 0)
             {
                 List <Task> tasks = new List <Task>();
                 foreach (var item in ListResponse.Files)
                 {
                     tasks.Add(Task.Run(() => AddToParentDirectoryObject(item, directory)));
                 }
                 Task.WaitAll(tasks.ToArray());
                 if (ListResponse.NextPageToken == null)
                 {
                     break;
                 }
                 listRequest.PageToken = ListResponse.NextPageToken;
                 ListResponse          = listRequest.Execute();
             }
         }
         catch (Exception e)
         {
             throw new Exception(e.StackTrace);
         }
     }
 }
Ejemplo n.º 2
0
 // Returns the Google Drive provided specific id of the root directory.
 public Containers.Directory GetRoot()
 {
     Containers.Directory root = new Containers.Directory()
     {
         id = "root",
     };
     return(root);
 }
Ejemplo n.º 3
0
 internal Containers.Directory CreateDirectoryObject(Google.Apis.Drive.v3.Data.File item, Containers.Directory parentDirectory)
 {
     Containers.Directory directory = new Containers.Directory()
     {
         id           = item.Id,
         Name         = item.Name,
         Description  = item.Description,
         Size         = item.Size,
         SharedLink   = GetSharedLink(item),
         Owners       = GetOwners(item),
         CreationTime = item.CreatedTime.ToString(),
         Users        = GetUsers(item),
         path         = parentDirectory.path + parentDirectory.Name + "\\",
         mimeType     = "application/folder",
         Parent       = (List <string>)item.Parents,
     };
     return(directory);
 }
Ejemplo n.º 4
0
 // Deserialize transaction file and assign the returned object to global variable CloudItems
 private bool DeserializeTransactioFile()
 {
     try
     {
         DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Containers.Directory));
         lock (thisLock)
         {
             using (FileStream stream = new FileStream(transactionLog.path, FileMode.Open))
             {
                 stream.Position = 0;
                 rootDirectory   = (Containers.Directory)ser.ReadObject(stream);
             }
         }
     }
     catch (Exception e)
     {
         return(false);
     }
     return(true);
 }
Ejemplo n.º 5
0
 public void UploadDirectory(Containers.Directory item)
 {
     try
     {
         using (var service = DriveClient.GetInfo())
         {
             var fileMetadata = new Google.Apis.Drive.v3.Data.File()
             {
                 Name     = item.Name,
                 MimeType = "application/vnd.google-apps.folder",
                 Parents  = item.Parent,
             };
             var request = service.Files.Create(fileMetadata).Execute();
         }
     }
     catch (Exception e)
     {
         throw e;
     }
 }
Ejemplo n.º 6
0
 private async Task CopyFilesFromCloudToLocal(bool resume = false)
 {
     try
     {
         if (resume)
         {
             DeserializeTransactioFile();
             Copy();
         }
         else
         {
             CreateTransactionLogFile();
             fileQueue.Enqueue(rootDirectory);
             Copy();
         }
         fileQueue.Clear();
         rootDirectory = null;
     }
     catch (Exception e)
     {
         throw e;
     }
 }
Ejemplo n.º 7
0
        private async Task GetRootFromSource()
        {
            ListResource files = new ListResource(cloud);

            rootDirectory = await files.GetFiles();
        }
Ejemplo n.º 8
0
 internal void AddToParentDirectoryObject(Google.Apis.Drive.v3.Data.File item, Containers.Directory directory)
 {
     if (isDirectory(item.MimeType))
     {
         if (directory.SubDirectories == null)
         {
             directory.SubDirectories = new List <Containers.Directory>();
         }
         directory.SubDirectories.Add(CreateDirectoryObject(item, directory));
     }
     else
     {
         if (directory.Files == null)
         {
             directory.Files = new List <Containers.File>();
         }
         directory.Files.Add(CreateFileObject(item, directory));
     }
 }
Ejemplo n.º 9
0
 internal Containers.File CreateFileObject(Google.Apis.Drive.v3.Data.File item, Containers.Directory parentDirectory)
 {
     Containers.File file = new Containers.File()
     {
         id           = item.Id,
         Name         = item.Name,
         Description  = item.Description,
         Size         = item.Size,
         SharedLink   = item.WebContentLink,
         Owners       = GetOwners(item),
         CreationTime = item.CreatedTime.ToString(),
         Users        = GetUsers(item),
         path         = parentDirectory.path + parentDirectory.Name + "\\",
         mimeType     = item.MimeType,
         Parent       = (List <string>)item.Parents,
     };
     return(file);
 }