/// <summary> /// Создает каталог для пользователя /// </summary> /// <param name="user"></param> /// <returns></returns> private Folder CreateUserFolder(SerializationObject.User user) { Folder curFolder = new Folder(user.FirstName + " " + user.LastName); string uid = user.Id.ToString(); Folder subFolder = new Folder("Аудиозаписи"); subFolder.Property.Add("type", "AudioApi.ExecuteGetAlbums"); subFolder.Property.Add("uid", uid); curFolder.ChildsAdd(subFolder); subFolder = new Folder("Фотографии", new Loader.VKontakte.Photos.GetAlbums(user.Id)); curFolder.ChildsAdd(subFolder); curFolder.ChildsAdd( new PlainText( "Открыть в браузере.url", PlainText.InternetShortcut("https://vk.com/id" + uid) ) ); curFolder.IsLoaded = true; return(curFolder); }
public override NtStatus CreateDirectory(Folder file, string filename, DokanFileInfo info) { // https://vk.com/id1 // https://vk.com/durov // https://vkontakte.ru/id1 filename = System.Text.RegularExpressions.Regex.Replace(filename, @"http(s|)://.*/", ""); // хавает любое занчение: 47348352, club47348352, vkdriveapp if (filename.Length == 0) { return(DokanResult.Error); } JObject apiResult; try { apiResult = (JObject) VKAPI.Vkapi.Instance.StartTaskSync(new VKAPI.ApiQuery("users.get", new Dictionary <string, string>() { { "uids", filename } })); } catch (Exception e) { if (e.Data.Contains("code") && e.Data["code"].ToString() == "113") { Console.WriteLine(@"Invalid user id"); } return(DokanResult.Error); } ushort count = 0; JArray items = (JArray)apiResult.GetValue("items"); foreach (JObject item in items) { SerializationObject.User user = item.ToObject <SerializationObject.User>(); /* * bool isDooble = false; * foreach (VFile file in RootNode.Childs) * { * if (file.GetType() == typeof(Folder)) * { * // проверка вхождения ключа нужна при разделении на каталоги. В этом случае сложим группу в корень после перезагрузки все исправится * if (((Folder)file).Property.ContainsKey("gid") && ((Folder)file).Property["gid"] == gid) * { * isDooble = true; * break; * } * } * } * if (isDooble) * { * count++; * continue; * }*/ if (user.FirstName == "DELETED" || user.Deactivated != null) { continue; } VkStorage.Join(StorageKey, user.Id.ToString()); file.ChildsAdd(CreateUserFolder(user)); count++; } if (count > 0) { return(DokanResult.Success); } return(DokanResult.Error); }