Exemple #1
0
        private static string Trace(GDriveData.Change change)
        {
            var list = new List <Tuple <string, object> >();

            list.Add(new Tuple <string, object>("FileId", change.FileId));
            list.Add(new Tuple <string, object>("ChangeType", change.ChangeType));
            if (change.Removed.HasValue)
            {
                list.Add(new Tuple <string, object>("Removed", change.Removed.Value));
            }

            if (change.Time.HasValue)
            {
                list.Add(new Tuple <string, object>("Time", change.Time.Value));
            }

            if (change.File != null)
            {
                list.Add(new Tuple <string, object>("File.Name", change.File.Name));
                list.Add(new Tuple <string, object>("File.MimeType", change.File.MimeType));
                if (change.File.OriginalFilename != null)
                {
                    list.Add(new Tuple <string, object>("File.OriginalFilename", change.File.OriginalFilename));
                }

                if (change.File.Size.HasValue)
                {
                    list.Add(new Tuple <string, object>("File.Size", change.File.Size.Value));
                }

                if (change.File.Trashed.HasValue)
                {
                    list.Add(new Tuple <string, object>("File.Trashed", change.File.Trashed.Value));
                }

                if (change.File.Version.HasValue)
                {
                    list.Add(new Tuple <string, object>("File.Version", change.File.Version.Value));
                }

                if (change.File.Parents != null)
                {
                    list.Add(new Tuple <string, object>("File.Parents", string.Join("|", change.File.Parents)));
                }

                if (change.File.CreatedTime.HasValue)
                {
                    list.Add(new Tuple <string, object>("File.CreatedTime", change.File.CreatedTime.Value));
                }

                if (change.File.ModifiedTime.HasValue)
                {
                    list.Add(new Tuple <string, object>("File.ModifiedTime", change.File.ModifiedTime.Value));
                }
            }

            return(string.Join(", ", list.Select(c => c.Item1 + "=" + c.Item2)));
        }
Exemple #2
0
        // return true to resynchronize root
        private void ProcessChange(GDriveData.Change change, EventHandler <SyncFileSystemEventArgs> eventHandler)
        {
            if (eventHandler == null)
            {
                return;
            }

            if (change.Type == "file")
            {
                Log(TraceLevel.Info, "Change " + Trace(change));
                if ((change.File == null && change.Removed == true) || change.File?.Trashed == true)
                {
                    eventHandler.Invoke(FileSystem, new SyncFileSystemEventArgs(SyncFileSystemEventType.Deleted, change.Time.Value, new StateSyncEntry {
                        Id = change.FileId
                    }));
                    Log(TraceLevel.Info, "File with id '" + change.FileId + "' was deleted.");
                    return;
                }

                if (change.File == null)
                {
                    Log(TraceLevel.Warning, "Don't know what to do with a change without an associated file.");
                    return;
                }

                if (change.File.Name != null && change.File.Name.EndsWith(FileSystem.UrlExt, StringComparison.OrdinalIgnoreCase))
                {
                    Log(TraceLevel.Warning, "File '" + change.File.Name + "' is a .url, skipped.");
                    return;
                }

                var parentId = change.File.Parents?.FirstOrDefault();

                eventHandler.Invoke(FileSystem, new SyncFileSystemEventArgs(SyncFileSystemEventType.Changed, change.Time.Value, new StateSyncEntry {
                    Id = change.FileId, ParentId = parentId
                }));
            }
        }