예제 #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 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);
        }