예제 #1
0
        public async Task <VkItemsResponse <VkWallEntry> > Get(long ownerId, string filter, int count = 0, int offset = 0)
        {
            var parameters = new Dictionary <string, string>();

            if (ownerId != 0)
            {
                parameters.Add("owner_id", ownerId.ToString());
            }

            if (!string.IsNullOrEmpty(filter))
            {
                parameters.Add("filter", filter);
            }

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

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

            parameters.Add("extended", "1");

            _vkontakte.SignMethod(parameters);

            var response = await VkRequest.GetAsync(VkConst.MethodBase + "wall.get", parameters);

            if (response.SelectToken("response.items") != null)
            {
                var result = new VkItemsResponse <VkWallEntry>();
                result.Items      = (from p in response["response"]["items"] where p.HasValues select VkWallEntry.FromJson(p)).ToList();
                result.TotalCount = response["response"]["count"].Value <int>();

                if (response["response"]["profiles"] != null)
                {
                    var users = (from n in response["response"]["profiles"] select VkProfile.FromJson(n)).ToList();
                    foreach (var entry in result.Items)
                    {
                        entry.Author = users.FirstOrDefault(u => u.Id == entry.SourceId);
                    }
                }

                if (response["response"]["groups"] != null)
                {
                    var groups = (from n in response["response"]["groups"] select VkGroup.FromJson(n)).ToList();
                    foreach (var entry in result.Items.Where(e => e.Author == null))
                    {
                        entry.Author = groups.FirstOrDefault(g => g.Id == Math.Abs(entry.SourceId));
                    }
                }

                return(result);
            }

            return(null);
        }
        public async Task <VkItemsResponse <VkWallEntry> > GetPosts(int count = 0, int offset = 0, bool extended = true)
        {
            if (_vkontakte.AccessToken == null || string.IsNullOrEmpty(_vkontakte.AccessToken.Token) || _vkontakte.AccessToken.HasExpired)
            {
                throw new Exception("Access token is not valid.");
            }

            var parameters = new Dictionary <string, string>();

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

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

            if (extended)
            {
                parameters.Add("extended", "1");
            }

            _vkontakte.SignMethod(parameters);

            var response = await new VkRequest(new Uri(VkConst.MethodBase + "fave.getPosts"), parameters).Execute();

            VkErrorProcessor.ProcessError(response);

            if (response.SelectToken("response.items") != null)
            {
                var result = new VkItemsResponse <VkWallEntry>((from n in response["response"]["items"] select VkWallEntry.FromJson(n)).ToList());

                if (response["response"]["profiles"] != null)
                {
                    var users = (from n in response["response"]["profiles"] select VkProfile.FromJson(n)).ToList();
                    foreach (var entry in result.Items)
                    {
                        entry.Author = users.FirstOrDefault(u => u.Id == entry.SourceId);
                    }
                }

                if (response["response"]["groups"] != null)
                {
                    var groups = (from n in response["response"]["groups"] select VkGroup.FromJson(n)).ToList();
                    foreach (var entry in result.Items.Where(e => e.Author == null))
                    {
                        entry.Author = groups.FirstOrDefault(g => g.Id == Math.Abs(entry.SourceId));
                    }
                }

                return(result);
            }

            return(null);
        }
예제 #3
0
        public async Task<VkItemsResponse<VkWallEntry>> Get(long ownerId, string filter, int count = 0, int offset = 0)
        {
            if (_vkontakte.AccessToken == null || string.IsNullOrEmpty(_vkontakte.AccessToken.Token) || _vkontakte.AccessToken.HasExpired)
                throw new Exception("Access token is not valid.");

            var parameters = new Dictionary<string, string>();

            if (ownerId != 0)
                parameters.Add("owner_id", ownerId.ToString());

            if (!string.IsNullOrEmpty(filter))
                parameters.Add("filter", filter);

            if (count > 0)
                parameters.Add("count", count.ToString());

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

            parameters.Add("extended", "1");

            _vkontakte.SignMethod(parameters);

            var response = await new VkRequest(new Uri(VkConst.MethodBase + "wall.get"), parameters).Execute();

            VkErrorProcessor.ProcessError(response);

            if (response.SelectToken("response.items") != null)
            {
                var result = new VkItemsResponse<VkWallEntry>();
                result.Items = (from p in response["response"]["items"] where p.HasValues select VkWallEntry.FromJson(p)).ToList();
                result.TotalCount = response["response"]["count"].Value<int>();

                if (response["response"]["profiles"] != null)
                {
                    var users = (from n in response["response"]["profiles"] select VkProfile.FromJson(n)).ToList();
                    foreach (var entry in result.Items)
                    {
                        entry.Author = users.FirstOrDefault(u => u.Id == entry.SourceId);
                    }
                }

                if (response["response"]["groups"] != null)
                {
                    var groups = (from n in response["response"]["groups"] select VkGroup.FromJson(n)).ToList();
                    foreach (var entry in result.Items.Where(e => e.Author == null))
                    {
                        entry.Author = groups.FirstOrDefault(g => g.Id == Math.Abs(entry.SourceId));
                    }
                }

                return result;
            }

            return null;
        }
예제 #4
0
        public async Task <VkItemsResponse <VkWallEntry> > GetPosts(int count = 0, int offset = 0, bool extended = true)
        {
            var parameters = new Dictionary <string, string>();

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

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

            if (extended)
            {
                parameters.Add("extended", "1");
            }

            _vkontakte.SignMethod(parameters);

            var response = await VkRequest.GetAsync(VkConst.MethodBase + "fave.getPosts", parameters);

            if (response.SelectToken("response.items") != null)
            {
                var result = new VkItemsResponse <VkWallEntry>((from n in response["response"]["items"] select VkWallEntry.FromJson(n)).ToList());

                if (response["response"]["profiles"] != null)
                {
                    var users = (from n in response["response"]["profiles"] select VkProfile.FromJson(n)).ToList();
                    foreach (var entry in result.Items)
                    {
                        entry.Author = users.FirstOrDefault(u => u.Id == entry.SourceId);
                    }
                }

                if (response["response"]["groups"] != null)
                {
                    var groups = (from n in response["response"]["groups"] select VkGroup.FromJson(n)).ToList();
                    foreach (var entry in result.Items.Where(e => e.Author == null))
                    {
                        entry.Author = groups.FirstOrDefault(g => g.Id == Math.Abs(entry.SourceId));
                    }
                }

                return(result);
            }

            return(null);
        }