From 9437818c2a519a6402f1be4e0dcf0106ad5736c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BD=D1=8E=D1=82=D0=B8=D0=BD=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC=20=D0=9D=D0=B8=D0=BA=D0=BE=D0=BB=D0=B0=D0=B5?= =?UTF-8?q?=D0=B2=D0=B8=D1=87?= Date: Wed, 17 Feb 2016 22:53:59 +0300 Subject: [PATCH] =?UTF-8?q?#198=20=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20Likes.GetList()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- VkNet.Tests/Categories/LikesCategoryTest.cs | 120 ++++---- VkNet/Categories/LikesCategory.cs | 278 +++++++++--------- .../RequestParams/Likes/LikesGetListParams.cs | 241 +++++++-------- 3 files changed, 323 insertions(+), 316 deletions(-) diff --git a/VkNet.Tests/Categories/LikesCategoryTest.cs b/VkNet.Tests/Categories/LikesCategoryTest.cs index 3cca68687..b91982904 100644 --- a/VkNet.Tests/Categories/LikesCategoryTest.cs +++ b/VkNet.Tests/Categories/LikesCategoryTest.cs @@ -1,13 +1,13 @@ -using System.Diagnostics.CodeAnalysis; -using System.Linq; -using Moq; -using NUnit.Framework; -using VkNet.Categories; -using VkNet.Enums.SafetyEnums; -using VkNet.Model.RequestParams; -using VkNet.Utils; - -namespace VkNet.Tests.Categories +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using Moq; +using NUnit.Framework; +using VkNet.Categories; +using VkNet.Enums.SafetyEnums; +using VkNet.Model.RequestParams; +using VkNet.Utils; + +namespace VkNet.Tests.Categories { [TestFixture] [SuppressMessage("ReSharper", "PublicMembersMustHaveComments")] @@ -24,11 +24,11 @@ public void IsLiked_NormalCase() { const string url = "https://api.vk.com/method/likes.isLiked?type=post&item_id=701&v=5.44&access_token=token"; const string json = - @"{ - response: { - liked: 1, - copied: 0 - } + @"{ + response: { + liked: 1, + copied: 0 + } }"; var likesCategory = GetMockedLikesCategory(url, json); bool copied; @@ -42,10 +42,10 @@ public void Delete_NormalCase() { const string url = "https://api.vk.com/method/likes.delete?type=post&item_id=701&v=5.44&access_token=token"; const string json = - @"{ - response: { - likes: 4 - } + @"{ + response: { + likes: 4 + } }"; var likesCategory = GetMockedLikesCategory(url, json); var like = likesCategory.Delete(LikeObjectType.Post, 701); @@ -57,10 +57,10 @@ public void Add_NormalCase() { const string url = "https://api.vk.com/method/likes.add?type=post&item_id=701&v=5.44&access_token=token"; const string json = - @"{ - response: { - likes: 5 - } + @"{ + response: { + likes: 5 + } }"; var likesCategory = GetMockedLikesCategory(url, json); var like = likesCategory.Add(new LikesAddParams { Type = LikeObjectType.Post, ItemId = 701 }); @@ -70,13 +70,13 @@ public void Add_NormalCase() [Test] public void GetList_NormalCase() { - const string url = "https://api.vk.com/method/likes.getList?item_id=701&extended=1&v=5.44&access_token=token"; + const string url = "https://api.vk.com/method/likes.getList?item_id=701&v=5.44&access_token=token"; const string json = - @"{ - response: { - count: 5, - items: [32190123, 221634238, 229027572, 210894192, 201173701] - } + @"{ + response: { + count: 5, + items: [32190123, 221634238, 229027572, 210894192, 201173701] + } }"; var likesCategory = GetMockedLikesCategory(url, json); var like = likesCategory.GetList(new LikesGetListParams @@ -91,36 +91,36 @@ public void GetListEx_NormalCase() { const string url = "https://api.vk.com/method/likes.getList?item_id=701&extended=1&v=5.44&access_token=token"; const string json = - @"{ - response: { - count: 5, - items: [{ - type: 'profile', - id: 32190123, - first_name: 'Максим', - last_name: 'Инютин' - }, { - type: 'profile', - id: 221634238, - first_name: 'Александр', - last_name: 'Инютин' - }, { - type: 'profile', - id: 229027572, - first_name: 'Настя', - last_name: 'Зубова' - }, { - type: 'profile', - id: 210894192, - first_name: 'Елизавета', - last_name: 'Емельянова' - }, { - type: 'profile', - id: 201173701, - first_name: 'Даниил', - last_name: 'Богданов' - }] - } + @"{ + response: { + count: 5, + items: [{ + type: 'profile', + id: 32190123, + first_name: 'Максим', + last_name: 'Инютин' + }, { + type: 'profile', + id: 221634238, + first_name: 'Александр', + last_name: 'Инютин' + }, { + type: 'profile', + id: 229027572, + first_name: 'Настя', + last_name: 'Зубова' + }, { + type: 'profile', + id: 210894192, + first_name: 'Елизавета', + last_name: 'Емельянова' + }, { + type: 'profile', + id: 201173701, + first_name: 'Даниил', + last_name: 'Богданов' + }] + } }"; var likesCategory = GetMockedLikesCategory(url, json); var like = likesCategory.GetListEx(new LikesGetListParams @@ -133,5 +133,5 @@ public void GetListEx_NormalCase() Assert.That(like.Users.First().LastName, Is.EqualTo("Инютин")); Assert.That(like.Groups.Count, Is.EqualTo(0)); } - } + } } \ No newline at end of file diff --git a/VkNet/Categories/LikesCategory.cs b/VkNet/Categories/LikesCategory.cs index eb57a74a1..0aebe5344 100644 --- a/VkNet/Categories/LikesCategory.cs +++ b/VkNet/Categories/LikesCategory.cs @@ -1,141 +1,141 @@ -using VkNet.Model.RequestParams; - -namespace VkNet.Categories -{ - using System.Collections.ObjectModel; - - using Enums.SafetyEnums; - using Utils; - using Model; - - /// - /// API для работы с лайками. - /// - public class LikesCategory - { - /// - /// API - /// - private readonly VkApi _vk; - - /// - /// API для работы с лайками. - /// - /// The vk. - internal LikesCategory(VkApi vk) - { - _vk = vk; - } - - /// - /// Получает список идентификаторов пользователей или сообществ, которые добавили заданный объект в свой список Мне нравится. - /// - /// Параметры запроса. - /// - /// Возвращает список идентификаторов пользователей или сообществ, которые добавили заданный объект в свой список Мне нравится. - /// - /// - /// Страница документации ВКонтакте . - /// - [ApiVersion("5.44")] - public ReadOnlyCollection GetList(LikesGetListParams @params) - { - - - VkResponseArray response = _vk.Call("likes.getList", @params); - - return response.ToReadOnlyCollectionOf(x => x); - } - - /// - /// Получает список идентификаторов пользователей или сообществ, которые добавили заданный объект в свой список Мне нравится. - /// - /// Параметры запроса. - /// - /// Возвращает список пользователей и сообществ, которые добавили заданный объект в свой список Мне нравится. - /// - /// - /// Страница документации ВКонтакте . - /// - [ApiVersion("5.44")] - public UserOrGroup GetListEx(LikesGetListParams @params) - { - return _vk.Call("likes.getList", @params, true); +using VkNet.Model.RequestParams; + +namespace VkNet.Categories +{ + using System.Collections.ObjectModel; + + using Enums.SafetyEnums; + using Utils; + using Model; + + /// + /// API для работы с лайками. + /// + public class LikesCategory + { + /// + /// API + /// + private readonly VkApi _vk; + + /// + /// API для работы с лайками. + /// + /// The vk. + internal LikesCategory(VkApi vk) + { + _vk = vk; + } + + /// + /// Получает список идентификаторов пользователей или сообществ, которые добавили заданный объект в свой список Мне нравится. + /// + /// Параметры запроса. + /// + /// Возвращает список идентификаторов пользователей или сообществ, которые добавили заданный объект в свой список Мне нравится. + /// + /// + /// Страница документации ВКонтакте . + /// + [ApiVersion("5.44")] + public ReadOnlyCollection GetList(LikesGetListParams @params) + { + @params.Extended = false; + VkResponseArray response = _vk.Call("likes.getList", @params, true); + + return response.ToReadOnlyCollectionOf(x => x); + } + + /// + /// Получает список идентификаторов пользователей или сообществ, которые добавили заданный объект в свой список Мне нравится. + /// + /// Параметры запроса. + /// + /// Возвращает список пользователей и сообществ, которые добавили заданный объект в свой список Мне нравится. + /// + /// + /// Страница документации ВКонтакте . + /// + [ApiVersion("5.44")] + public UserOrGroup GetListEx(LikesGetListParams @params) + { + @params.Extended = true; + return _vk.Call("likes.getList", @params, true); } - /// - /// Добавляет указанный объект в список Мне нравится текущего пользователя. - /// - /// Параметры запроса. - /// - /// В случае успеха возвращает объект с полем likes, в котором находится текущее количество пользователей, которые добавили данный объект в свой список Мне нравится. - /// - /// - /// Страница документации ВКонтакте . - /// - [ApiVersion("5.44")] - public long Add(LikesAddParams @params) - { - var response = _vk.Call("likes.add", @params); - - return response["likes"]; - } - - /// - /// Удаляет указанный объект из списка Мне нравится текущего пользователя - /// - /// Тип объекта - /// Идентификатор объекта. положительное число, обязательный параметр - /// Идентификатор владельца объекта. целое число, по умолчанию идентификатор текущего пользователя - /// В случае успеха возвращает объект с полем likes, в котором находится текущее количество пользователей, которые добавили данный объект в свой список Мне нравится. - /// - /// Страница документации ВКонтакте . - /// - [ApiVersion("5.44")] - public long Delete(LikeObjectType type, long itemId, long? ownerId = null) - { - var parameters = new VkParameters - { - { "type", type }, - { "item_id", itemId }, - { "owner_id", ownerId } - }; - - var response = _vk.Call("likes.delete", parameters); - - return response["likes"]; - } - /// - /// Проверяет, находится ли объект в списке Мне нравится заданного пользователя. - /// - /// Сделан ли репост текущим пользователем. - /// Тип объекта - /// Идентификатор объекта. положительное число, обязательный параметр - /// Идентификатор пользователя, у которого необходимо проверить наличие объекта в списке «Мне нравится». Если параметр не задан, то считается, что он равен идентификатору текущего пользователя. положительное число, по умолчанию идентификатор текущего пользователя - /// Идентификатор владельца Like-объекта. Если параметр не задан, то считается, что он равен идентификатору текущего пользователя. целое число, по умолчанию идентификатор текущего пользователя - /// - /// В случае успеха возвращает одно из следующих числовых значений: - /// false — указанный Like-объект не входит в список Мне нравится пользователя с идентификатором user_id. - /// true — указанный Like-объект находится в списке Мне нравится пользователя с идентификатором user_id. - /// - /// - /// Страница документации ВКонтакте . - /// - [ApiVersion("5.44")] - public bool IsLiked(out bool copied, LikeObjectType type, long itemId, long? userId = null, long? ownerId = null) - { - var parameters = new VkParameters - { - { "type", type }, - { "item_id", itemId }, - { "user_id", userId }, - { "owner_id", ownerId } - }; - - var resp = _vk.Call("likes.isLiked", parameters); - - copied = resp["copied"]; - return resp["liked"]; - } - } -} + /// + /// Добавляет указанный объект в список Мне нравится текущего пользователя. + /// + /// Параметры запроса. + /// + /// В случае успеха возвращает объект с полем likes, в котором находится текущее количество пользователей, которые добавили данный объект в свой список Мне нравится. + /// + /// + /// Страница документации ВКонтакте . + /// + [ApiVersion("5.44")] + public long Add(LikesAddParams @params) + { + var response = _vk.Call("likes.add", @params); + + return response["likes"]; + } + + /// + /// Удаляет указанный объект из списка Мне нравится текущего пользователя + /// + /// Тип объекта + /// Идентификатор объекта. положительное число, обязательный параметр + /// Идентификатор владельца объекта. целое число, по умолчанию идентификатор текущего пользователя + /// В случае успеха возвращает объект с полем likes, в котором находится текущее количество пользователей, которые добавили данный объект в свой список Мне нравится. + /// + /// Страница документации ВКонтакте . + /// + [ApiVersion("5.44")] + public long Delete(LikeObjectType type, long itemId, long? ownerId = null) + { + var parameters = new VkParameters + { + { "type", type }, + { "item_id", itemId }, + { "owner_id", ownerId } + }; + + var response = _vk.Call("likes.delete", parameters); + + return response["likes"]; + } + /// + /// Проверяет, находится ли объект в списке Мне нравится заданного пользователя. + /// + /// Сделан ли репост текущим пользователем. + /// Тип объекта + /// Идентификатор объекта. положительное число, обязательный параметр + /// Идентификатор пользователя, у которого необходимо проверить наличие объекта в списке «Мне нравится». Если параметр не задан, то считается, что он равен идентификатору текущего пользователя. положительное число, по умолчанию идентификатор текущего пользователя + /// Идентификатор владельца Like-объекта. Если параметр не задан, то считается, что он равен идентификатору текущего пользователя. целое число, по умолчанию идентификатор текущего пользователя + /// + /// В случае успеха возвращает одно из следующих числовых значений: + /// false — указанный Like-объект не входит в список Мне нравится пользователя с идентификатором user_id. + /// true — указанный Like-объект находится в списке Мне нравится пользователя с идентификатором user_id. + /// + /// + /// Страница документации ВКонтакте . + /// + [ApiVersion("5.44")] + public bool IsLiked(out bool copied, LikeObjectType type, long itemId, long? userId = null, long? ownerId = null) + { + var parameters = new VkParameters + { + { "type", type }, + { "item_id", itemId }, + { "user_id", userId }, + { "owner_id", ownerId } + }; + + var resp = _vk.Call("likes.isLiked", parameters); + + copied = resp["copied"]; + return resp["liked"]; + } + } +} diff --git a/VkNet/Model/RequestParams/Likes/LikesGetListParams.cs b/VkNet/Model/RequestParams/Likes/LikesGetListParams.cs index a31083e90..b6d38deec 100644 --- a/VkNet/Model/RequestParams/Likes/LikesGetListParams.cs +++ b/VkNet/Model/RequestParams/Likes/LikesGetListParams.cs @@ -1,117 +1,124 @@ -using System.Security.Policy; -using VkNet.Enums.SafetyEnums; -using VkNet.Utils; - -namespace VkNet.Model.RequestParams -{ - /// - /// Параметры запроса likes.getList - /// - public struct LikesGetListParams - { - /// - /// Параметры запроса likes.getList - /// - public LikesGetListParams(bool gog = true) - { - Type = LikeObjectType.Post; - Filter = LikesFilter.Likes; - OwnerId = null; - ItemId = 0; - PageUrl = null; - FriendsOnly = null; - Offset = null; - Count = null; - SkipOwn = null; - } - /// - /// Тип объекта. - /// - public LikeObjectType Type - { get; set; } - - /// - /// Идентификатор владельца Like-объекта: id пользователя, id сообщества (со знаком «минус») или id приложения. Если параметр type равен sitepage, то в качестве owner_id необходимо передавать id приложения. Если параметр не задан, то считается, что он равен либо идентификатору текущего пользователя, либо идентификатору текущего приложения (если type равен sitepage). - /// - public long? OwnerId - { get; set; } - - /// - /// Идентификатор Like-объекта. Если type равен sitepage, то параметр item_id может содержать значение параметра page_id, используемый при инициализации виджета «Мне нравится». - /// - public long ItemId - { get; set; } - - /// - /// Url страницы, на которой установлен виджет «Мне нравится». Используется вместо параметра item_id, если при размещении виджета не был указан page_id. - /// - public Url PageUrl - { get; set; } - - /// - /// Указывает, следует ли вернуть всех пользователей, добавивших объект в список "Мне нравится" или только тех, которые рассказали о нем друзьям. Параметр может принимать следующие значения:строка. - /// - public LikesFilter Filter - { get; set; } - - /// - /// Указывает, необходимо ли возвращать только пользователей, которые являются друзьями текущего пользователя. - /// - public bool? FriendsOnly - { get; set; } - - /// - /// Смещение, относительно начала списка, для выборки определенного подмножества. Если параметр не задан, то считается, что он равен 0. - /// - public uint? Offset - { get; set; } - - /// - /// Количество возвращаемых идентификаторов пользователей. - /// - public uint? Count - { get; set; } - - /// - /// Не возвращать самого пользователя. - /// - public bool? SkipOwn - { get; set; } - - /// - /// Привести к типу VkParameters. - /// - /// Параметры. - /// - internal static VkParameters ToVkParameters(LikesGetListParams p) - { - var parameters = new VkParameters - { - { "type", p.Type }, - { "owner_id", p.OwnerId }, - { "item_id", p.ItemId }, - { "page_url", p.PageUrl }, - { "filter", p.Filter }, - { "friends_only", p.FriendsOnly }, - { "extended", true }, - { "offset", p.Offset }, - { "skip_own", p.SkipOwn } - }; - if (p.FriendsOnly.HasValue && p.FriendsOnly.Value) - { - if (p.Count <= 100) - { - parameters.Add("count", p.Count); - } - } else - { - if (p.Count <= 1000) - { - parameters.Add("count", p.Count); - } - } - - return parameters; - } - } -} +using System.Security.Policy; +using VkNet.Enums.SafetyEnums; +using VkNet.Utils; + +namespace VkNet.Model.RequestParams +{ + /// + /// Параметры запроса likes.getList + /// + public struct LikesGetListParams + { + /// + /// Параметры запроса likes.getList + /// + public LikesGetListParams(bool gog = true) + { + Type = LikeObjectType.Post; + Filter = LikesFilter.Likes; + OwnerId = null; + ItemId = 0; + PageUrl = null; + FriendsOnly = null; + Offset = null; + Count = null; + SkipOwn = null; + Extended = null; + } + /// + /// Тип объекта. + /// + public LikeObjectType Type + { get; set; } + + /// + /// Идентификатор владельца Like-объекта: id пользователя, id сообщества (со знаком «минус») или id приложения. Если параметр type равен sitepage, то в качестве owner_id необходимо передавать id приложения. Если параметр не задан, то считается, что он равен либо идентификатору текущего пользователя, либо идентификатору текущего приложения (если type равен sitepage). + /// + public long? OwnerId + { get; set; } + + /// + /// Идентификатор Like-объекта. Если type равен sitepage, то параметр item_id может содержать значение параметра page_id, используемый при инициализации виджета «Мне нравится». + /// + public long ItemId + { get; set; } + + /// + /// Url страницы, на которой установлен виджет «Мне нравится». Используется вместо параметра item_id, если при размещении виджета не был указан page_id. + /// + public Url PageUrl + { get; set; } + + /// + /// Указывает, следует ли вернуть всех пользователей, добавивших объект в список "Мне нравится" или только тех, которые рассказали о нем друзьям. Параметр может принимать следующие значения:строка. + /// + public LikesFilter Filter + { get; set; } + + /// + /// Указывает, необходимо ли возвращать только пользователей, которые являются друзьями текущего пользователя. + /// + public bool? FriendsOnly + { get; set; } + + /// + /// Смещение, относительно начала списка, для выборки определенного подмножества. Если параметр не задан, то считается, что он равен 0. + /// + public uint? Offset + { get; set; } + + /// + /// Количество возвращаемых идентификаторов пользователей. + /// + public uint? Count + { get; set; } + + /// + /// Не возвращать самого пользователя. + /// + public bool? SkipOwn + { get; set; } + + /// + /// 1 — возвращать расширенную информацию о пользователях и сообществах из списка поставивших отметку «Мне нравится» или сделавших репост. По умолчанию — 0. + /// + public bool? Extended { get; set; } + + + /// + /// Привести к типу VkParameters. + /// + /// Параметры. + /// + internal static VkParameters ToVkParameters(LikesGetListParams p) + { + var parameters = new VkParameters + { + { "type", p.Type }, + { "owner_id", p.OwnerId }, + { "item_id", p.ItemId }, + { "page_url", p.PageUrl }, + { "filter", p.Filter }, + { "friends_only", p.FriendsOnly }, + { "extended", p.Extended }, + { "offset", p.Offset }, + { "skip_own", p.SkipOwn } + }; + if (p.FriendsOnly.HasValue && p.FriendsOnly.Value) + { + if (p.Count <= 100) + { + parameters.Add("count", p.Count); + } + } else + { + if (p.Count <= 1000) + { + parameters.Add("count", p.Count); + } + } + + return parameters; + } + } +}