Пример #1
0
        public static PlainText ExceptionToFile(Exception exception, string accessDeniedMessage)
        {
            PlainText readme;

            if (exception.Data.Contains("code"))
            {
                if (exception.Data["code"].ToString() == "15")                 // Access denied:
                {
                    readme = new PlainText(accessDeniedMessage + ".txt");
                    readme.SetText(PlainText.GetSubscript());
                    return(readme);
                }
                readme = new PlainText(Resources.ErrorN.F(exception.Data["code"] + ".txt"));
                readme.SetText(PlainText.GetSubscript());
                return(readme);
            }
            readme = new PlainText(Resources.UnknownError + ".txt");
            readme.SetText(exception + PlainText.GetSubscript());
            return(readme);
        }
Пример #2
0
        public MainFs()
        {
            var drive = Properties.Settings.Default.MountPoint;

            _log.Debug("Start MainFS");
            _log.Debug("Db connect");
            try
            {
                Db.Instance.Connect();
            }
            catch (Exception e)
            {
                _log.Error("Db connect fail", e);
                throw;
            }
            _log.Debug("Make root tree");
            MakeRootDirectory();

            _topFiles = new List <VFile>();

            var readme = new PlainText("Прочти меня.txt");

            #region Много текста в readme.txt

            readme.SetText("Привет!\n" +
                           "\n" +
                           "Ты установил приложение VkDrive.\n" +
                           "\n" +
                           "Это полноценный виртуальный диск с музыкой и фотографиями из ВКонтакте.\n" +
                           "Для открытия файлов не нужно ждать долгое время синхронизации. Открытие файла происходит в течение доли секунд.\n" +
                           "\n" +
                           "После установки у тебя в \"Мой компьютер\" появился новый виртуальный диск " + drive +
                           ":\\\n" +
                           "На диске доступны папки:\n" +
                           "- Моя страница\n" +
                           "- Мои друзья\n" +
                           "- Мои группы\n" +
                           "- Поиск\n" +
                           "\n" +
                           "\n" +

                           /*"В бесплатной версии в папках страница, друзья, группы и поиск - тебе доступна музыка для для прослушивания (only read).\n"+
                            * "\n"+
                            * "В полной версии в папках страница, друзья, группы - доступен просмотр фотографий и загрузка фото в альбомы своей страницы.\n"+
                            * "Кроме прослушивания музыки - становится доступна загрузка музыкальных файлов в свои аудиозаписи.\n"+
                            * "\n"+
                            * "Для получения полной версии - пожертвуйте 1000 руб. на электронный кошелек хххххххххх. После чего (описание манипуляций для получения полной версии программы).\n"+
                            * "\n"+
                            */
                           "P.S.: все файлы используются исключительно с серверов ВКонтакте для ознакомления и прослушивания. За сторонние копирования - автор программы ответственности не несёт.\n" +
                           "\n" +
                           "P.P.S.: ваши идеи, предложения, сообщения об ошибках присылайте на e-mail: [email protected]");

            #endregion

            _topFiles.Add(readme);

            _topFiles.Add(new PlainText("Официальная группа.url",
                                        PlainText.InternetShortcut("https://vk.com/vkdriveapp")));
            _topFiles.Add(new Settings("Обновить все.lnk", "--GC"));

            //TopDirectory["Test"] = new DirTest();
            //TopDirectory["Last.fm"] = new DirLastFm();*/

            _log.Debug("Start MainFS OK");

            // clear root directory
            var makeRootTimer = new System.Timers.Timer(5 * 60 * 1000)
            {
                Enabled = true
            };
            makeRootTimer.Elapsed += (sender, args) =>
            {
                MakeRootDirectory();
                GC.Collect();
            };
            makeRootTimer.Start();
        }
Пример #3
0
        public override bool _LoadFile(Files.Folder file)
        {
            if (file.Property["type"] == "groups.get")
            {
                file.ChildsAdd(new Files.Settings("Добавить группу.lnk"));
                file.ChildsAdd(
                    new Files.SettingsXls(
                        "VKDirvePathData.xml", "Добавление группы",
                        "Введите ссылку на группу или ее идентификатор. Например https://vk.com/club47348352",
                        "Не удалось найти такую группу.",
                        "Такая группа уже существует."
                        ));

                JObject apiResult =
                    (JObject)
                    Vkapi.Instance.StartTaskSync(new ApiQuery("groups.get",
                                                              new Dictionary <string, string> {
                    { "extended", "1" }
                }));
                JArray items = (JArray)apiResult.GetValue("items");

                List <int> gruopIds = new List <int>();

                foreach (JObject item in items)
                {
                    SerializationObject.Group group = item.ToObject <SerializationObject.Group>();
                    file.ChildsAdd(CreateGroupFolder(group));
                    gruopIds.Add(group.Id);
                }

                string gids = VkStorage.Get(StorageKey);
                if (gids.Length > 0)
                {
                    JArray values =
                        (JArray)
                        Vkapi.Instance.StartTaskSync(new ApiQuery("groups.getById",
                                                                  new Dictionary <string, string> {
                        { "group_ids", gids.Replace('\n', ',') }
                    }));

                    foreach (JObject item in items)
                    {
                        SerializationObject.Group group = item.ToObject <SerializationObject.Group>();
                        if (gruopIds.IndexOf(group.Id) > -1)
                        {
                            continue;
                        }
                        file.ChildsAdd(CreateGroupFolder(group));
                    }
                }
            }
            else if (file.Property["type"] == "AudioApi.ExecuteGetAlbums")
            {
                //// 15:Access denied: group audio is disabled
                try
                {
                    AudioApi.ExecuteGetAlbums(new Dictionary <string, string>()
                    {
                        { "owner_id", "-" + file.Property["gid"] }
                    }, file.Childs);
                }
                catch (Exception e)
                {
                    if (e.Data.Contains("code") && e.Data["code"].ToString() == "15")
                    {
                        // 15:Access denied: group photos are disabled

                        var readmePlainText = new PlainText("Аудиозаписи отключены.txt");
                        readmePlainText.SetText(PlainText.GetSubscript());
                        file.ChildsAdd(readmePlainText);
                        return(true);
                    }
                    return(false);
                }
            }
            else if (file.Property["type"] == "audio.getInAlbum")
            {
                AudioApi.LoadMp3(new Dictionary <string, string>()
                {
                    { "gid", file.Property["gid"] },
                    { "album_id", file.Property["album_id"] }
                }, file.Childs);
            }
            else if (file.Property["type"] == "wait")
            {
                // Он там грузится в паралельном потоке. Подождать нужно
                int i = 0;
                while (!file.IsLoaded && i < 20) // 2 сек максимум
                {
                    i++;
                    // todo сделать перехват фатала.
                    System.Threading.Thread.Sleep(100);
                }
                // Подождать не вышло, выводим что есть
            }

            return(true);
        }