Beispiel #1
0
        /// <inheritdoc />
        public ReadOnlyCollection <User> GetChatUsers(IEnumerable <long> chatIds, UsersFields fields, NameCase nameCase)
        {
            var collection = chatIds.ToList();

            var parameters = new VkParameters
            {
                { "chat_ids", collection },
                { "fields", fields },
                { "name_case", nameCase }
            };

            var response = _vk.Call(methodName: "messages.getChatUsers", parameters: parameters);

            var list = new List <User>();

            foreach (var chatId in collection)
            {
                var chatResponse = response[key : chatId.ToString()];
                var users        = chatResponse.ToReadOnlyCollectionOf(selector: x => fields != null ? x : new User {
                    Id = (long)x
                });

                foreach (var user in users)
                {
                    var exist = list.Exists(match: first => first.Id == user.Id);

                    if (!exist)
                    {
                        list.Add(item: user);
                    }
                }
            }

            return(list.ToReadOnlyCollection());
        }
Beispiel #2
0
 /// <inheritdoc />
 public async Task <VkCollection <User> > GetSuggestionsAsync(FriendsFilter filter = null, long?count = null,
                                                              long?offset          = null,
                                                              UsersFields fields   = null, NameCase nameCase = null)
 {
     return(await TypeHelper.TryInvokeMethodAsync(() =>
                                                  _vk.Friends.GetSuggestions(filter, count, offset, fields, nameCase)));
 }
Beispiel #3
0
		public ReadOnlyCollection<User> GetFriendsList(out long totalCount, AppRequestType type, bool? extended = null, long? count = null, long? offset = null, UsersFields fields = null)
		{
			var result = GetFriendsList(type, extended, count, offset, fields);

			totalCount = Convert.ToInt64(result.TotalCount);

			return result.ToReadOnlyCollection();
		}
Beispiel #4
0
 /// <inheritdoc />
 public Task <NewsSuggestions> GetSuggestedSourcesAsync(long?offset          = null
                                                        , long?count         = null
                                                        , bool?shuffle       = null
                                                        , UsersFields fields = null)
 {
     return(TypeHelper.TryInvokeMethodAsync(func: () =>
                                            _vk.NewsFeed.GetSuggestedSources(offset: offset, count: count, shuffle: shuffle, fields: fields)));
 }
Beispiel #5
0
 /// <inheritdoc />
 public Task <VkCollection <User> > GetInvitedUsersAsync(long groupId
                                                         , long?offset        = null
                                                         , long?count         = null
                                                         , UsersFields fields = null
                                                         , NameCase nameCase  = null)
 {
     return(TypeHelper.TryInvokeMethodAsync(func: () =>
                                            GetInvitedUsers(groupId: groupId, offset: offset, count: count, fields: fields, nameCase: nameCase)));
 }
 /// <inheritdoc />
 public Task <VkCollection <User> > GetSuggestionsAsync(FriendsFilter filter = null
                                                        , long?count         = null
                                                        , long?offset        = null
                                                        , UsersFields fields = null
                                                        , NameCase nameCase  = null)
 {
     return(TypeHelper.TryInvokeMethodAsync(func: () =>
                                            GetSuggestions(filter: filter, count: count, offset: offset, fields: fields, nameCase: nameCase)));
 }
Beispiel #7
0
 /// <summary>
 /// Создает список друзей, который будет использоваться при отправке пользователем
 /// приглашений в приложение.
 /// </summary>
 /// <param name="type"> Tип создаваемого списка друзей. </param>
 /// <param name="extended">
 /// Параметр, определяющий необходимость возвращать расширенную информацию о
 /// пользователях.
 /// 0 — возвращаются только идентификаторы;
 /// 1 — будут дополнительно возвращены имя и фамилия. флаг, может принимать
 /// значения 1 или 0, по умолчанию 0
 /// Async(Флаг, может принимать значения 1 или 0, по умолчанию 0).
 /// </param>
 /// <param name="count"> Количество пользователей в создаваемом списке. </param>
 /// <param name="offset">
 /// Смещение относительно первого пользователя для выборки определенного
 /// подмножества.
 /// </param>
 /// <param name="fields">
 /// Список дополнительных полей профилей, которые необходимо вернуть. См. подробное
 /// описание.
 /// </param>
 /// <returns>
 /// После успешного выполнения возвращает список пользователей.
 /// </returns>
 /// <remarks>
 /// Страница документации ВКонтакте http://vk.com/dev/apps.getFriendsList
 /// </remarks>
 public Task <VkCollection <User> > GetFriendsListAsync(AppRequestType type
                                                        , bool?extended      = null
                                                        , long?count         = null
                                                        , long?offset        = null
                                                        , UsersFields fields = null)
 {
     return(TypeHelper.TryInvokeMethodAsync(func: () =>
                                            _vk.Apps.GetFriendsList(type: type, extended: extended, count: count, offset: offset)));
 }
Beispiel #8
0
        /// <summary>
        /// Возвращает список пользователей и групп, которые текущий пользователь скрыл из
        /// ленты новостей.
        /// </summary>
        /// <param name="fields">
        /// Список дополнительных полей профилей, которые необходимо
        /// вернуть.
        /// </param>
        /// <param name="nameCase"> Падеж для склонения имени и фамилии пользователя. </param>
        /// <returns>
        /// Возвращает результат выполнения метода.
        /// </returns>
        /// <remarks>
        /// Страница документации ВКонтакте http://vk.com/dev/newsfeed.getBanned
        /// </remarks>
        public NewsBannedExList GetBannedEx(UsersFields fields = null, NameCase nameCase = null)
        {
            var parameters = new VkParameters
            {
                { "extended", true }
                , { "fields", fields }
                , { "name_case", nameCase }
            };

            return(_vk.Call(methodName: "newsfeed.getBanned", parameters: parameters));
        }
Beispiel #9
0
        public ReadOnlyCollection <User> GetChatUsers(IEnumerable <long> chatIds, UsersFields fields, NameCase nameCase)
        {
            var parameters = new VkParameters {
                { "chat_ids", chatIds },
                { "fields", fields },
                { "name_case", nameCase }
            };

            var response = _vk.Call("messages.getChatUsers", parameters);

            return(response.ToReadOnlyCollectionOf <User>(x => fields != null ? x : new User {
                Id = (long)x
            }));
        }
Beispiel #10
0
        /// <summary>
        /// Возвращает список пользователей, которые были приглашены в группу.
        /// </summary>
        /// <param name="groupId">Идентификатор группы, список приглашенных в которую пользователей нужно вернуть. положительное число, обязательный параметр (Положительное число, обязательный параметр).</param>
        /// <param name="offset">Смещение, необходимое для выборки определённого подмножества пользователей. положительное число (Положительное число).</param>
        /// <param name="count">Количество пользователей, информацию о которых нужно вернуть. положительное число, по умолчанию 20 (Положительное число, по умолчанию 20).</param>
        /// <param name="fields">Список дополнительных полей, которые необходимо вернуть.
        /// Доступные значения: nickname, domain, sex, bdate, city, country, timezone, photo_50, photo_100, photo_200_orig, has_mobile, contacts, education, online, relation, last_seen, status, can_write_private_message, can_see_all_posts, can_post, universities список строк, разделенных через запятую (Список строк, разделенных через запятую).</param>
        /// <param name="nameCase">Падеж для склонения имени и фамилии пользователя. Возможные значения: именительный – nom, родительный – gen, дательный – dat, винительный – acc, творительный – ins, предложный – abl. По умолчанию nom. строка (Строка).</param>
        /// <returns></returns>
        /// <remarks>
        /// Страница документации ВКонтакте http://vk.com/dev/groups.getInvitedUsers
        /// </remarks>
        public VkCollection <User> GetInvitedUsers(long groupId, long?offset = null, long?count        = null,
                                                   UsersFields fields        = null, NameCase nameCase = null)
        {
            VkErrors.ThrowIfNumberIsNegative(() => groupId);
            var parameters = new VkParameters
            {
                { "group_id", groupId },
                { "offset", offset },
                { "count", count },
                { "fields", fields },
                { "name_case", nameCase }
            };

            return(_vk.Call("groups.getInvitedUsers", parameters).ToVkCollectionOf <User>(x => x));
        }
Beispiel #11
0
        /// <summary>
        /// Возвращает список профилей пользователей, которые могут быть друзьями текущего
        /// пользователя.
        /// </summary>
        /// <param name="filter">
        /// Типы предлагаемых друзей, которые нужно вернуть,
        /// перечисленные через запятую.
        /// </param>
        /// <param name="count">
        /// Количество рекомендаций, которое необходимо вернуть. положительное число,
        /// максимальное значение
        /// 500, по умолчанию 500 (положительное число, максимальное значение 500, по
        /// умолчанию 500).
        /// </param>
        /// <param name="offset">
        /// Смещение, необходимое для выбора определённого подмножества списка.
        /// положительное число
        /// (положительное число).
        /// </param>
        /// <param name="fields">
        /// Список дополнительных полей, которые необходимо вернуть. Доступные значения:
        /// nickname,
        /// screen_name, sex, bdate, city, country, timezone, photo_50, photo_100,
        /// photo_200_orig, has_mobile, contacts,
        /// education, online, counters, relation, last_seen, status,
        /// can_write_private_message, can_see_all_posts, can_post,
        /// universities список строк, разделенных через запятую(список строк, разделенных
        /// через запятую).
        /// </param>
        /// <param name="nameCase">
        /// Падеж для склонения имени и фамилии пользователя. Возможные значения:
        /// именительный – nom,
        /// родительный – gen, дательный – dat, винительный – acc, творительный – ins,
        /// предложный – abl. По умолчанию nom.
        /// строка (строка).
        /// </param>
        /// <returns>
        /// После успешного выполнения возвращает список объектов пользователей с
        /// дополнительным полем found_with для
        /// пользователей, найденных через импорт контактов. Для некоторых пользователей,
        /// которые были найдены давно поле
        /// found_with может отсутствовать.
        /// </returns>
        /// <remarks>
        /// Страница документации ВКонтакте http://vk.com/dev/friends.getSuggestions
        /// </remarks>
        public VkCollection <User> GetSuggestions(FriendsFilter filter = null
                                                  , long?count         = null
                                                  , long?offset        = null
                                                  , UsersFields fields = null
                                                  , NameCase nameCase  = null)
        {
            var parameters = new VkParameters
            {
                { "filter", filter }
                , { "count", count }
                , { "offset", offset }
                , { "fields", fields }
                , { "name_case", nameCase }
            };

            return(_vk.Call(methodName: "friends.getSuggestions", parameters: parameters).ToVkCollectionOf <User>(selector: x => x));
        }
Beispiel #12
0
        public List <UserExtended> GetGroupMembers(string groupName, UsersFields fields = null, int?count = null)
        {
            if (fields == null)
            {
                fields = UsersFields.All;
            }

            using (var api = _apiFactory.CreateVkApi(true))
            {
                var count2 = count ?? GetGroupMembersCount(groupName, api);
                var users  = new List <UserExtended>();
                for (var offset = 0; offset < count2; offset = offset + Step)
                {
                    var usersChunk = GetGroupMembersOffset(offset, groupName, api, fields);
                    users.AddRange(usersChunk);
                    Console.Write($"\rGot {users.Count} users...");
                }
                Console.WriteLine();
                return(users);
            }
        }
Beispiel #13
0
        /// <summary>
        /// Создает список друзей, который будет использоваться при отправке пользователем
        /// приглашений в приложение.
        /// </summary>
        /// <param name="type"> Tип создаваемого списка друзей. </param>
        /// <param name="extended">
        /// Параметр, определяющий необходимость возвращать расширенную информацию о
        /// пользователях.
        /// 0 — возвращаются только идентификаторы;
        /// 1 — будут дополнительно возвращены имя и фамилия. флаг, может принимать
        /// значения 1 или 0, по умолчанию 0 (Флаг,
        /// может принимать значения 1 или 0, по умолчанию 0).
        /// </param>
        /// <param name="count"> Количество пользователей в создаваемом списке. </param>
        /// <param name="offset">
        /// Смещение относительно первого пользователя для выборки определенного
        /// подмножества.
        /// </param>
        /// <param name="fields">
        /// Список дополнительных полей профилей, которые необходимо вернуть. См. подробное
        /// описание.
        /// </param>
        /// <returns>
        /// После успешного выполнения возвращает список пользователей.
        /// </returns>
        /// <remarks>
        /// Страница документации ВКонтакте http://vk.com/dev/apps.getFriendsList
        /// </remarks>
        public VkCollection <User> GetFriendsList(AppRequestType type
                                                  , bool?extended      = null
                                                  , long?count         = null
                                                  , long?offset        = null
                                                  , UsersFields fields = null)
        {
            var parameters = new VkParameters
            {
                { "extended", extended }
                , { "offset", offset }
                , { "type", type }
                , { "fields", fields }
            };

            if (count <= 5000)
            {
                parameters.Add(name: "count", nullableValue: count);
            }

            return(_vk.Call(methodName: "apps.getFriendsList", parameters: parameters).ToVkCollectionOf <User>(selector: x => x));
        }
Beispiel #14
0
        public VkBot()
        {
            // Authorize
            Api.Authorize(new ApiAuthParams()
            {
                ApplicationId = 5977261,
                Login         = Properties.Settings.Default.VkLogin,
                Password      = Properties.Settings.Default.VkPassword,
                Settings      = Settings.All
            });
            // Get last message
            // пиздец извращение ? значит, что переменная может быть равна null
            // как id может быть null - непонятно
            long?lastId = Api.Messages.Get(new MessagesGetParams()
            {
                Out   = MessageType.Received,
                Count = 1
            })
                          .Messages.First()
                          .Id;

            // А вдруг...
            if (!lastId.HasValue)
            {
                throw new ZeigHeil();
            }

            LongPollServerResponse serv = Api.Messages.GetLongPollServer(true, true);

            LongPollParams.Pts           = serv.Pts;
            LongPollParams.Ts            = serv.Ts;
            LongPollParams.PreviewLength = 0;
            LongPollParams.Onlines       = false;
            LongPollParams.EventsLimit   = null;
            UsersFields f = new UsersFields();

            LongPollParams.Fields    = f;
            LongPollParams.MsgsLimit = null;
            LongPollParams.MaxMsgId  = lastId;
        }
Beispiel #15
0
        public ReadOnlyCollection<User> GetInvitedUsers(long groupId, out int userCount, long? offset = null, long? count = null, UsersFields fields = null, NameCase nameCase = null)
        {
            var response = GetInvitedUsers(groupId, offset, count, fields, nameCase);

            userCount = Convert.ToInt32(response.TotalCount);

            return response.ToReadOnlyCollection();
        }
Beispiel #16
0
        public ReadOnlyCollection <User> GetInvitedUsers(long groupId, out int userCount, long?offset = null, long?count = null, UsersFields fields = null, NameCase nameCase = null)
        {
            VkErrors.ThrowIfNumberIsNegative(() => groupId);
            var parameters = new VkParameters
            {
                { "group_id", groupId },
                { "offset", offset },
                { "count", count },
                { "fields", fields },
                { "name_case", nameCase }
            };
            var response = _vk.Call("groups.getInvitedUsers", parameters);

            userCount = response["count"];
            return(response["items"].ToReadOnlyCollectionOf <User>(x => x));
        }
Beispiel #17
0
        public ReadOnlyCollection<User> GetRequests(long groupId, long? offset, long? count, UsersFields fields)
        {
            var parameters = new VkParameters {
                { "group_id", groupId },
                { "offset", offset },
                { "count", count },
                { "fields", fields }
            };

            return _vk.Call("groups.getRequests", parameters).ToReadOnlyCollectionOf<User>(x => x);
        }
Beispiel #18
0
 public NewsSuggestions GetSuggestedSources(int offset, int count = 20, bool shuffle = false, UsersFields fields = null)
 {
     var parameters = new VkParameters
     {
         { "offset", offset },
         { "shuffle", shuffle },
         { "fields", fields }
     };
     if (count <= 1000)
     {
         parameters.Add("count", count);
     }
     return _vk.Call("newsfeed.getSuggestedSources", parameters);
 }
Beispiel #19
0
 public ReadOnlyCollection<User> GetChatUsers(long chatId, UsersFields fields)
 {
     return GetChatUsers(new List<long> { chatId }, fields, null);
 }
Beispiel #20
0
        public ReadOnlyCollection <User> GetMembers(string gid, out int totalCount, uint?count = null, uint?offset = null, GroupsSort sort = null, UsersFields fields = null, GroupsFilters filters = null)
        {
            var parameters = new GroupsGetMembersParams
            {
                Offset  = offset,
                Filter  = filters,
                Fields  = fields,
                Count   = count,
                GroupId = gid,
                Sort    = sort
            };

            return(GetMembers(out totalCount, parameters));
        }
Beispiel #21
0
 /// <inheritdoc />
 public async Task <VkCollection <User> > GetRequestsAsync(long groupId, long?offset, long?count,
                                                           UsersFields fields)
 {
     return(await TypeHelper.TryInvokeMethodAsync(() => _vk.Groups.GetRequests(groupId, offset, count, fields)));
 }
Beispiel #22
0
 /// <summary>
 /// Возвращает сообщества и пользователей, на которые текущему пользователю рекомендуется подписаться.
 /// </summary>
 /// <param name="offset">Отступ, необходимый для выборки определенного подмножества сообществ или пользователей. положительное число (Положительное число).</param>
 /// <param name="count">Количество сообществ или пользователей, которое необходимо вернуть. положительное число, максимальное значение 1000, по умолчанию 20 (Положительное число, максимальное значение 1000, по умолчанию 20).</param>
 /// <param name="shuffle">Перемешивать ли возвращаемый список. флаг, может принимать значения 1 или 0 (Флаг, может принимать значения 1 или 0).</param>
 /// <param name="fields">Список дополнительных полей, которые необходимо вернуть. См. возможные поля для пользователей и сообществ. список слов, разделенных через запятую (Список слов, разделенных через запятую).</param>
 /// <returns>
 /// Список объектов пользователей и групп.
 /// </returns>
 /// <remarks>
 /// Страница документации ВКонтакте <see href="http://vk.com/dev/newsfeed.getSuggestedSources" />.
 /// </remarks>
 public NewsSuggestions GetSuggestedSources(long? offset = null, long? count = null, bool? shuffle = null, UsersFields fields = null)
 {
     var parameters = new VkParameters
     {
         { "offset", offset },
         { "shuffle", shuffle },
         { "fields", fields }
     };
     if (count <= 1000)
     {
         parameters.Add("count", count);
     }
     return _vk.Call("newsfeed.getSuggestedSources", parameters, false);
 }
Beispiel #23
0
		public ReadOnlyCollection<User> GetChatUsers(IEnumerable<long> chatIds, UsersFields fields, NameCase nameCase)
		{
			var parameters = new VkParameters {

				{ "chat_ids", chatIds },
				{ "fields", fields },
				{ "name_case", nameCase }
			};

			var response = _vk.Call("messages.getChatUsers", parameters);

			return response.ToReadOnlyCollectionOf(x => fields != null ? x : new User { Id = (long)x });
		}
Beispiel #24
0
        /// <summary>
        /// Возвращает список профилей пользователей, которые могут быть друзьями текущего пользователя.
        /// </summary>
        /// <param name="filter">Типы предлагаемых друзей, которые нужно вернуть, перечисленные через запятую.</param>
        /// <param name="count">Количество рекомендаций, которое необходимо вернуть. положительное число, максимальное значение 500, по умолчанию 500 (положительное число, максимальное значение 500, по умолчанию 500).</param>
        /// <param name="offset">Смещение, необходимое для выбора определённого подмножества списка. положительное число (положительное число).</param>
        /// <param name="fields">Список дополнительных полей, которые необходимо вернуть. Доступные значения: nickname, screen_name, sex, bdate, city, country, timezone, photo_50, photo_100, photo_200_orig, has_mobile, contacts, education, online, counters, relation, last_seen, status, can_write_private_message, can_see_all_posts, can_post, universities список строк, разделенных через запятую(список строк, разделенных через запятую).</param>
        /// <param name="nameCase">Падеж для склонения имени и фамилии пользователя. Возможные значения: именительный – nom, родительный – gen, дательный – dat, винительный – acc, творительный – ins, предложный – abl. По умолчанию nom. строка (строка).</param>
        /// <returns>
        /// После успешного выполнения возвращает список объектов пользователей с дополнительным полем found_with для пользователей, найденных через импорт контактов. Для некоторых пользователей, которые были найдены давно поле found_with может отсутствовать.
        /// </returns>
        /// <remarks>
        /// Страница документации ВКонтакте <see href="http://vk.com/dev/friends.getSuggestions" />.
        /// </remarks>
        public VkCollection<User> GetSuggestions(FriendsFilter filter = null, long? count = null, long? offset = null, UsersFields fields = null, NameCase nameCase = null)
        {
            var parameters = new VkParameters {
                { "filter", filter },
                { "count", count },
                { "offset", offset },
                { "fields", fields },
                { "name_case", nameCase }
            };

            return _vk.Call("friends.getSuggestions", parameters).ToVkCollectionOf<User>(x => x);
        }
Beispiel #25
0
        internal object GetLongPollHistory(ulong ts, ulong pts, ulong previewLength = 0, bool onlines = false, UsersFields fields = null, ulong eventsLimit = 1000, ulong msgsLimit = 200, ulong?maxMsgId = null)
        {
            var parameters = new VkParameters
            {
                { "ts", ts },
                { "pts", pts },
                { "preview_length", previewLength },
                { "onlines", onlines },
                { "fields", fields },
                { "events_limit", eventsLimit },
                { "msgs_limit", msgsLimit },
                { "max_msg_id", maxMsgId }
            };

            return(_vk.Call("messages.getLongPollHistory", parameters));
        }
Beispiel #26
0
        public ReadOnlyCollection <User> GetFriendsListEx(out int totalCount, AppRequestType type, int count = 20, int offset = 0, UsersFields fields = null)
        {
            var parameters = new VkParameters
            {
                { "extended", true },
                { "offset", offset },
                { "type", type },
                { "fields", fields }
            };

            if (count <= 5000)
            {
                parameters.Add("count", count);
            }
            var result = _vk.Call("apps.getFriendsList", parameters);

            totalCount = result["count"];
            return(result["items"].ToReadOnlyCollectionOf <User>(x => x));
        }
Beispiel #27
0
        public ReadOnlyCollection<User> GetMembers(string gid, out int totalCount, uint? count = null, uint? offset = null, GroupsSort sort = null, UsersFields fields = null, GroupsFilters filters = null)
        {
            var parameters = new GroupsGetMembersParams
            {
                Offset = offset,
                Filter = filters,
                Fields = fields,
                Count = count,
                GroupId = gid,
                Sort = sort
            };

            return GetMembers(out totalCount, parameters);
        }
Beispiel #28
0
        /// <inheritdoc />
        public VkCollection <User> GetRequests(long groupId, long?offset, long?count, UsersFields fields)
        {
            var parameters = new VkParameters
            {
                { "group_id", groupId }
                , { "offset", offset }
                , { "count", count }
                , { "fields", fields }
            };

            return(_vk.Call(methodName: "groups.getRequests", parameters: parameters).ToVkCollectionOf <User>(selector: x => x));
        }
Beispiel #29
0
 public void UsersFieldsTest()
 {
     // get test
     Assert.That(UsersFields.Nickname.ToString(), Is.EqualTo("nickname"));
     Assert.That(UsersFields.Domain.ToString(), Is.EqualTo("domain"));
     Assert.That(UsersFields.Sex.ToString(), Is.EqualTo("sex"));
     Assert.That(UsersFields.BirthDate.ToString(), Is.EqualTo("bdate"));
     Assert.That(UsersFields.City.ToString(), Is.EqualTo("city"));
     Assert.That(UsersFields.Country.ToString(), Is.EqualTo("country"));
     Assert.That(UsersFields.Timezone.ToString(), Is.EqualTo("timezone"));
     Assert.That(UsersFields.Photo50.ToString(), Is.EqualTo("photo_50"));
     Assert.That(UsersFields.Photo100.ToString(), Is.EqualTo("photo_100"));
     Assert.That(UsersFields.Photo200Orig.ToString(), Is.EqualTo("photo_200_orig"));
     Assert.That(UsersFields.Photo200.ToString(), Is.EqualTo("photo_200"));
     Assert.That(UsersFields.Photo400Orig.ToString(), Is.EqualTo("photo_400_orig"));
     Assert.That(UsersFields.PhotoMax.ToString(), Is.EqualTo("photo_max"));
     Assert.That(UsersFields.PhotoMaxOrig.ToString(), Is.EqualTo("photo_max_orig"));
     Assert.That(UsersFields.HasMobile.ToString(), Is.EqualTo("has_mobile"));
     Assert.That(UsersFields.Contacts.ToString(), Is.EqualTo("contacts"));
     Assert.That(UsersFields.Education.ToString(), Is.EqualTo("education"));
     Assert.That(UsersFields.Online.ToString(), Is.EqualTo("online"));
     Assert.That(UsersFields.OnlineMobile.ToString(), Is.EqualTo("online_mobile"));
     Assert.That(UsersFields.FriendLists.ToString(), Is.EqualTo("lists"));
     Assert.That(UsersFields.Relation.ToString(), Is.EqualTo("relation"));
     Assert.That(UsersFields.LastSeen.ToString(), Is.EqualTo("last_seen"));
     Assert.That(UsersFields.Status.ToString(), Is.EqualTo("status"));
     Assert.That(UsersFields.CanWritePrivateMessage.ToString(), Is.EqualTo("can_write_private_message"));
     Assert.That(UsersFields.CanSeeAllPosts.ToString(), Is.EqualTo("can_see_all_posts"));
     Assert.That(UsersFields.CanPost.ToString(), Is.EqualTo("can_post"));
     Assert.That(UsersFields.Universities.ToString(), Is.EqualTo("universities"));
     Assert.That(UsersFields.Connections.ToString(), Is.EqualTo("connections"));
     Assert.That(UsersFields.Site.ToString(), Is.EqualTo("site"));
     Assert.That(UsersFields.Schools.ToString(), Is.EqualTo("schools"));
     Assert.That(UsersFields.CanSeeAudio.ToString(), Is.EqualTo("can_see_audio"));
     Assert.That(UsersFields.CommonCount.ToString(), Is.EqualTo("common_count"));
     Assert.That(UsersFields.Relatives.ToString(), Is.EqualTo("relatives"));
     Assert.That(UsersFields.Counters.ToString(), Is.EqualTo("counters"));
     Assert.That(UsersFields.All.ToString(), Is.EqualTo("bdate,can_post,can_see_all_posts,can_see_audio,can_write_private_message,city,common_count,connections,contacts,counters,country,domain,education,has_mobile,last_seen,lists,nickname,online,online_mobile,photo_100,photo_200,photo_200_orig,photo_400_orig,photo_50,photo_max,photo_max_orig,relation,relatives,schools,sex,site,status,timezone,universities"));
     // parse test
     Assert.That(UsersFields.FromJson("nickname"), Is.EqualTo(UsersFields.Nickname));
     Assert.That(UsersFields.FromJson("domain"), Is.EqualTo(UsersFields.Domain));
     Assert.That(UsersFields.FromJson("sex"), Is.EqualTo(UsersFields.Sex));
     Assert.That(UsersFields.FromJson("bdate"), Is.EqualTo(UsersFields.BirthDate));
     Assert.That(UsersFields.FromJson("city"), Is.EqualTo(UsersFields.City));
     Assert.That(UsersFields.FromJson("country"), Is.EqualTo(UsersFields.Country));
     Assert.That(UsersFields.FromJson("timezone"), Is.EqualTo(UsersFields.Timezone));
     Assert.That(UsersFields.FromJson("photo_50"), Is.EqualTo(UsersFields.Photo50));
     Assert.That(UsersFields.FromJson("photo_100"), Is.EqualTo(UsersFields.Photo100));
     Assert.That(UsersFields.FromJson("photo_200_orig"), Is.EqualTo(UsersFields.Photo200Orig));
     Assert.That(UsersFields.FromJson("photo_200"), Is.EqualTo(UsersFields.Photo200));
     Assert.That(UsersFields.FromJson("photo_400_orig"), Is.EqualTo(UsersFields.Photo400Orig));
     Assert.That(UsersFields.FromJson("photo_max"), Is.EqualTo(UsersFields.PhotoMax));
     Assert.That(UsersFields.FromJson("photo_max_orig"), Is.EqualTo(UsersFields.PhotoMaxOrig));
     Assert.That(UsersFields.FromJson("has_mobile"), Is.EqualTo(UsersFields.HasMobile));
     Assert.That(UsersFields.FromJson("contacts"), Is.EqualTo(UsersFields.Contacts));
     Assert.That(UsersFields.FromJson("education"), Is.EqualTo(UsersFields.Education));
     Assert.That(UsersFields.FromJson("online"), Is.EqualTo(UsersFields.Online));
     Assert.That(UsersFields.FromJson("online_mobile"), Is.EqualTo(UsersFields.OnlineMobile));
     Assert.That(UsersFields.FromJson("lists"), Is.EqualTo(UsersFields.FriendLists));
     Assert.That(UsersFields.FromJson("relation"), Is.EqualTo(UsersFields.Relation));
     Assert.That(UsersFields.FromJson("last_seen"), Is.EqualTo(UsersFields.LastSeen));
     Assert.That(UsersFields.FromJson("status"), Is.EqualTo(UsersFields.Status));
     Assert.That(UsersFields.FromJson("can_write_private_message"), Is.EqualTo(UsersFields.CanWritePrivateMessage));
     Assert.That(UsersFields.FromJson("can_see_all_posts"), Is.EqualTo(UsersFields.CanSeeAllPosts));
     Assert.That(UsersFields.FromJson("can_post"), Is.EqualTo(UsersFields.CanPost));
     Assert.That(UsersFields.FromJson("universities"), Is.EqualTo(UsersFields.Universities));
     Assert.That(UsersFields.FromJson("connections"), Is.EqualTo(UsersFields.Connections));
     Assert.That(UsersFields.FromJson("site"), Is.EqualTo(UsersFields.Site));
     Assert.That(UsersFields.FromJson("schools"), Is.EqualTo(UsersFields.Schools));
     Assert.That(UsersFields.FromJson("can_see_audio"), Is.EqualTo(UsersFields.CanSeeAudio));
     Assert.That(UsersFields.FromJson("common_count"), Is.EqualTo(UsersFields.CommonCount));
     Assert.That(UsersFields.FromJson("relatives"), Is.EqualTo(UsersFields.Relatives));
     Assert.That(UsersFields.FromJson("counters"), Is.EqualTo(UsersFields.Counters));
     Assert.That(UsersFields.FromJson("bdate,can_post,can_see_all_posts,can_see_audio,can_write_private_message,city,common_count,connections,contacts,counters,country,domain,education,has_mobile,last_seen,lists,nickname,online,online_mobile,photo_100,photo_200,photo_200_orig,photo_400_orig,photo_50,photo_max,photo_max_orig,relation,relatives,schools,sex,site,status,timezone,universities"), Is.EqualTo(UsersFields.All));
 }
Beispiel #30
0
 public ReadOnlyCollection<User> GetFriendsListEx(out int totalCount, AppRequestType type, int count = 20, int offset = 0, UsersFields fields = null)
 {
     var parameters = new VkParameters
     {
         { "extended", true },
         { "offset", offset },
         { "type", type },
         { "fields", fields }
     };
     if (count <= 5000)
     {
         parameters.Add("count", count);
     }
     var result = _vk.Call("apps.getFriendsList", parameters);
     totalCount = result["count"];
     return result["items"].ToReadOnlyCollectionOf<User>(x => x);
 }
Beispiel #31
0
        public NewsSuggestions GetSuggestedSources(int offset, int count = 20, bool shuffle = false, UsersFields fields = null)
        {
            var parameters = new VkParameters
            {
                { "offset", offset },
                { "shuffle", shuffle },
                { "fields", fields }
            };

            if (count <= 1000)
            {
                parameters.Add("count", count);
            }
            return(_vk.Call("newsfeed.getSuggestedSources", parameters));
        }
Beispiel #32
0
        /// <summary>
        /// Позволяет получить список пользователей мультидиалога по его id.
        /// </summary>
        /// <param name="chatIds">Идентификаторы бесед. список целых чисел, разделенных запятыми (Список целых чисел, разделенных запятыми).</param>
        /// <param name="fields">Список дополнительных полей профилей, которые необходимо вернуть.
        /// Доступные значения: nickname, screen_name, sex, bdate, city, country, timezone, photo_50, photo_100, photo_200_orig, has_mobile, contacts, education, online, counters, relation, last_seen, status, can_write_private_message, can_see_all_posts, can_post, universities список строк, разделенных через запятую (Список строк, разделенных через запятую).</param>
        /// <param name="nameCase">Падеж для склонения имени и фамилии пользователя. Возможные значения: именительный – nom, родительный – gen, дательный – dat, винительный – acc, творительный – ins, предложный – abl. По умолчанию nom. строка (Строка).</param>
        /// <returns>
        /// После успешного выполнения возвращает список идентификаторов участников беседы.
        /// Если был задан параметр fields, возвращает список объектов пользователей с дополнительным полем invited_by, содержащим идентификатор пользователя, пригласившего в беседу.
        /// </returns>
        /// <remarks>
        /// Страница документации ВКонтакте <see href="http://vk.com/dev/messages.getChatUsers" />.
        /// </remarks>
        public ReadOnlyCollection<User> GetChatUsers(IEnumerable<long> chatIds, UsersFields fields, NameCase nameCase)
        {
            var parameters = new VkParameters {

                { "chat_ids", chatIds },
                { "fields", fields },
                { "name_case", nameCase }
            };

            var response = _vk.Call("messages.getChatUsers", parameters);

            var list = new List<User>();

            foreach ( var chatId in chatIds )
            {
                var chatResponse = response[chatId.ToString()];
                var users = chatResponse.ToReadOnlyCollectionOf(x => fields != null ? x : new User { Id = (long) x });

                foreach ( var user in users )
                {
                    bool exist = list.Exists(first => first.Id == user.Id);
                    if ( !exist )
                        list.Add(user);
                }
            }

            return list.ToReadOnlyCollection();
        }
Beispiel #33
0
        public ReadOnlyCollection <User> GetFriendsList(out long totalCount, AppRequestType type, bool?extended = null, long?count = null, long?offset = null, UsersFields fields = null)
        {
            var result = GetFriendsList(type, extended, count, offset, fields);

            totalCount = Convert.ToInt64(result.TotalCount);

            return(result.ToReadOnlyCollection());
        }
Beispiel #34
0
 public ReadOnlyCollection <User> GetChatUsers(long chatId, UsersFields fields)
 {
     return(GetChatUsers(new List <long> {
         chatId
     }, fields, null));
 }
Beispiel #35
0
        /// <summary>
        /// Возвращает сообщества и пользователей, на которые текущему пользователю
        /// рекомендуется подписаться.
        /// </summary>
        /// <param name="offset">
        /// Отступ, необходимый для выборки определенного подмножества сообществ или
        /// пользователей.
        /// положительное число (Положительное число).
        /// </param>
        /// <param name="count">
        /// Количество сообществ или пользователей, которое необходимо вернуть.
        /// положительное число,
        /// максимальное значение 1000, по умолчанию 20 (Положительное число, максимальное
        /// значение 1000, по умолчанию 20).
        /// </param>
        /// <param name="shuffle">
        /// Перемешивать ли возвращаемый список. флаг, может принимать значения 1 или 0
        /// (Флаг, может
        /// принимать значения 1 или 0).
        /// </param>
        /// <param name="fields">
        /// Список дополнительных полей, которые необходимо вернуть. См. возможные поля для
        /// пользователей и
        /// сообществ. список слов, разделенных через запятую (Список слов, разделенных
        /// через запятую).
        /// </param>
        /// <returns>
        /// Список объектов пользователей и групп.
        /// </returns>
        /// <remarks>
        /// Страница документации ВКонтакте http://vk.com/dev/newsfeed.getSuggestedSources
        /// </remarks>
        public NewsSuggestions GetSuggestedSources(long?offset = null, long?count = null, bool?shuffle = null, UsersFields fields = null)
        {
            var parameters = new VkParameters
            {
                { "offset", offset }
                , { "shuffle", shuffle }
                , { "fields", fields }
            };

            if (count <= 1000)
            {
                parameters.Add(name: "count", nullableValue: count);
            }

            return(_vk.Call(methodName: "newsfeed.getSuggestedSources", parameters: parameters));
        }
Beispiel #36
0
 /// <summary>
 /// Позволяет искать пользователей ВКонтакте, используя телефонные номера, email-адреса, и идентификаторы пользователей в других сервисах. Найденные пользователи могут быть также в дальнейшем получены методом friends.getSuggestions.
 /// </summary>
 /// <param name="contacts">Список контактов, разделенных через запятую. список слов, разделенных через запятую (Список слов, разделенных через запятую).</param>
 /// <param name="service">Строковой идентификатор сервиса, по контактам которого производится поиск. Может принимать следующие значения: (email, phone, twitter, facebook, odnoklassniki, instagram, google) строка, обязательный параметр (Строка, обязательный параметр).</param>
 /// <param name="mycontact">Контакт текущего пользователя в заданном сервисе. строка (Строка).</param>
 /// <param name="returnAll">1 – возвращать также контакты, найденные ранее с использованием этого сервиса, 0 – возвращать только контакты, найденные с использованием поля contacts. флаг, может принимать значения 1 или 0 (Флаг, может принимать значения 1 или 0).</param>
 /// <param name="fields">Список дополнительных полей, которые необходимо вернуть.
 /// Доступные значения: nickname, domain, sex, bdate, city, country, timezone, photo_50, photo_100, photo_200_orig, has_mobile, contacts, education, online, relation, last_seen, status, can_write_private_message, can_see_all_posts, can_post, universities список слов, разделенных через запятую (Список слов, разделенных через запятую).</param>
 /// <returns>
 /// В качестве результата метод возвращает два списка:
 /// found – список объектов пользователей, расширенных полями contact – контакт, по которому был найден пользователь (не приходит если пользователь был найден при предыдущем использовании метода), request_sent – запрос на добавление в друзья уже был выслан, либо пользователь уже является другом, common_count если этот контакт также был импортирован друзьями или контактами текущего пользователя. Метод также возвращает найденные ранее контакты.
 /// other – список контактов, которые не были найдены. Объект содержит поля contact и common_count если этот контакт также был импортирован друзьями или контактами текущего пользователя.
 /// </returns>
 /// <remarks>
 /// Страница документации ВКонтакте <see href="http://vk.com/dev/account.lookupContacts" />.
 /// </remarks>
 public LookupContactsResult LookupContacts(List<string> contacts, Services service, string mycontact = null, bool? returnAll = null, UsersFields fields = null)
 {
     var parameters = new VkParameters
     {
         { "contacts", contacts },
         { "service", service },
         { "mycontact", mycontact },
         { "return_all", returnAll },
         { "fields", fields }
     };
     return _vk.Call("account.lookupContacts", parameters);
 }
Beispiel #37
0
 public NewsBannedExList GetBannedEx(UsersFields fields = null, NameCase nameCase = null)
 {
     var parameters = new VkParameters
     {
         { "extended", true },
         { "fields", fields },
         { "name_case", nameCase }
     };
     return _vk.Call("newsfeed.getBanned", parameters);
 }
Beispiel #38
0
        /// <summary>
        /// Создает список друзей, который будет использоваться при отправке пользователем приглашений в приложение.
        /// </summary>
        /// <param name="type">Tип создаваемого списка друзей.</param>
        /// <param name="extended">Параметр, определяющий необходимость возвращать расширенную информацию о пользователях.
        /// 0 — возвращаются только идентификаторы;
        /// 1 — будут дополнительно возвращены имя и фамилия. флаг, может принимать значения 1 или 0, по умолчанию 0 (Флаг, может принимать значения 1 или 0, по умолчанию 0).</param>
        /// <param name="count">Количество пользователей в создаваемом списке.</param>
        /// <param name="offset">Смещение относительно первого пользователя для выборки определенного подмножества.</param>
        /// <param name="fields">Список дополнительных полей профилей, которые необходимо вернуть. См. подробное описание.</param>
        /// <returns>
        /// После успешного выполнения возвращает список пользователей.
        /// </returns>
        /// <remarks>
        /// Страница документации ВКонтакте <see href="http://vk.com/dev/apps.getFriendsList" />.
        /// </remarks>
        public VkCollection<User> GetFriendsList(AppRequestType type, bool? extended = null, long? count = null, long? offset = null, UsersFields fields = null)
        {
            var parameters = new VkParameters
            {
                { "extended", extended },
                { "offset", offset },
                { "type", type },
                { "fields", fields }
            };

            if (count <= 5000)
            {
                parameters.Add("count", count);
            }

            return _vk.Call("apps.getFriendsList", parameters).ToVkCollectionOf<User>(x => x);
        }
Beispiel #39
0
 public ReadOnlyCollection<User> GetInvitedUsers(long groupId, out int userCount, long? offset = null, long? count = null, UsersFields fields = null, NameCase nameCase = null)
 {
     VkErrors.ThrowIfNumberIsNegative(() => groupId);
     var parameters = new VkParameters
     {
         { "group_id", groupId },
         { "offset", offset },
         { "count", count },
         { "fields", fields },
         { "name_case", nameCase }
     };
     var response = _vk.Call("groups.getInvitedUsers", parameters);
     userCount = response["count"];
     return response["items"].ToReadOnlyCollectionOf<User>(x => x);
 }
Beispiel #40
0
 internal object GetLongPollHistory(ulong ts, ulong pts, ulong previewLength = 0, bool onlines = false, UsersFields fields = null, ulong eventsLimit = 1000, ulong msgsLimit = 200, ulong? maxMsgId = null)
 {
     var parameters = new VkParameters
     {
         { "ts", ts },
         { "pts", pts },
         { "preview_length", previewLength },
         { "onlines", onlines },
         { "fields", fields },
         { "events_limit", eventsLimit },
         { "msgs_limit", msgsLimit },
         { "max_msg_id", maxMsgId }
     };
     return _vk.Call("messages.getLongPollHistory", parameters);
 }
Beispiel #41
0
		public ReadOnlyCollection<User> GetFriendsList(out long totalCount, AppRequestType type, bool? extended = null, long? count = null, long? offset = null, UsersFields fields = null)
		{
			var parameters = new VkParameters
			{
				{ "extended", extended },
				{ "offset", offset },
				{ "type", type },
				{ "fields", fields }
			};
			if (count <= 5000)
			{
				parameters.Add("count", count);
			}
			var result = _vk.Call("apps.getFriendsList", parameters);
			totalCount = result["count"];
			return result["items"].ToReadOnlyCollectionOf<User>(x => fields == null ? new User {Id = x} : x);
		}
Beispiel #42
0
 /// <inheritdoc />
 public Task <NewsBannedExList> GetBannedExAsync(UsersFields fields = null, NameCase nameCase = null)
 {
     return(TypeHelper.TryInvokeMethodAsync(func: () => _vk.NewsFeed.GetBannedEx(fields: fields, nameCase: nameCase)));
 }
Beispiel #43
0
        public ReadOnlyCollection <User> GetRequests(long groupId, long?offset, long?count, UsersFields fields)
        {
            var parameters = new VkParameters {
                { "group_id", groupId },
                { "offset", offset },
                { "count", count },
                { "fields", fields }
            };

            return(_vk.Call("groups.getRequests", parameters).ToReadOnlyCollectionOf <User>(x => x));
        }
Beispiel #44
0
 /// <inheritdoc />
 public Task <ReadOnlyCollection <User> > GetChatUsersAsync(IEnumerable <long> chatIds, UsersFields fields, NameCase nameCase)
 {
     return(TypeHelper.TryInvokeMethodAsync(func: () =>
                                            GetChatUsers(chatIds: chatIds, fields: fields, nameCase: nameCase)));
 }
Beispiel #45
0
        public ReadOnlyCollection<User> GetMembers(long gid, out int totalCount, uint? count = null, uint? offset = null, GroupsSort sort = null, UsersFields fields = null, GroupsFilters filters = null)
        {
            VkErrors.ThrowIfNumberIsNegative(() => gid);
            var parameters = new GroupsGetMembersParams
            {
                GroupId = gid.ToString(),
                Count = count,
                Offset = offset,
                Sort = sort,
                Fields = fields,
                Filter = filters
            };

            return GetMembers(out totalCount, parameters);
        }
Beispiel #46
0
        /// <summary>
        /// Позволяет искать пользователей ВКонтакте, используя телефонные номера, email-адреса, и идентификаторы пользователей в других сервисах. Найденные пользователи могут быть также в дальнейшем получены методом friends.getSuggestions.
        /// </summary>
        /// <param name="contacts">Список контактов, разделенных через запятую. список слов, разделенных через запятую (Список слов, разделенных через запятую).</param>
        /// <param name="service">Строковой идентификатор сервиса, по контактам которого производится поиск. Может принимать следующие значения: (email, phone, twitter, facebook, odnoklassniki, instagram, google) строка, обязательный параметр (Строка, обязательный параметр).</param>
        /// <param name="mycontact">Контакт текущего пользователя в заданном сервисе. строка (Строка).</param>
        /// <param name="returnAll">1 – возвращать также контакты, найденные ранее с использованием этого сервиса, 0 – возвращать только контакты, найденные с использованием поля contacts. флаг, может принимать значения 1 или 0 (Флаг, может принимать значения 1 или 0).</param>
        /// <param name="fields">Список дополнительных полей, которые необходимо вернуть.
        /// Доступные значения: nickname, domain, sex, bdate, city, country, timezone, photo_50, photo_100, photo_200_orig, has_mobile, contacts, education, online, relation, last_seen, status, can_write_private_message, can_see_all_posts, can_post, universities список слов, разделенных через запятую (Список слов, разделенных через запятую).</param>
        /// <returns>
        /// В качестве результата метод возвращает два списка:
        /// found – список объектов пользователей, расширенных полями contact – контакт, по которому был найден пользователь (не приходит если пользователь был найден при предыдущем использовании метода), request_sent – запрос на добавление в друзья уже был выслан, либо пользователь уже является другом, common_count если этот контакт также был импортирован друзьями или контактами текущего пользователя. Метод также возвращает найденные ранее контакты.
        /// other – список контактов, которые не были найдены. Объект содержит поля contact и common_count если этот контакт также был импортирован друзьями или контактами текущего пользователя.
        /// </returns>
        /// <remarks>
        /// Страница документации ВКонтакте <see href="http://vk.com/dev/account.lookupContacts" />.
        /// </remarks>
        public LookupContactsResult LookupContacts(List <string> contacts, Services service, string mycontact = null, bool?returnAll = null, UsersFields fields = null)
        {
            var parameters = new VkParameters
            {
                { "contacts", contacts },
                { "service", service },
                { "mycontact", mycontact },
                { "return_all", returnAll },
                { "fields", fields }
            };

            return(_vk.Call("account.lookupContacts", parameters));
        }
Beispiel #47
0
		public VkCollection<User> GetInvitedUsers(long groupId, long? offset = null, long? count = null, UsersFields fields = null, NameCase nameCase = null)
		{
			VkErrors.ThrowIfNumberIsNegative(() => groupId);
			var parameters = new VkParameters
			{
				{ "group_id", groupId },
				{ "offset", offset },
				{ "count", count },
				{ "fields", fields },
				{ "name_case", nameCase }
			};

			return _vk.Call("groups.getInvitedUsers", parameters).ToVkCollectionOf<User>(x => x);
		}
Beispiel #48
0
        public ReadOnlyCollection <User> GetFriendsList(out long totalCount, AppRequestType type, bool?extended = null, long?count = null, long?offset = null, UsersFields fields = null)
        {
            var parameters = new VkParameters
            {
                { "extended", extended },
                { "offset", offset },
                { "type", type },
                { "fields", fields }
            };

            if (count <= 5000)
            {
                parameters.Add("count", count);
            }
            var result = _vk.Call("apps.getFriendsList", parameters);

            totalCount = result["count"];
            return(result["items"].ToReadOnlyCollectionOf <User>(x => fields == null ? new User {
                Id = x
            } : x));
        }
Beispiel #49
0
 public ReadOnlyCollection<User> GetInvitedUsers(ulong groupId, out int userCount, uint offset = 0, uint count = 20, UsersFields fields = null, NameCase nameCase = null)
 {
     var parameters = new VkParameters
     {
         { "group_id", groupId },
         { "offset", offset },
         { "count", count },
         { "fields", fields },
         { "name_case", nameCase }
     };
     var response = _vk.Call("groups.getInvitedUsers", parameters);
     userCount = response["count"];
     return response["items"].ToReadOnlyCollectionOf<User>(x => x);
 }
Beispiel #50
0
 /// <inheritdoc />
 public async Task <VkCollection <User> > GetInvitedUsersAsync(long groupId, long?offset = null,
                                                               long?count        = null, UsersFields fields = null,
                                                               NameCase nameCase = null)
 {
     return(await TypeHelper.TryInvokeMethodAsync(() =>
                                                  _vk.Groups.GetInvitedUsers(groupId, offset, count, fields, nameCase)));
 }