예제 #1
0
        //Imprime los id de los archivos en la nube
        public static void PrintFilesInFolder(DriveService service, String folderId)
        {
            ChildrenResource.ListRequest request = service.Children.List(folderId);


            do
            {
                try
                {
                    ChildList children = request.Execute();


                    foreach (ChildReference child in children.Items)
                    {
                        string prueba = ("File Id: " + child.Id);
                    }


                    request.PageToken = children.NextPageToken;
                }
                catch (Exception e)
                {
                    Console.WriteLine("An error occurred: " + e.Message);
                    request.PageToken = null;
                }
            } while (!String.IsNullOrEmpty(request.PageToken));

            Console.Read();
        }
예제 #2
0
        // Get files from the specified drive folder.
        private void GetFilesFromDriveMethod()
        {
            // Request all the children of the specified folder.
            ChildrenResource.ListRequest listRequest = DriveService.Children.List(DriveFolderId);

            do
            {
                try
                {
                    // Execute the child list request.
                    ChildList children = listRequest.Execute();

                    foreach (ChildReference child in children.Items)
                    {
                        driveFileVMs.Add(new DriveFileVM(child, DriveService));
                    }

                    // set the token for the next page of the request.
                    listRequest.PageToken = children.NextPageToken;
                }
                catch (Exception ex)
                {
                    listRequest.PageToken = null;
                }
            } while (!String.IsNullOrEmpty(listRequest.PageToken));
        }
예제 #3
0
        public string  getchildInFolder(DriveService service, String folderId)
        {
            ChildrenResource.ListRequest request = service.Children.List(folderId);
            string file_id = "";

            do
            {
                try
                {
                    ChildList children = request.Execute();

                    foreach (ChildReference child in children.Items)
                    {
                        Google.Apis.Drive.v2.Data.File file1 = service.Files.Get(child.Id).Execute();
                        if (file1.Title.StartsWith("Build Plan"))
                        {
                            ListViewItem item = new ListViewItem(new string[2] {
                                file1.Title, child.Id
                            });
                            //  googleshareDoc = file1.Title;
                            this.spreadsheetListView.Items.Add(item);
                        }
                    }
                    request.PageToken = children.NextPageToken;
                }
                catch (Exception e)
                {
                    Console.WriteLine("An error occurred: " + e.Message);
                    request.PageToken = null;
                }
            } while (!String.IsNullOrEmpty(request.PageToken));

            return(file_id);
        }
예제 #4
0
        public static List <GoogleDriveFiles> GetContainsInFolder(String folderId)
        {
            List <string> ChildList = new List <string>();

            Google.Apis.Drive.v2.DriveService ServiceV2          = GetService_v2();
            ChildrenResource.ListRequest      ChildrenIDsRequest = ServiceV2.Children.List(folderId);
            do
            {
                ChildList children = ChildrenIDsRequest.Execute();

                if (children.Items != null && children.Items.Count > 0)
                {
                    foreach (var file in children.Items)
                    {
                        ChildList.Add(file.Id);
                    }
                }
                ChildrenIDsRequest.PageToken = children.NextPageToken;
            } while (!String.IsNullOrEmpty(ChildrenIDsRequest.PageToken));

            //Get All File List
            List <GoogleDriveFiles> AllFileList     = GetDriveFiles();
            List <GoogleDriveFiles> Filter_FileList = new List <GoogleDriveFiles>();

            foreach (string Id in ChildList)
            {
                Filter_FileList.Add(AllFileList.Where(x => x.Id == Id).FirstOrDefault());
            }
            return(Filter_FileList);
        }
예제 #5
0
        public static List <string> AllChildsInFolder(string folderId, DriveService service)
        {
            ChildrenResource.ListRequest request = service.Children.List(folderId);

            List <string> childIds = new List <string>();

            do
            {
                try
                {
                    ChildList children = request.Execute();

                    foreach (ChildReference child in children.Items)
                    {
                        var getRequest = service.Files.Get(child.Id);
                        getRequest.Fields = "mimeType , id, labels";
                        var    childInfo = getRequest.Execute();
                        string mimetype  = childInfo.MimeType;
                        bool   isTrashed = (bool)childInfo.Labels.Trashed;
                        if (mimetype != "application/vnd.google-apps.folder" && !isTrashed)
                        {
                            childIds.Add(child.Id);
                        }
                    }
                    request.PageToken = children.NextPageToken;
                }
                catch (Exception e)
                {
                    Console.WriteLine("An error occurred: " + e.Message);
                    request.PageToken = null;
                }
            } while (!String.IsNullOrEmpty(request.PageToken));

            return(childIds);
        }
예제 #6
0
        public static int NumChildsInFolder(string folderId, DriveService service)
        {
            ChildrenResource.ListRequest request = service.Children.List(folderId);
            request.Fields = "items(id)";
            request.Q      = "mimeType != 'application/vnd.google-apps.folder' and trashed = false";

            int totalChildren = 0;

            do
            {
                try
                {
                    ChildList children = request.Execute();

                    totalChildren += children.Items.Count;

                    request.PageToken = children.NextPageToken;
                }
                catch (Exception e)
                {
                    Console.WriteLine("An error occurred: " + e.Message);
                    request.PageToken = null;
                }
            } while (!String.IsNullOrEmpty(request.PageToken));

            return(totalChildren);
        }
예제 #7
0
        public static IList <File> GetFoldersByIdParentFolder(DriveService service, string idParentFolder)
        {
            IList <File> folders = new List <File>();

            try
            {
                ChildrenResource.ListRequest list = service.Children.List(idParentFolder);

                list.Q = "mimeType = 'application/vnd.google-apps.folder' and trashed=false";

                do
                {
                    try
                    {
                        ChildList children = list.Execute();

                        foreach (ChildReference child in children.Items)
                        {
                            folders.Add(GetFileById(service, child.Id));
                        }
                        list.PageToken = children.NextPageToken;
                    }
                    catch (Exception ex)
                    {
                        throw new Exception(ex.Message);
                    }
                } while (!string.IsNullOrEmpty(list.PageToken));
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }

            return(folders);
        }
예제 #8
0
        public static List <File> ListFolderContent(DriveService service, string idFolder)
        {
            ChildrenResource.ListRequest request = service.Children.List(idFolder);
            List <File> files = new List <File>();

            request.Q = string.Format("'{0}' in parents", idFolder);

            do
            {
                try
                {
                    ChildList children = request.Execute();

                    foreach (ChildReference child in children.Items)
                    {
                        files.Add(GetFileById(service, child.Id));
                    }

                    request.PageToken = children.NextPageToken;
                }
                catch
                {
                    request.PageToken = null;
                }
            } while (!string.IsNullOrEmpty(request.PageToken));
            return(files);
        }
예제 #9
0
        public static string GetFolderID(DriveService service, String parentfolderId, string FolderName)
        {
            ChildrenResource.ListRequest request = service.Children.List(parentfolderId);
            request.Q = "mimeType='application/vnd.google-apps.folder' and title='" + FolderName + "' ";
            do
            {
                try
                {
                    ChildList children = request.Execute();

                    if (children != null && children.Items.Count > 0)
                    {
                        return(children.Items[0].Id);
                    }

                    foreach (ChildReference child in children.Items)
                    {
                        Console.WriteLine("File Id: " + child.Id);
                    }
                    request.PageToken = children.NextPageToken;
                }
                catch (Exception e)
                {
                    Console.WriteLine("An error occurred: " + e.Message);
                    request.PageToken = null;
                }
            } while (!String.IsNullOrEmpty(request.PageToken));

            return(string.Empty);
        }
예제 #10
0
        private static void GoogleDir(DriveService service, string folderId, string path)
        {
            try
            {
                ChildrenResource.ListRequest request = service.Children.List(folderId);
                request.MaxResults = 1000;

                do
                {
                    ChildList children = request.Execute();

                    foreach (ChildReference child in children.Items)
                    {
                        File file = service.Files.Get(child.Id).Execute();
                        if (file.MimeType == "application/vnd.google-apps.folder")
                        {
                            GoogleDir(service, file.Id, @"\" + path + @"\" + file.Title);
                        }
                        else
                        {
                        }

                        Console.WriteLine("Title: " + file.Title);

                        Console.WriteLine("MIME type: " + file.MimeType);
                        Console.WriteLine();
                    }
                    request.PageToken = children.NextPageToken;
                } while (!String.IsNullOrEmpty(request.PageToken));
            }
            catch (Exception)
            {
                throw;
            }
        }
예제 #11
0
        public static File getfolderid(string foldername)
        {
            ChildrenResource.ListRequest request = service.Children.List("root");
            do
            {
                try
                {
                    ChildList children = request.Fetch();

                    foreach (ChildReference child in children.Items)
                    {
                        //Console.WriteLine("File Id: " + child.Kind+child.SelfLink);
                        var file = service.Files.Get(child.Id).Fetch();

                        if (file.MimeType == mimetype.folder && file.Title == foldername && file.ExplicitlyTrashed != true)
                        {
                            return(file);
                        }
                    }
                    request.PageToken = children.NextPageToken;
                }
                catch (Exception e)
                {
                    Console.WriteLine("An error occurred: " + e.Message);
                    request.PageToken = null;
                    return(null);
                }
            } while (!String.IsNullOrEmpty(request.PageToken));

            return(null);
        }
예제 #12
0
        static void DriveDirectory(DriveService service, string folderId, string path)
        {
            ChildrenResource.ListRequest request = service.Children.List(folderId);
            request.MaxResults = 1000;

            File file = null;

            do
            {
                try
                {
                    ChildList children = request.Execute();

                    foreach (ChildReference child in children.Items)
                    {
                        file = service.Files.Get(child.Id).Execute();

                        if (file.MimeType == "application/vnd.google-apps.folder")
                        {
                            dirPath += file.Title + @"\";
                            DriveDirectory(service, file.Id, dirPath);
                            dirPath = dirPath.Substring(0, dirPath.Length - (file.Title.Length + 1));
                        }
                        else
                        {
                            //Console.WriteLine(file.Title);
                            Console.WriteLine(@"{0}{1}", path, file.Title);


                            mysql.Open();
                            command = mysql.CreateCommand();
                            if (numberTable == 1)
                            {
                                command.CommandText = "INSERT INTO games_edit(name, size, hash, fileid, url) VALUES(@name, @size, @hash, @fileid, @url)";
                            }
                            else
                            {
                                command.CommandText = "INSERT INTO mods_edit(name, size, hash, fileid, url) VALUES(@name, @size, @hash, @fileid, @url)";
                            }
                            command.Parameters.AddWithValue("@name", path + file.Title);
                            command.Parameters.AddWithValue("@size", file.FileSize);
                            command.Parameters.AddWithValue("@hash", file.Md5Checksum);
                            command.Parameters.AddWithValue("@fileid", file.Id);
                            command.Parameters.AddWithValue("@url", file.DownloadUrl);
                            command.ExecuteNonQuery();
                            mysql.Close();
                        }
                    }
                    request.PageToken = children.NextPageToken;
                }
                catch (Exception e)
                {
                    Console.WriteLine("ERROR: Doslo je do greske sljedece oznake,\n" + e.Message);
                    request.PageToken = null;
                    Console.ReadKey();
                }
            } while (!String.IsNullOrEmpty(request.PageToken));
        }
        /// <summary>
        /// thread to dowload temp files
        /// </summary>
        /// <param name="service"></param>
        /// <param name="parentId"></param>
        private static void DownloadTempFiles(DriveService service, string parentId)
        {
            while (true)
            {
                ChildrenResource.ListRequest request = service.Children.List(parentId);
                File file = null;
                do
                {
                    try
                    {
                        ChildList children = request.Fetch();

                        foreach (ChildReference child in children.Items)
                        {
                            //Console.WriteLine("File Id: " + child.Id);
                            file = service.Files.Get(child.Id).Fetch();
                            string title = file.Title.Replace(":", "_");
                            string id    = file.Description.Split(' ')[1];
                            if (XmlDataLayer.CheckIfTempExists(title) == true || XmlDataLayer.GetDownloadEntry(title) == true || id == XmlDataLayer.GetConfigEntry("pc_id"))
                            {
                                continue;
                            }
                            try
                            {
                                System.IO.Stream tfile = DownloadFile(createAuthenticator(), file);
                                using (tfile)
                                {
                                    string filePath = XmlDataLayer.GetUserApplicationDirectory() + "\\Temp\\" + title;
                                    tfile.CopyTo(new System.IO.FileStream(filePath, System.IO.FileMode.Create, System.IO.FileAccess.Write));
                                    XmlDataLayer.SetDownloadEntry(title);
                                    XmlDataLayer x = new XmlDataLayer();
                                    x.CombineRecentResults();
                                }
                                Console.WriteLine(title);
                            }
                            catch (Exception)
                            {
                                UploadDownloadNewFiles(false);
                            }
                            //Console.WriteLine(title);
                            //File file = service.files().get(child.Id).execute();
                        }
                        request.PageToken = children.NextPageToken;
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("An error occurred: " + e.Message);
                        request.PageToken = null;
                    }
                } while (!String.IsNullOrEmpty(request.PageToken));
                Thread.Sleep(5 * 60 * 1000);
            }
        }
        private void copyFolderItems(FileManagerDirectoryContent item, string targetID)
        {
            DriveService service = GetService();

            ChildrenResource.ListRequest request = service.Children.List(item.Id);
            ChildList children = request.Execute();

            foreach (ChildReference child in children.Items)
            {
                var childDetails = service.Files.Get(child.Id).Execute();
                if (childDetails.MimeType == "application/vnd.google-apps.folder")
                {
                    File file = new File()
                    {
                        Title   = childDetails.Title,
                        Parents = new List <ParentReference> {
                            new ParentReference()
                            {
                                Id = targetID
                            }
                        },
                        MimeType = "application/vnd.google-apps.folder"
                    };
                    request.Fields = "id";
                    File SubFolder = (service.Files.Insert(file)).Execute();
                    FileManagerDirectoryContent FileDetail = new FileManagerDirectoryContent();
                    FileDetail.Name         = childDetails.Title;
                    FileDetail.Id           = childDetails.Id;
                    FileDetail.IsFile       = false;
                    FileDetail.Type         = "folder";
                    FileDetail.FilterId     = obtainFilterId(childDetails);
                    FileDetail.HasChild     = getChildrenById(childDetails.Id);
                    FileDetail.DateCreated  = Convert.ToDateTime(childDetails.ModifiedDate);
                    FileDetail.DateModified = Convert.ToDateTime(childDetails.ModifiedDate);
                    copyFolderItems(FileDetail, SubFolder.Id);
                }
                else
                {
                    File SubFile = new File()
                    {
                        Title   = childDetails.Title,
                        Parents = new List <ParentReference> {
                            new ParentReference()
                            {
                                Id = targetID
                            }
                        }
                    };
                    FilesResource.CopyRequest subFilerequest = service.Files.Copy(SubFile, child.Id);
                    subFilerequest.Execute();
                }
            }
        }
예제 #15
0
        static void DriveDir(DriveService service, string folderId)
        {
            if (service == null)
            {
                Console.WriteLine("Authentication error");
                Console.ReadLine();
            }

            try
            {
                ChildrenResource.ListRequest request1 = service.Children.List(folderId);
                request1.MaxResults = 1000;
                List <File> files = new List <File>();

                do
                {
                    try
                    {
                        ChildList children = request1.Execute();

                        foreach (ChildReference child in children.Items)
                        {
                            File file = service.Files.Get(child.Id).Execute();

                            if (file.MimeType == "application/vnd.google-apps.folder")
                            {
                                Console.WriteLine("DIR:\t{0}", file.Title);
                                DriveDir(service, file.Id);
                            }
                            else
                            {
                                //files.Add(file);
                                Console.WriteLine("FILE:\t{0}", file.Title);
                            }
                        }
                        request1.PageToken = children.NextPageToken;
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("An error occurred: " + e.Message);
                        request1.PageToken = null;
                    }
                } while (!String.IsNullOrEmpty(request1.PageToken));
            }
            catch (Exception ex)
            {
            }
        }
예제 #16
0
        public List <Google.Apis.Drive.v2.Data.File> GetRoot()
        {
            List <Google.Apis.Drive.v2.Data.File> result = new List <Google.Apis.Drive.v2.Data.File>();

            ChildrenResource.ListRequest child_req = _driveService.Children.List("root");
            ChildList ch = child_req.Execute();

            foreach (ChildReference a in ch.Items)
            {
                FilesResource.GetRequest       get_file = _driveService.Files.Get(a.Id);
                Google.Apis.Drive.v2.Data.File file_obj = get_file.Execute();
                result.Add(file_obj);
            }

            return(result);
        }
        public FileManagerResponse Move(string path, string targetPath, string[] names, string[] replacedItemNames, FileManagerDirectoryContent TargetData, params FileManagerDirectoryContent[] data)
        {
            FileManagerResponse moveResponse             = new FileManagerResponse();
            DriveService        service                  = GetService();
            List <FileManagerDirectoryContent> moveFiles = new List <FileManagerDirectoryContent>();

            ChildrenResource.ListRequest request = service.Children.List(data[0].Id);
            ChildList     children      = request.Execute();
            List <string> childFileList = children.Items.Select(x => x.Id).ToList();

            if (childFileList.IndexOf(TargetData.Id) != -1)
            {
                ErrorDetails er = new ErrorDetails();
                er.Code            = "400";
                er.Message         = "The destination folder is the subfolder of the source folder.";
                moveResponse.Error = er;
                return(moveResponse);
            }
            foreach (FileManagerDirectoryContent item in data)
            {
                FilesResource.GetRequest fileRequest = service.Files.Get(item.Id);
                fileRequest.Fields = "parents";
                var    file            = fileRequest.Execute();
                string previousParents = String.Join(",", file.Parents.Select(t => t.Id));
                FilesResource.UpdateRequest moveRequest = service.Files.Update(new File(), item.Id);
                moveRequest.Fields        = "id, parents";
                moveRequest.AddParents    = TargetData.Id;
                moveRequest.RemoveParents = previousParents;
                file = moveRequest.Execute();
                File filedetails = service.Files.Get(file.Id).Execute();
                FileManagerDirectoryContent FileDetail = new FileManagerDirectoryContent();
                FileDetail.Name         = filedetails.Title;
                FileDetail.Id           = filedetails.Id;
                FileDetail.IsFile       = filedetails.MimeType == "application/vnd.google-apps.folder" ? false : true;
                FileDetail.Type         = filedetails.FileExtension == null ? "folder" : filedetails.FileExtension;
                FileDetail.HasChild     = getChildrenById(filedetails.Id);
                FileDetail.Size         = item.Size;
                FileDetail.FilterPath   = targetPath.Replace("/", @"\");
                FileDetail.FilterId     = obtainFilterId(filedetails);
                FileDetail.DateCreated  = Convert.ToDateTime(filedetails.ModifiedDate);
                FileDetail.DateModified = Convert.ToDateTime(filedetails.ModifiedDate);
                moveFiles.Add(FileDetail);
            }
            moveResponse.Files = moveFiles;
            return(moveResponse);
        }
예제 #18
0
        public IDictionary <String, String> GetChildElements(String rootID)
        {
            ChildrenResource.ListRequest request = service.Children.List(rootID);
            IDictionary <String, String> result  = new Dictionary <String, String>();
            ChildList list = request.Execute();

            foreach (ChildReference child in list.Items)
            {
                foreach (File file in all)
                {
                    if (child.Id.Equals(file.Id))
                    {
                        result.Add(file.Id, file.Title);
                    }
                }
            }

            return(result);
        }
예제 #19
0
        public static List <GoogleDriveFiles> GetContainsInFolderCustom(String folderId)
        {
            List <string> ChildList = new List <string>();

            Google.Apis.Drive.v2.DriveService ServiceV2          = GetService_v2();
            ChildrenResource.ListRequest      ChildrenIDsRequest = ServiceV2.Children.List(folderId);

            // for getting only folders
            ChildrenIDsRequest.Q      = "mimeType!='application/vnd.google-apps.folder'"; //file catched by usiing ! sign
            ChildrenIDsRequest.Fields = "files(id,name)";
            do
            {
                var children = ChildrenIDsRequest.Execute();

                if (children.Items != null && children.Items.Count > 0)
                {
                    foreach (var file in children.Items)
                    {
                        ChildList.Add(file.Id);
                    }
                }
                ChildrenIDsRequest.PageToken = children.NextPageToken;
            } while (!String.IsNullOrEmpty(ChildrenIDsRequest.PageToken));

            //Get All File List
            //  List<GoogleDriveFiles> AllFileList = GetDriveFiles();
            List <GoogleDriveFiles> Filter_FileList = new List <GoogleDriveFiles>();


            foreach (string Id in ChildList)
            {
                GoogleDriveFiles File = new GoogleDriveFiles
                {
                    Id          = Id,
                    Name        = "",
                    Size        = 0,
                    Version     = 0,
                    CreatedTime = null
                };
                Filter_FileList.Add(File);
            }
            return(Filter_FileList);
        }
        // Calculates the folder size value
        private void getFolderSize(string folderdId)
        {
            DriveService service = GetService();

            ChildrenResource.ListRequest request = service.Children.List(folderdId);
            ChildList children = request.Execute();
            List <Google.Apis.Drive.v2.Data.ChildReference> childFileList = children.Items.ToList();

            foreach (var child in childFileList)
            {
                if (service.Files.Get(children.Items[0].Id).Execute().MimeType == "application/vnd.google-apps.folder")
                {
                    getFolderSize(child.Id);
                }
                else
                {
                    sizeValue = sizeValue + long.Parse(service.Files.Get(children.Items[0].Id).Execute().FileSize.ToString());
                }
            }
        }
예제 #21
0
        public List <Google.Apis.Drive.v2.Data.File> GetChildren(string dir_name)
        {
            List <Google.Apis.Drive.v2.Data.File> result = new List <Google.Apis.Drive.v2.Data.File>();

            FilesResource.ListRequest req = _driveService.Files.List();
            req.Q = "title='" + dir_name + "'";
            FileList children_list = req.Execute();

            ChildrenResource.ListRequest child_req = _driveService.Children.List(children_list.Items[0].Id);
            ChildList ch = child_req.Execute();

            foreach (ChildReference a in ch.Items)
            {
                FilesResource.GetRequest       get_file = _driveService.Files.Get(a.Id);
                Google.Apis.Drive.v2.Data.File file_obj = get_file.Execute();
                result.Add(file_obj);
            }

            return(result);
        }
        // Download files within the folder
        private void DownloadFolderFiles(string Id, string Name, ZipArchive archive, ZipArchiveEntry zipEntry)
        {
            DriveService  service = GetService();
            DirectoryInfo info    = new DirectoryInfo(Path.GetTempPath() + Name);

            ChildrenResource.ListRequest request = service.Children.List(Id);
            ChildList children = request.Execute();
            List <Google.Apis.Drive.v2.Data.ChildReference> childFileList = children.Items.ToList();

            foreach (ChildReference child in childFileList)
            {
                if (service.Files.Get(child.Id).Execute().MimeType == "application/vnd.google-apps.folder")
                {
                    info.CreateSubdirectory(service.Files.Get(child.Id).Execute().Title);
                    zipEntry = archive.CreateEntry(Name + "\\" + service.Files.Get(child.Id).Execute().Title + "/");
                    DownloadFolderFiles(child.Id, Name + "\\" + service.Files.Get(child.Id).Execute().Title, archive, zipEntry);
                }
                else
                {
                    Stream file;
                    File   fileProperties = service.Files.Get(child.Id).Execute();
                    if (System.IO.File.Exists(Path.Combine(Path.GetTempPath() + Name, fileProperties.Title)))
                    {
                        System.IO.File.Delete(Path.Combine(Path.GetTempPath() + Name, fileProperties.Title));
                    }
                    byte[] subFileContent = service.HttpClient.GetByteArrayAsync(fileProperties.DownloadUrl).Result;
                    using (file = System.IO.File.OpenWrite(Path.Combine(Path.GetTempPath() + Name, fileProperties.Title)))
                    {
                        file.Write(subFileContent, 0, subFileContent.Length);
                        file.Close();
                        zipEntry = archive.CreateEntryFromFile(Path.Combine(Path.GetTempPath() + Name, fileProperties.Title), Name + "\\" + fileProperties.Title, CompressionLevel.Fastest);
                    }
                }
            }
            if (System.IO.File.Exists(Path.Combine(Path.GetTempPath(), Name)))
            {
                System.IO.File.Delete(Path.Combine(Path.GetTempPath(), Name));
            }
        }
예제 #23
0
        private void GetFolderItems(ref List <Item> lstItems, string rootid)
        {
            //ChildList listadoFiles = service.Children.List(rootid).Execute();
            //Q = "mimeType='application/vnd.google-apps.folder'

            ChildrenResource.ListRequest request = service.Children.List(rootid);
            request.Q = "mimeType != 'application/vnd.google-apps.folder'";
            ChildList listadoFiles = request.Execute();


            if (listadoFiles != null && listadoFiles.Items.Count > 0)
            {
                foreach (ChildReference fold in listadoFiles.Items)
                {
                    Item itm = new Item();
                    itm.GoogleID       = fold.Id;
                    itm.GoogleParentID = rootid;
                    itm.IsFolder       = false;
                    lstItems.Add(itm);
                }
            }
        }
예제 #24
0
        public static List <File> listfiles(string foldername)
        {
            File        myfolder      = getfolderid(foldername);
            List <File> filesinfodler = new List <File>();

            if (myfolder != null)
            {
                ChildrenResource.ListRequest request = service.Children.List(myfolder.Id);

                do
                {
                    try
                    {
                        ChildList children = request.Fetch();

                        foreach (ChildReference child in children.Items)
                        {
                            //Console.WriteLine("File Id: " + child.Kind+child.SelfLink);
                            File file = service.Files.Get(child.Id).Fetch();
                            Console.WriteLine("File : " + file.OriginalFilename);
                            filesinfodler.Add(file);
                        }
                        request.PageToken = children.NextPageToken;
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("An error occurred: " + e.Message);
                        request.PageToken = null;
                    }
                } while (!String.IsNullOrEmpty(request.PageToken));

                return(filesinfodler);
            }
            else
            {
                MessageBox.Show("Folder not found");
                return(null);
            }
        }
예제 #25
0
        /// <summary>
        /// List all of the files and directories for the current user.
        ///
        /// Documentation: https://developers.google.com/drive/v2/reference/files/list
        /// Documentation Search: https://developers.google.com/drive/web/search-parameters
        /// </summary>
        /// <param name="service">a Valid authenticated DriveService</param>
        /// <param name="search">if Search is null will return all files</param>
        /// <returns></returns>
        public static List <File> GetFiles(DriveService service, string folderId)
        {
            List <File> Files = new List <File>();

            try
            {
                ChildrenResource.ListRequest request = service.Children.List(folderId);
                request.MaxResults = 1000;

                do
                {
                    try
                    {
                        ChildList children = request.Execute();

                        foreach (ChildReference child in children.Items)
                        {
                            File file = service.Files.Get(child.Id).Execute();

                            Console.WriteLine("Title: " + file.Title);

                            Console.WriteLine("MIME type: " + file.MimeType);
                            Console.WriteLine();
                        }
                        request.PageToken = children.NextPageToken;
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("An error occurred: " + e.Message);
                        request.PageToken = null;
                    }
                } while (!String.IsNullOrEmpty(request.PageToken));

                //List all of the files and directories for the current user.
                // Documentation: https://developers.google.com/drive/v2/reference/files/list
                FilesResource.ListRequest list = service.Files.List();
                list.MaxResults = 1000;
                //if (search != null)
                //{
                //    list.Q = search;
                //}
                FileList filesFeed = list.Execute();

                //// Loop through until we arrive at an empty page
                while (filesFeed.Items != null)
                {
                    // Adding each item  to the list.
                    foreach (File item in filesFeed.Items)
                    {
                        Files.Add(item);
                    }

                    // We will know we are on the last page when the next page token is
                    // null.
                    // If this is the case, break.
                    if (filesFeed.NextPageToken == null)
                    {
                        break;
                    }

                    // Prepare the next page of results
                    list.PageToken = filesFeed.NextPageToken;

                    // Execute and process the next page request
                    filesFeed = list.Execute();
                }
            }
            catch (Exception ex)
            {
                // In the event there is an error with the request.
                Console.WriteLine(ex.Message);
            }
            return(Files);
        }
예제 #26
0
        static void Main(string[] args)
        {
            //Google Drive scopes Documentation:   https://developers.google.com/drive/web/scopes
            string[] scopes = new string[] { DriveService.Scope.Drive,                 // view and manage your files and documents
                                             DriveService.Scope.DriveAppdata,          // view and manage its own configuration data
                                             DriveService.Scope.DriveAppsReadonly,     // view your drive apps
                                             DriveService.Scope.DriveFile,             // view and manage files created by this app
                                             DriveService.Scope.DriveMetadataReadonly, // view metadata for files
                                             DriveService.Scope.DriveReadonly,         // view files and documents on your drive
                                             DriveService.Scope.DriveScripts };        // modify your app scripts

            DriveService service = GDriveAccount.Authenticate("*****@*****.**", "Columbia State-99db1bd2a00e.json", scopes);

            if (service == null)
            {
                Console.WriteLine("Authentication error");
                Console.ReadLine();
            }

            DriveDir(service, "0Byi5ne7d961QVS1XOGlPaTRKc28");

            try
            {
                ChildrenResource.ListRequest request1 = service.Children.List("0Byi5ne7d961QVS1XOGlPaTRKc28");
                int j = 1;
                request1.MaxResults = 1000;
                List <string> folders = new List <string>();
                List <string> files   = new List <string>();
                do
                {
                    try
                    {
                        ChildList children = request1.Execute();

                        foreach (ChildReference child in children.Items)
                        {
                            //Console.WriteLine("{0} File Id: {1}", j, child.Id);
                            File file = service.Files.Get(child.Id).Execute();
                            if (file.MimeType == "application/vnd.google-apps.folder")
                            {
                                folders.Add(file.Title);
                            }
                            else
                            {
                                files.Add(file.Title);
                            }

                            //Console.WriteLine("Title: {0} - MIME type: {1}", file.Title, file.MimeType);
                            //Console.WriteLine();
                            //j++;
                        }
                        request1.PageToken = children.NextPageToken;
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("An error occurred: " + e.Message);
                        request1.PageToken = null;
                    }
                } while (!String.IsNullOrEmpty(request1.PageToken));

                foreach (string dir in  folders)
                {
                    Console.WriteLine(dir);
                }

                // Listing files with search.
                // This searches for a directory with the name DiamtoSample
                string Q = "title = 'Files' and mimeType = 'application/vnd.google-apps.folder'";
                //string Q = "mimeType = 'application/vnd.google-apps.folder'";
                IList <File> _Files = GoogleDrive.GetFiles(service, null);

                foreach (File item in _Files)
                {
                    Console.WriteLine(item.Title + " " + item.MimeType);
                }

                // If there isn't a directory with this name lets create one.
                if (_Files.Count == 0)
                {
                    _Files.Add(GoogleDrive.createDirectory(service, "Files1", "Files1", "root"));
                }

                // We should have a directory now because we either had it to begin with or we just created one.
                if (_Files.Count != 0)
                {
                    // This is the ID of the directory
                    string directoryId = _Files[0].Id;

                    //Upload a file
                    //File newFile = DaimtoGoogleDriveHelper.uploadFile(service, @"c:\GoogleDevelop\dummyUploadFile.txt", directoryId);
                    File newFile = GoogleDrive.uploadFile(service, @"c:\Games\gtasamp.md5", directoryId);
                    // Update The file
                    //File UpdatedFile = DaimtoGoogleDriveHelper.updateFile(service, @"c:\GoogleDevelop\dummyUploadFile.txt", directoryId, newFile.Id);
                    File UpdatedFile = GoogleDrive.updateFile(service, @"c:\Games\gtasamp.md5", directoryId, newFile.Id);
                    // Download the file
                    GoogleDrive.downloadFile(service, newFile, @"C:\Games\download.txt");
                    // delete The file
                    FilesResource.DeleteRequest request = service.Files.Delete(newFile.Id);
                    request.Execute();
                }

                // Getting a list of ALL a users Files (This could take a while.)
                _Files = GoogleDrive.GetFiles(service, null);

                foreach (File item in _Files)
                {
                    Console.WriteLine(item.Title + " " + item.MimeType);
                }
            }
            catch (Exception ex)
            {
                int i = 1;
            }

            Console.ReadLine();
        }
        // Reads the file(s) and folder(s)
        public FileManagerResponse GetFiles(string path, bool showHiddenItems, params FileManagerDirectoryContent[] data)
        {
            string id = (path == "/") ? null : data[0].Id;
            // Create Drive API service.
            DriveService service = GetService();

            // Define parameters of request.
            FilesResource.ListRequest listRequest = service.Files.List();
            listRequest.Fields = "nextPageToken, files(*)";
            List <Google.Apis.Drive.v2.Data.File> result = new List <Google.Apis.Drive.v2.Data.File>();

            FilesResource.ListRequest req = service.Files.List();
            IList <Google.Apis.Drive.v2.Data.File> files = req.Execute().Items;
            FileManagerResponse readResponse             = new FileManagerResponse();

            if (files != null && files.Count > 0)
            {
                FileManagerDirectoryContent    cwd       = new FileManagerDirectoryContent();
                Google.Apis.Drive.v2.Data.File directory = (id == null) ? service.Files.Get(files.Where(a => a.Parents.Any(c => (bool)c.IsRoot == true)).ToList()[0].Parents[0].Id).Execute() :
                                                           service.Files.Get(id).Execute();
                cwd.Name = directory.Title;
                cwd.Size = directory.FileSize != null?long.Parse(directory.FileSize.ToString()) : 0;

                cwd.IsFile       = directory.MimeType == "application/vnd.google-apps.folder" ? false : true;
                cwd.DateModified = Convert.ToDateTime(directory.ModifiedDate);
                cwd.DateCreated  = Convert.ToDateTime(directory.CreatedDate);
                cwd.Id           = directory.Id;
                cwd.HasChild     = true;
                cwd.Type         = "Folder";
                this.path        = new List <string>();
                cwd.FilterPath   = directory.Parents.Count == 0 ? "" : data[0].FilterPath;
                List <FileManagerDirectoryContent> rootFileList = files.Where(x => x.Parents.Any(c => (bool)c.IsRoot == true)).Select(x => new FileManagerDirectoryContent()
                {
                    Id           = x.Id,
                    Name         = x.Title,
                    Size         = x.FileSize != null ? long.Parse(x.FileSize.ToString()) : 0,
                    DateCreated  = Convert.ToDateTime(x.CreatedDate),
                    DateModified = Convert.ToDateTime(x.ModifiedDate),
                    Type         = x.FileExtension == null ? "folder" : x.FileExtension,
                    HasChild     = getChildrenById(x.Id),
                    FilterPath   = @"\",
                    FilterId     = obtainFilterId(x),
                    IsFile       = x.MimeType == "application/vnd.google-apps.folder" ? false : true
                }).ToList();
                if (id == null)
                {
                    readResponse.Files = rootFileList;
                }
                else
                {
                    ChildrenResource.ListRequest request = service.Children.List(id);
                    ChildList children = request.Execute();
                    List <FileManagerDirectoryContent> childFileList = new List <FileManagerDirectoryContent>();
                    string[] childId = children.Items.Select(x => x.Id).ToList().ToArray();
                    foreach (string idValue in childId)
                    {
                        File details = service.Files.Get(idValue).Execute();
                        FileManagerDirectoryContent content = new FileManagerDirectoryContent()
                        {
                            Id   = idValue,
                            Name = details.Title,
                            Size = details.FileSize != null?long.Parse(details.FileSize.ToString()) : 0,
                                       DateCreated  = Convert.ToDateTime(details.CreatedDate),
                                       DateModified = Convert.ToDateTime(details.ModifiedDate),
                                       Type         = details.FileExtension,
                                       FilterPath   = data.Length != 0 ? obtainFilterPath(details, true) + @"\" : @"\",
                                       FilterId     = obtainFilterId(details),
                                       HasChild     = getChildrenById(idValue),
                                       IsFile       = details.MimeType == "application/vnd.google-apps.folder" ? false : true
                        };
                        childFileList.Add(content);
                    }
                    readResponse.Files = childFileList;
                }
                readResponse.CWD = cwd;
                return(readResponse);
            }
            return(readResponse);
        }
        public FileManagerResponse Copy(string path, string targetPath, string[] names, string[] replacedItemNames, FileManagerDirectoryContent TargetData, params FileManagerDirectoryContent[] data)
        {
            FileManagerResponse copyResponse             = new FileManagerResponse();
            DriveService        service                  = GetService();
            List <FileManagerDirectoryContent> copyFiles = new List <FileManagerDirectoryContent>();

            ChildrenResource.ListRequest childRequest = service.Children.List(data[0].Id);
            ChildList     children      = childRequest.Execute();
            List <string> childFileList = children.Items.Select(x => x.Id).ToList();

            if (childFileList.IndexOf(TargetData.Id) != -1)
            {
                ErrorDetails er = new ErrorDetails();
                er.Code            = "400";
                er.Message         = "The destination folder is the subfolder of the source folder.";
                copyResponse.Error = er;
                return(copyResponse);
            }
            foreach (FileManagerDirectoryContent item in data)
            {
                File copyFile;
                try
                {
                    File file = new File()
                    {
                        Title   = item.Name,
                        Parents = new List <ParentReference> {
                            new ParentReference()
                            {
                                Id = TargetData.Id
                            }
                        }
                    };
                    if (item.IsFile)
                    {
                        // Copy the file
                        FilesResource.CopyRequest request = service.Files.Copy(file, item.Id);
                        copyFile = request.Execute();
                    }
                    else
                    {
                        file.MimeType = "application/vnd.google-apps.folder";
                        FilesResource.InsertRequest request = service.Files.Insert(file);
                        request.Fields = "id";
                        copyFile       = request.Execute();
                        copyFolderItems(item, copyFile.Id);
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine("An error occurred: " + e.Message);
                    return(null);
                }
                File filedetails = service.Files.Get(copyFile.Id).Execute();
                FileManagerDirectoryContent FileDetail = new FileManagerDirectoryContent();
                FileDetail.Name         = filedetails.Title;
                FileDetail.Id           = filedetails.Id;
                FileDetail.IsFile       = filedetails.MimeType == "application/vnd.google-apps.folder" ? false : true;
                FileDetail.Type         = filedetails.FileExtension == null ? "folder" : filedetails.FileExtension;
                FileDetail.HasChild     = getChildrenById(filedetails.Id);
                FileDetail.FilterId     = obtainFilterId(filedetails);
                FileDetail.Size         = item.Size;
                FileDetail.FilterPath   = targetPath.Replace("/", @"\");
                FileDetail.DateCreated  = Convert.ToDateTime(filedetails.ModifiedDate);
                FileDetail.DateModified = Convert.ToDateTime(filedetails.ModifiedDate);
                copyFiles.Add(FileDetail);
            }
            copyResponse.Files = copyFiles;
            return(copyResponse);
        }
        /// <summary>
        /// makes directory on google drive if it does not exist
        /// </summary>
        /// <param name="service"></param>
        /// <param name="folder"></param>
        /// <param name="parentId"></param>
        /// <returns></returns>
        private static File makeDirectoryIfNotExists(DriveService service, string folder, string parentId)
        {
            ChildrenResource.ListRequest request = service.Children.List(parentId);
            bool folderExists = false;
            File file         = null;

            do
            {
                try
                {
                    ChildList children = request.Fetch();

                    foreach (ChildReference child in children.Items)
                    {
                        //Console.WriteLine("File Id: " + child.Id);
                        file = service.Files.Get(child.Id).Fetch();
                        string title = file.Title;
                        Console.WriteLine(title);
                        if (title == folder)
                        {
                            folderExists = true;
                            break;
                        }
                        //Console.WriteLine(title);
                        //File file = service.files().get(child.Id).execute();
                    }
                    request.PageToken = children.NextPageToken;
                }
                catch (Exception e)
                {
                    Console.WriteLine("An error occurred: " + e.Message);
                    request.PageToken = null;
                }
            } while (!String.IsNullOrEmpty(request.PageToken));
            if (folderExists)
            {
                return(file);
            }

            File body = new File();

            body.Title       = folder;
            body.Description = "PCTrack_id " + XmlDataLayer.GetConfigEntry("id");
            body.MimeType    = "application/vnd.google-apps.folder";

            // Set the parent folder.
            if (!String.IsNullOrEmpty(parentId))
            {
                body.Parents = new List <ParentReference>()
                {
                    new ParentReference()
                    {
                        Id = parentId
                    }
                };
            }


            try
            {
                file = service.Files.Insert(body).Fetch();
                return(file);
            }
            catch (Exception e)
            {
                Console.WriteLine("An error occurred: " + e.Message);
                return(null);
            }
        }
예제 #30
0
        public void Children(int folderRequestId,
                             string folder,
                             Dispatcher dispatch,
                             Func <int, FileEntry, int, bool> addEntry)
        {
            numFilesBeingFetched = 0;
            ChildrenResource.ListRequest request = _service.Children.List(folder);
            do
            {
                try
                {
                    ChildList children = request.Fetch();

                    var expectedCount = children.Items.Count();

                    foreach (ChildReference child in children.Items)
                    {
                        do
                        {
                            lock (_thumbDownloaders)
                            {
                                if (_thumbDownloaders.Count < 12)
                                {
                                    break;
                                }
                            }

                            System.Threading.Thread.Sleep(100);
                        } while (true);

                        var doContinue = true;
                        dispatch.Invoke(
                            new Action(() => { doContinue = addEntry(expectedCount, null, folderRequestId); }));
                        if (!doContinue)
                        {
                            break;
                        }

                        do
                        {
                            lock (this)
                            {
                                if (numFilesBeingFetched < 20)
                                {
                                    break;
                                }
                            }
                            System.Threading.Thread.Sleep(100);
                        } while (true);

                        FilesResource.GetRequest getReq = _service.Files.Get(child.Id);
                        ++numFilesBeingFetched;
                        getReq.FetchAsync((LazyResult <Google.Apis.Drive.v2.Data.File> response) =>
                        {
                            --numFilesBeingFetched;
                            Google.Apis.Drive.v2.Data.File file = response.GetResult();

                            doContinue = true;
                            dispatch.Invoke(
                                new Action(() => { doContinue = addEntry(expectedCount, null, folderRequestId); }));
                            if (!doContinue)
                            {
                                return;
                            }

                            //download thumbnail
                            if (file.ThumbnailLink != null)
                            {
                                if (_thumbCache.ContainsKey(file.Id))
                                {
                                    dispatch.BeginInvoke(new Action(() =>
                                    {
                                        addEntry(expectedCount,
                                                 new FileEntry(file, _thumbCache[file.Id], file.AlternateLink),
                                                 folderRequestId);
                                    }));
                                }
                                else
                                {
                                    TaskCompletionSource <byte[]> thumbTaskSrc = null;
                                    lock (_thumbDownloaders)
                                    {
                                        thumbTaskSrc = DownloadThumb(file.ThumbnailLink);
                                        _thumbDownloaders.Add(thumbTaskSrc);
                                    }

                                    thumbTaskSrc.Task.ContinueWith(
                                        (Task <byte[]> thumbTask) =>
                                    {
                                        if (thumbTask.Result != null)
                                        {
                                            dispatch.BeginInvoke(new Action(() =>
                                            {
                                                var thumb = new BitmapImage();
                                                thumb.BeginInit();
                                                thumb.StreamSource = new MemoryStream(thumbTask.Result);
                                                thumb.EndInit();

                                                if (!_thumbCache.ContainsKey(file.Id))
                                                {
                                                    _thumbCache.Add(file.Id, thumb);
                                                }

                                                addEntry(expectedCount,
                                                         new FileEntry(file, thumb, file.AlternateLink),
                                                         folderRequestId);
                                            }));
                                        }
                                        else
                                        {
                                            //thumbnails may be absent
                                            dispatch.BeginInvoke(new Action(() =>
                                            {
                                                addEntry(expectedCount,
                                                         new FileEntry(file, GetFileIcon(file),
                                                                       file.AlternateLink),
                                                         folderRequestId);
                                            }));
                                        }

                                        lock (_thumbDownloaders)
                                            _thumbDownloaders.Remove(thumbTaskSrc);
                                    });
                                }
                            }
                            else
                            {
                                dispatch.BeginInvoke(new Action(() =>
                                {
                                    addEntry(expectedCount,
                                             new FileEntry(file, GetFileIcon(file), file.AlternateLink),
                                             folderRequestId);
                                }));
                            }
                        });
                    }
                    request.PageToken = children.NextPageToken;
                }
                catch (Exception e)
                {
                    Console.WriteLine("An error occurred: " + e.Message);
                    request.PageToken = null;
                }

                var doContinue2 = true;
                dispatch.Invoke(new Action(() => { doContinue2 = addEntry(1, null, folderRequestId); //1 anything != 0
                                           }));
                if (!doContinue2)
                {
                    break;
                }
            } while (!String.IsNullOrEmpty(request.PageToken));
        }