예제 #1
0
        /// <summary>
        /// Полностью клонирует сервер в локальную папку
        /// </summary>
        public static void CloneServer()
        {
            Dictionary<string, dynamic> json;
            Model.Dir dir, current_dir;

            Stack<Model.Dir> stack = new Stack<Model.Dir>();

            //просматриваем корневую папку сервера и помещаем папки, содержащиеся в ней, в стек
            json = Controller.ApiTwoSafe.listDir("");

            foreach(var one in json["response"]["list_dirs"])
            {
                if (one["name"] != "Shared" && one["name"] != "Trash")
                {
                    dir = new Model.Dir(one["id"], Properties.Settings.Default.RootId, one["name"]);
                    dir.Download();
                    stack.Push(dir);
                }
            }

            foreach (var one in json["response"]["list_files"])
            {
                new Model.File(one["id"], Properties.Settings.Default.RootId, one["name"]).Download();
            }

            //просматриваем все остальные папки с сервера и помещаем папки, содержащиеся в ней, в стек
            while (stack.Count != 0)
            {
                current_dir = stack.Pop();

                json = Controller.ApiTwoSafe.listDir(current_dir.Id.ToString());

                foreach (var one in json["response"]["list_dirs"])
                {
                    dir = new Model.Dir(one["id"], current_dir.Id, one["name"]);
                    dir.Download();
                    stack.Push(dir);
                }

                foreach (var one in json["response"]["list_files"])
                {
                    new Model.File(one["id"], current_dir.Id, one["name"]).Download();
                }
            }

            Helpers.ApplicationHelper.SetCurrentTimeToSettings();

            Start();
        }