예제 #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();
        }
예제 #2
0
파일: Dir.cs 프로젝트: dkostenko/2safe
 /// <summary>
 /// Создает папку на сервере и сохраняет ее в БД
 /// </summary>
 /// <param name="parent_id">ID родительской папки</param>
 /// <param name="fullPath">Полный путь данной папки (включая саму папку)</param>
 /// <returns></returns>
 public static Dir Upload(long parent_id, string fullPath)
 {
     fullPath = System.IO.Path.GetFileName(fullPath);
     Dictionary<string, dynamic> json = Controller.ApiTwoSafe.makeDir(parent_id, fullPath, null)["response"];
     Dir dir = new Model.Dir(json["dir_id"], parent_id, fullPath);
     dir.Save();
     return dir;
 }
예제 #3
0
파일: Dir.cs 프로젝트: dkostenko/2safe
        /// <summary>
        /// Находит папку в базе данных по ID
        /// </summary>
        /// <param name="id">ID папки на сайте 2safe</param>
        /// <returns>Возвращает объект папки</returns>
        public static Dir FindById(long id)
        {
            Model.Dir dir = null;
            if (id != Properties.Settings.Default.RootId)
            {
                SQLiteConnection connection = new SQLiteConnection(dbName);
                connection.Open();
                SQLiteCommand command = new SQLiteCommand("SELECT * FROM dirs WHERE id='" + id.ToString() + "'", connection);
                SQLiteDataReader reader = command.ExecuteReader();
                reader.Read();

                dir = new Model.Dir(reader.GetInt64(0), reader.GetInt64(1), reader.GetString(2));
                //dir.SetPath();

                reader.Close();
                connection.Close();
            }
            else
            {
                dir = new Dir(Properties.Settings.Default.RootId, 0, "root");
            }

            return dir;
        }