/// <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(); }