Exemplo n.º 1
0
        /// <summary>
        /// Разобрать из json.
        /// </summary>
        /// <param name="response"> Ответ сервера. </param>
        /// <returns> </returns>
        public static NewsUserListItem FromJson(VkResponse response)
        {
            var newsUserListItem = new NewsUserListItem
            {
                Id          = response[key : "id"]
                , Title     = response[key : "title"]
                , NoReposts = response[key : "no_reposts"]
            };

            VkResponseArray sourceIds = response[key : "source_ids"];

            if (sourceIds.Count == 0)
            {
                newsUserListItem.SourceIds = new List <long>();
            }
            else
            {
                newsUserListItem.SourceIds = sourceIds.ToReadOnlyCollectionOf <long>(selector: x => x);
            }

            return(newsUserListItem);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Разобрать из json.
        /// </summary>
        /// <param name="response"> Ответ сервера. </param>
        /// <returns> </returns>
        public static LongPollHistoryResponse FromJson(VkResponse response)
        {
            var fromJson = new LongPollHistoryResponse
            {
                UnreadMessages = response[key : "messages"][key : "count"]
                , Messages     = response[key : "messages"][key : "items"].ToReadOnlyCollectionOf <Message>(selector : x => x)
                , Profiles     = response[key : "profiles"].ToReadOnlyCollectionOf <User>(selector : x => x)
                , Groups       = response[key : "groups"].ToReadOnlyCollectionOf <Group>(selector : x => x)
                , NewPts       = response[key : "new_pts"]
                , More         = response[key : "more"]
            };

            VkResponseArray historys = response[key : "history"];

            foreach (var history in historys)
            {
                VkResponseArray item = history;
                fromJson.History.Add(item: new ReadOnlyCollection <long>(list: item.ToReadOnlyCollectionOf <long>(selector: x => x)));
            }

            return(fromJson);
        }
Exemplo n.º 3
0
        public ReadOnlyCollection <User> GetList(LikeObjectType type, long?ownerId = null, long?itemId = null, string pageUrl = null, string filter = null, bool?friendsOnly = null, bool?extended = null, long?offset = null, int?count = null)
        {
            VkErrors.ThrowIfNumberIsNegative(() => offset);
            VkErrors.ThrowIfNumberIsNegative(() => count);

            var parameters = new VkParameters
            {
                { "type", type },
                { "owner_id", ownerId },
                { "item_id", itemId },
                { "page_url", pageUrl },
                { "filter", filter },
                { "friends_only", friendsOnly },
                { "extended", extended },
                { "offset", offset },
                { "count", count }
            };

            VkResponseArray response = _vk.Call("likes.getList", parameters);

            return(response.ToReadOnlyCollectionOf <User>(x => x));
        }
Exemplo n.º 4
0
        public ReadOnlyCollection <Group> Search([NotNull] string query, out int totalCount, uint?offset = null, uint?count = null, GroupSort sort = GroupSort.Normal, GroupType type = null, uint?countryId = null, uint?cityId = null, bool future = false)
        {
            VkErrors.ThrowIfNullOrEmpty(() => query);

            var parameters = new VkParameters
            {
                { "q", query },
                { "offset", offset },
                { "count", count },
                { "future", future },
                { "sort", sort },
                { "type", type },
                { "country_id", countryId },
                { "city_id", cityId }
            };

            VkResponseArray response = _vk.Call("groups.search", parameters);

            totalCount = response[0];

            return(response.Skip(1).ToReadOnlyCollectionOf <Group>(r => r));
        }
Exemplo n.º 5
0
        public ReadOnlyCollection <User> Search([NotNull] string query, out int itemsCount, ProfileFields fields = null, int count = 20, int offset = 0)
        {
            if (string.IsNullOrEmpty(query))
            {
                throw new ArgumentException("Query can not be null or empty.");
            }

            var parameters = new VkParameters {
                { "q", query }, { "fields", fields }, { "count", count }
            };

            if (offset > 0)
            {
                parameters.Add("offset", offset);
            }

            VkResponseArray response = _vk.Call("users.search", parameters);

            itemsCount = response[0];

            return(response.Skip(1).ToReadOnlyCollectionOf <User>(r => r));
        }
Exemplo n.º 6
0
 /// <summary>Разобрать из json.</summary>
 /// <param name="response">Ответ сервера.</param>
 /// <returns></returns>
 public static Update FromJson(VkResponseArray response)
 {
     var update = new Update();
       var code = (int) response.First();
       switch (code)
       {
     case 4:
       update.Type = typeof (NewMessage);
       update.NewMessage = NewMessage.FromJson(response);
       break;
     case 5:
       update.Type = typeof (EditMessage);
       update.EditMessage = EditMessage.FromJson(response);
       break;
     case 6:
       update.Type = typeof (ReadAllIncomingMessages);
       update.ReadAllIncomingMessages = ReadAllIncomingMessages.FromJson(response);
       break;
     case 7:
       update.Type = typeof (ReadAllOutcomingMessages);
       update.ReadAllOutcomingMessages = ReadAllOutcomingMessages.FromJson(response);
       break;
     case 8:
       update.Type = typeof (FriendBecameOnline);
       update.FriendBecameOnline = FriendBecameOnline.FromJson(response);
       break;
     case 9:
       update.Type = typeof (FriendBecameOffline);
       update.FriendBecameOffline = FriendBecameOffline.FromJson(response);
       break;
     case 61:
       update.Type = typeof (UserTypingInPrivateDialog);
       update.UserTypingInPrivateDialog = UserTypingInPrivateDialog.FromJson(response);
       break;
     default:
       throw new InvalidParameterException($"The type '{(object) code}' of event is not defined.");
       }
       return update;
 }
Exemplo n.º 7
0
        public ReadOnlyCollection <NewsSearchResult> Search(SearchParams @params)
        {
            var parameters = new VkParameters
            {
                { "q", @params.Query },
                { "extended", @params.Extended },
                { "latitude", @params.Latitude },
                { "longitude", @params.Longitude },
                { "start_time", @params.StartTime },
                { "end_time", @params.EndTime },
                { "start_from", @params.StartFrom },
                { "fields", @params.Fields }
            };

            if (@params.Count <= 200)
            {
                parameters.Add("count", @params.Count);
            }
            VkResponseArray response = _vk.Call("newsfeed.search", parameters);

            return(response.ToReadOnlyCollectionOf <NewsSearchResult>(x => x));
        }
Exemplo n.º 8
0
        public ReadOnlyCollection <Video> Search(string query, VideoSort sort, bool isHd = false, bool isAdult = false, VideoFilters filters = null, bool isSearchOwn = false, int?count = null, int?offset = null)
        {
            VkErrors.ThrowIfNullOrEmpty(() => query);
            VkErrors.ThrowIfNumberIsNegative(() => count);
            VkErrors.ThrowIfNumberIsNegative(() => offset);

            var parameters = new VkParameters
            {
                { "q", query },
                { "sort", sort },
                { "hd", isHd },
                { "adult", isAdult },
                { "filters", filters },
                { "search_own", isSearchOwn },
                { "offset", offset },
                { "count", count }
            };

            VkResponseArray response = _vk.Call("video.search", parameters);

            return(response.ToReadOnlyCollectionOf <Video>(x => x));
        }
Exemplo n.º 9
0
        private ReadOnlyCollection <Audio> InternalGet(
            string paramId,
            long id,
            out User user,
            long?albumId             = null,
            IEnumerable <ulong> aids = null,
            bool?needUser            = null,
            uint?count  = null,
            uint?offset = null)
        {
            // todo Порефакторить метод
            var parameters = new VkParameters
            {
                { paramId, id },
                { "album_id", albumId },
                { "aids", aids },
                { "need_user", needUser },
                { "offset", offset }
            };

            if (count <= 6000)
            {
                parameters.Add("count", count);
            }
            VkResponseArray response = _vk.Call("audio.get", parameters);

            IEnumerable <VkResponse> items = response.ToList();

            user = null;
            if (needUser.HasValue && needUser.Value && items.Any())
            {
                user  = items.First();
                items = items.Skip(1);
            }

            return(items.ToReadOnlyCollectionOf <Audio>(r => r));
        }
Exemplo n.º 10
0
        /// <summary>
        /// Разобрать из json.
        /// </summary>
        /// <param name="response"> Ответ сервера. </param>
        /// <returns> </returns>
        public static BotsLongPollHistoryResponse FromJson(VkResponse response)
        {
            if (response.ContainsKey("failed"))
            {
                int code = response["failed"];

                if (code == 1)
                {
                    throw new BotsLongPollOutdateException(response["ts"]);
                }
                if (code == 2)
                {
                    throw new BotsLongPollKeyExpiredException();
                }
                if (code == 3)
                {
                    throw new BotsLongPollInfoLostException();
                }
            }

            var fromJson = new BotsLongPollHistoryResponse
            {
                Ts = response["ts"],
            };

            VkResponseArray updates    = response[key : "updates"];
            var             updateList = new List <GroupUpdate.GroupUpdate>();

            foreach (var update in updates)
            {
                updateList.Add(GroupUpdate.GroupUpdate.FromJson(update));
            }

            fromJson.Updates = updateList;

            return(fromJson);
        }
Exemplo n.º 11
0
        public ReadOnlyCollection <Comment> GetComments(
            long ownerId,
            long postId,
            out int totalCount,
            CommentsSort sort = null,
            bool needLikes    = false,
            int?count         = null,
            int?offset        = null,
            int previewLength = 0)
        {
            VkErrors.ThrowIfNumberIsNegative(() => postId);
            VkErrors.ThrowIfNumberIsNegative(() => offset);
            VkErrors.ThrowIfNumberIsNegative(() => count);
            VkErrors.ThrowIfNumberIsNegative(() => previewLength);

            var parameters = new VkParameters
            {
                { "owner_id", ownerId },
                { "post_id", postId },
                { "need_likes", needLikes },
                { "count", count },
                { "offset", offset },
                { "preview_length", previewLength },
                { "v", _vk.ApiVersion }
            };

            if (sort != null)
            {
                parameters.Add("sort", sort.ToString().ToLowerInvariant());
            }

            VkResponseArray response = _vk.Call("wall.getComments", parameters);

            totalCount = response[0];

            return(response.Skip(1).ToReadOnlyCollectionOf <Comment>(c => c));
        }
Exemplo n.º 12
0
        public SearchDialogsResponse SearchDialogs([NotNull] string query, ProfileFields fields = null, uint limit = 20)
        {
            if (string.IsNullOrEmpty(query))
            {
                throw new ArgumentException("Query can not be null or empty.", "query");
            }
            var parameters = new VkParameters
            {
                { "q", query },
                { "fields", fields },
                { "limit", limit }
            };

            VkResponseArray response = _vk.Call("messages.searchDialogs", parameters);

            var result = new SearchDialogsResponse();

            foreach (var record in response)
            {
                string type = record["type"];
                switch (type)
                {
                case "profile":
                    result.Users.Add(record);
                    break;

                case "chat":
                    result.Chats.Add(record);
                    break;

                case "email":
                    // TODO: Add email support.
                    continue;
                }
            }
            return(result);
        }
Exemplo n.º 13
0
        /// <summary>
        /// Разобрать из json.
        /// </summary>
        /// <param name="response">Ответ сервера.</param>
        /// <returns></returns>
        public static NewsSuggestions FromJson(VkResponse response)
        {
            var newsSuggestions = new NewsSuggestions
            {
                Users  = new List <User>(),
                Groups = new List <Group>()
            };
            VkResponseArray result = response;

            foreach (var item in result)
            {
                switch (item["type"].ToString())
                {
                case "page":
                case "group":
                {
                    Group @group = item;
                    newsSuggestions.Groups.Add(@group);
                }
                break;

                case "profile":
                {
                    User user = item;
                    newsSuggestions.Users.Add(user);
                }
                break;

                default:
                {
                    throw new System.Exception(string.Format("Типа '{0}' не существует. Пожалуйста заведите задачу на сайте проекта: https://github.com/vknet/vk/issues", item["type"]));
                }
                }
            }
            return(newsSuggestions);
        }
Exemplo n.º 14
0
        public ReadOnlyCollection <ulong> GetMembers(string gid, out int totalCount, uint?count = null, uint?offset = null, GroupsSort sort = null, GroupsFields fields = null, GroupsFilters filters = null)
        {
            var parameters = new VkParameters
            {
                { "gid", gid },
                { "offset", offset },
                { "sort", sort },
                { "fields", fields },
                { "filter", filters }
            };

            if (count.HasValue && count.Value > 0 && count.Value < 1000)
            {
                parameters.Add("count", count);
            }

            var response = _vk.Call("groups.getMembers", parameters, true);

            totalCount = response["count"];

            VkResponseArray users = response["users"];

            return(users.ToReadOnlyCollectionOf <ulong>(x => x));
        }
Exemplo n.º 15
0
        public ReadOnlyCollection <Message> GetHistory(
            long id,
            bool isChat,
            out int totalCount,
            int?offset          = null,
            int?count           = null,
            bool?inReverse      = null,
            long?startMessageId = null)
        {
            var parameters = new VkParameters
            {
                { isChat ? "chat_id" : "uid", id },
                { "offset", offset },
                { "count", count },
                { "start_mid", startMessageId },
                { "rev", inReverse }
            };

            VkResponseArray response = _vk.Call("messages.getHistory", parameters);

            totalCount = response[0];

            return(response.Skip(1).ToReadOnlyCollectionOf <Message>(r => r));
        }
Exemplo n.º 16
0
        /// <summary>
        /// Возвращает результаты поиска по статусам. Новости возвращаются в порядке от более новых к более старым.
        /// </summary>
        /// <param name="params">Параметры запроса.</param>
        /// <returns>
        /// Возвращает результат выполнения метода.
        /// </returns>
        /// <remarks>
        /// Страница документации ВКонтакте http://vk.com/dev/newsfeed.search
        /// </remarks>
        public ReadOnlyCollection <NewsSearchResult> Search(NewsFeedSearchParams @params)
        {
            VkResponseArray response = _vk.Call("newsfeed.search", @params);

            return(response.ToReadOnlyCollectionOf <NewsSearchResult>(x => x));
        }
Exemplo n.º 17
0
        public ReadOnlyCollection <long> GetMutual(FriendsGetMutualParams @params)
        {
            VkResponseArray response = _vk.Call("friends.getMutual", @params);

            return(response.ToReadOnlyCollectionOf <long>(x => x));
        }
Exemplo n.º 18
0
        /// <summary>
        /// Возвращает результаты поиска по статусам. Новости возвращаются в порядке от
        /// более новых к более старым.
        /// </summary>
        /// <param name="params"> Параметры запроса. </param>
        /// <returns>
        /// Возвращает результат выполнения метода.
        /// </returns>
        /// <remarks>
        /// Страница документации ВКонтакте http://vk.com/dev/newsfeed.search
        /// </remarks>
        public ReadOnlyCollection <NewsSearchResult> Search(NewsFeedSearchParams @params)
        {
            VkResponseArray response = _vk.Call(methodName: "newsfeed.search", parameters: @params);

            return(response.ToReadOnlyCollectionOf <NewsSearchResult>(selector: x => x));
        }
Exemplo n.º 19
0
        public ReadOnlyCollection <long> GetList(LikesGetListParams @params)
        {
            VkResponseArray response = _vk.Call("likes.getList", @params);

            return(response.ToReadOnlyCollectionOf <long>(x => x));
        }
Exemplo n.º 20
0
        public ReadOnlyCollection <long> GetAppUsers()
        {
            VkResponseArray response = _vk.Call(methodName: "friends.getAppUsers", parameters: VkParameters.Empty);

            return(response.ToReadOnlyCollectionOf <long>(selector: x => x));
        }
Exemplo n.º 21
0
        /// <summary>
        /// Возвращает список идентификаторов общих друзей между парой пользователей.
        /// </summary>
        /// <param name="params"> Входные параметры выборки. </param>
        /// <returns>
        /// После успешного выполнения возвращает список идентификаторов (id) общих друзей
        /// между пользователями с
        /// идентификаторами source_uid и target_uid.
        /// </returns>
        /// <remarks>
        /// Страница документации ВКонтакте http://vk.com/dev/friends.getMutual
        /// </remarks>
        public ReadOnlyCollection <long> GetMutual(FriendsGetMutualParams @params)
        {
            VkResponseArray response = _vk.Call(methodName: "friends.getMutual", parameters: @params);

            return(response.ToReadOnlyCollectionOf <long>(selector: x => x));
        }
Exemplo n.º 22
0
        public ReadOnlyCollection <FriendList> GetLists()
        {
            VkResponseArray response = _vk.Call("friends.getLists", VkParameters.Empty);

            return(response.ToReadOnlyCollectionOf <FriendList>(x => x));
        }
Exemplo n.º 23
0
        public ReadOnlyCollection <long> GetAppUsers()
        {
            VkResponseArray response = _vk.Call("friends.getAppUsers", VkParameters.Empty);

            return(response.ToReadOnlyCollectionOf <long>(x => x));
        }
Exemplo n.º 24
0
        public ReadOnlyCollection <Photo> Save(PhotoSaveParams @params)
        {
            VkResponseArray response = _vk.Call("photos.save", @params);

            return(response.ToReadOnlyCollectionOf <Photo>(x => x));
        }