From 7fa349d5e99c7508312ef09b2287515f4265e3d2 Mon Sep 17 00:00:00 2001 From: 1dNDN <42769281+1dNDN@users.noreply.github.com> Date: Sat, 11 Nov 2023 22:48:59 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D1=87=D0=B0=D1=81=D1=82=D1=8C=20warning,=20?= =?UTF-8?q?=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82=D1=8C=20=D0=BD=D0=B5?= =?UTF-8?q?=D0=BA=D0=BE=D1=82=D0=BE=D1=80=D1=8B=D0=B5=20=D0=BC=D0=B5=D1=82?= =?UTF-8?q?=D0=BE=D0=B4=D1=8B=20=D0=B8=D0=B7=20#1222=20(#1600)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Список изменений Исправлены warning - Local constant 'expectedUserId' is never - Redundant 'Attribute' suffix - Dictionary lookup can be simplified with 'TryGetValue' - S6608: Indexing at 0 should be used instead of the "Enumerable" extenion method "First" - The keyword 'new' is required on 'AccessKey' because it hides property 'string VkNet.Model.MediaAttachment.AccessKey' - Using directive is not required by the code and can be safely removed - The keyword 'new' is required on 'PhotoId' because it hides property 'long? VkNet.Model.Comment.PhotoId' - Conditional access qualifier expression is known to be not null - Cannot resolve symbol BotsLongPollUpdatesHandler - Code is unreachable Обновил методы из #1222 - ads.getAds - ads.getAdsLayout - apps.get - wall.postAdsStealth - wall.editAdsStealth - video.addToAlbum - friends.areFriends - friends.getMutual ##### Обязательно выполните следующие пункты: - [x] Проверьте что ваш код не содержит конфликтов, и исправьте их по необходимости - [x] Напишите тесты, и обязательно проверьте что не падают другие. ##### Внимание! Pull Request'ы с непройденными тестами не принимаются --- .../BotsLongPoll/BotsLongPollBoardTest.cs | 1 - .../Categories/Market/MarketGetTest.cs | 1 - .../Category/Async/IFriendsCategoryAsync.cs | 7 ++++ .../Abstractions/Category/IFriendsCategory.cs | 2 +- VkNet/Categories/AdsCategory.cs | 6 +++ VkNet/Categories/AppsCategory.cs | 3 ++ .../Categories/Async/AccountCategoryAsync.cs | 1 + VkNet/Categories/Async/AdsCategoryAsync.cs | 1 + .../Async/AppWidgetsCategoryAsync.cs | 1 + VkNet/Categories/Async/AppsCategoryAsync.cs | 1 + VkNet/Categories/Async/AsrCategoryAsync.cs | 1 + VkNet/Categories/Async/AudioCategoryAsync.cs | 1 + VkNet/Categories/Async/AuthCategoryAsync.cs | 1 + VkNet/Categories/Async/BoardCategoryAsync.cs | 1 + .../Categories/Async/DatabaseCategoryAsync.cs | 1 + VkNet/Categories/Async/DocsCategoryAsync.cs | 1 + VkNet/Categories/Async/FaveCategoryAsync.cs | 1 + .../Async/FaveCategoryAsyncObsolete.cs | 1 + .../Categories/Async/FriendsCategoryAsync.cs | 4 +- VkNet/Categories/Async/GiftsCategoryAsync.cs | 1 + VkNet/Categories/Async/GroupsCategoryAsync.cs | 1 + .../Async/LeadFormsCategoryAsync.cs | 1 + VkNet/Categories/Async/LeadsCategoryAsync.cs | 1 + VkNet/Categories/Async/LikesCategoryAsync.cs | 1 + .../Categories/Async/MarketsCategoryAsync.cs | 1 - .../Categories/Async/NewsFeedCategoryAsync.cs | 1 + VkNet/Categories/Async/NotesCategoryAsync.cs | 1 + .../Async/NotificationsCategoryAsync.cs | 1 + VkNet/Categories/Async/OrdersCategoryAsync.cs | 1 + VkNet/Categories/Async/PagesCategoryAsync.cs | 1 + VkNet/Categories/Async/PhotoCategoryAsync.cs | 1 + VkNet/Categories/Async/PlacesCategoryAsync.cs | 1 + .../Categories/Async/PodcastsCategoryAsync.cs | 1 + VkNet/Categories/Async/PollsCategoryAsync.cs | 1 + .../Async/PrettyCardsCategoryAsync.cs | 1 + VkNet/Categories/Async/SearchCategoryAsync.cs | 1 + VkNet/Categories/Async/SecureCategoryAsync.cs | 1 + VkNet/Categories/Async/StatusCategoryAsync.cs | 1 + VkNet/Categories/Async/StorageCategory.cs | 1 + .../Categories/Async/StoriesCategoryAsync.cs | 1 + .../Async/StreamingCategoryAsync.cs | 1 + VkNet/Categories/Async/UsersCategoryAsync.cs | 1 + VkNet/Categories/Async/UtilsCategoryAsync.cs | 1 + VkNet/Categories/Async/VideoCategoryAsync.cs | 1 + VkNet/Categories/Async/WallCategoryAsync.cs | 1 + .../Categories/Async/WidgetsCategoryAsync.cs | 1 + VkNet/Categories/FaveCategoryObsolete.cs | 1 + VkNet/Categories/FriendsCategory.cs | 16 ++++---- VkNet/Categories/VideoCategory.cs | 11 ++--- VkNet/Categories/WallCategory.cs | 9 ++++ VkNet/Enums/DeleteFriendStatus.cs | 2 +- VkNet/Enums/Filters/Settings.cs | 4 +- .../ImplicitFlowVkAuthorization.cs | 2 +- VkNet/Model/Attachments/Post.cs | 2 +- VkNet/Model/ClientInfo.cs | 1 - VkNet/Model/GroupUpdate/PhotoComment.cs | 2 +- VkNet/Model/GroupUpdate/WallReply.cs | 2 +- .../RequestParams/Ads/GetAdsLayoutParams.cs | 6 +++ VkNet/Model/RequestParams/Ads/GetAdsParams.cs | 6 +++ VkNet/Model/RequestParams/App/AppGetParams.cs | 8 ++++ .../RequestParams/Market/MarketGetParams.cs | 1 - .../Market/MarketSearchParams.cs | 1 - .../Wall/EditAdsStealthParams.cs | 16 ++++---- .../Wall/PostAdsStealthParams.cs | 18 ++++++-- .../Results/Podcasts/PodcastSearchInfo.cs | 7 +--- .../JsonConverter/AttachmentJsonConverter.cs | 1 - .../IgnoreUnexpectedArraysConverterBase.cs | 41 ++++++++----------- .../UsersLongPoolUpdatesHandler.cs | 1 + VkNet/Utils/Utilities.cs | 2 +- 69 files changed, 148 insertions(+), 75 deletions(-) diff --git a/VkNet.Tests/Categories/BotsLongPoll/BotsLongPollBoardTest.cs b/VkNet.Tests/Categories/BotsLongPoll/BotsLongPollBoardTest.cs index 1728d679e..1b2259d2d 100644 --- a/VkNet.Tests/Categories/BotsLongPoll/BotsLongPollBoardTest.cs +++ b/VkNet.Tests/Categories/BotsLongPoll/BotsLongPollBoardTest.cs @@ -153,7 +153,6 @@ public void GetBotsLongPollHistory_BoardPostRestoreTest() var expectedGroupId = new GroupId(1234); const int unExpectedGroupId = -1234; - const int expectedUserId = 123; const string expectedText = "test"; var botsLongPollHistory = Api.Groups.GetBotsLongPollHistory(new() diff --git a/VkNet.Tests/Categories/Market/MarketGetTest.cs b/VkNet.Tests/Categories/Market/MarketGetTest.cs index 8220631f4..7e12e59b8 100644 --- a/VkNet.Tests/Categories/Market/MarketGetTest.cs +++ b/VkNet.Tests/Categories/Market/MarketGetTest.cs @@ -1,5 +1,4 @@ using FluentAssertions; -using System.Reflection; using VkNet.Tests.Infrastructure; using Xunit; diff --git a/VkNet/Abstractions/Category/Async/IFriendsCategoryAsync.cs b/VkNet/Abstractions/Category/Async/IFriendsCategoryAsync.cs index 4af33ccf9..a9db3b434 100644 --- a/VkNet/Abstractions/Category/Async/IFriendsCategoryAsync.cs +++ b/VkNet/Abstractions/Category/Async/IFriendsCategoryAsync.cs @@ -107,6 +107,12 @@ Task> GetMutualAsync(FriendsGetMutualParams @pa /// 0 – поле sign возвращать не нужно. флаг, может принимать значения 1 или 0 /// (Флаг, может принимать значения 1 или 0). /// + /// + /// Информация о том, вернуть ли в ответе поле is_request_unread. + /// 1 – необходимо вернуть поле is_request_unread, + /// если есть непросмотренная заявка в друзья. + /// 0 — поле is_request_unread возвращать не нужно. + /// /// Токен отмены операции /// /// После успешного выполнения возвращает массив объектов status, каждый из которых @@ -128,6 +134,7 @@ Task> GetMutualAsync(FriendsGetMutualParams @pa /// Task> AreFriendsAsync([NotNull] IEnumerable userIds, bool? needSign = null, + bool? extended = null, CancellationToken token = default); /// diff --git a/VkNet/Abstractions/Category/IFriendsCategory.cs b/VkNet/Abstractions/Category/IFriendsCategory.cs index 51718a13f..14185466b 100644 --- a/VkNet/Abstractions/Category/IFriendsCategory.cs +++ b/VkNet/Abstractions/Category/IFriendsCategory.cs @@ -25,7 +25,7 @@ public interface IFriendsCategory : IFriendsCategoryAsync ReadOnlyCollection GetMutual(FriendsGetMutualParams @params); /// - ReadOnlyCollection AreFriends([NotNull] IEnumerable userIds, bool? needSign = null); + ReadOnlyCollection AreFriends([NotNull] IEnumerable userIds, bool? needSign = null, bool? extended = null); /// long AddList(string name, IEnumerable userIds); diff --git a/VkNet/Categories/AdsCategory.cs b/VkNet/Categories/AdsCategory.cs index aa7e18508..be2cc058a 100644 --- a/VkNet/Categories/AdsCategory.cs +++ b/VkNet/Categories/AdsCategory.cs @@ -269,6 +269,9 @@ public ReadOnlyCollection GetAds(GetAdsParams getAdsParams) => _vk.Call GetAdsLayout(GetAdsLayoutParams getAdsLayoutPa { "include_deleted", getAdsLayoutParams.IncludeDeleted }, + { + "only_deleted", getAdsLayoutParams.OnlyDeleted + }, { "limit", getAdsLayoutParams.Limit }, diff --git a/VkNet/Categories/AppsCategory.cs b/VkNet/Categories/AppsCategory.cs index ac3602af3..f45332f9e 100644 --- a/VkNet/Categories/AppsCategory.cs +++ b/VkNet/Categories/AppsCategory.cs @@ -64,6 +64,9 @@ public AppGetObject Get(AppGetParams @params, bool skipAuthorization = false) { return _vk.Call("apps.get", new() { + { + "app_id", @params.AppId + }, { "app_ids", @params.AppIds }, diff --git a/VkNet/Categories/Async/AccountCategoryAsync.cs b/VkNet/Categories/Async/AccountCategoryAsync.cs index 9db58fb18..87895024d 100644 --- a/VkNet/Categories/Async/AccountCategoryAsync.cs +++ b/VkNet/Categories/Async/AccountCategoryAsync.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Enums.Filters; using VkNet.Enums.StringEnums; using VkNet.Model; diff --git a/VkNet/Categories/Async/AdsCategoryAsync.cs b/VkNet/Categories/Async/AdsCategoryAsync.cs index 3d5888d66..dec1946a8 100644 --- a/VkNet/Categories/Async/AdsCategoryAsync.cs +++ b/VkNet/Categories/Async/AdsCategoryAsync.cs @@ -2,6 +2,7 @@ using System.Collections.ObjectModel; using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Enums; using VkNet.Enums.StringEnums; using VkNet.Model; diff --git a/VkNet/Categories/Async/AppWidgetsCategoryAsync.cs b/VkNet/Categories/Async/AppWidgetsCategoryAsync.cs index 8b616b356..55da0fefa 100644 --- a/VkNet/Categories/Async/AppWidgetsCategoryAsync.cs +++ b/VkNet/Categories/Async/AppWidgetsCategoryAsync.cs @@ -1,6 +1,7 @@ using System.Collections.ObjectModel; using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Enums.SafetyEnums; using VkNet.Enums.StringEnums; using VkNet.Model; diff --git a/VkNet/Categories/Async/AppsCategoryAsync.cs b/VkNet/Categories/Async/AppsCategoryAsync.cs index 9aa2f5536..ee9fc0636 100644 --- a/VkNet/Categories/Async/AppsCategoryAsync.cs +++ b/VkNet/Categories/Async/AppsCategoryAsync.cs @@ -1,5 +1,6 @@ using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Enums.Filters; using VkNet.Enums.StringEnums; using VkNet.Model; diff --git a/VkNet/Categories/Async/AsrCategoryAsync.cs b/VkNet/Categories/Async/AsrCategoryAsync.cs index 5779a5c9b..c8a2e53a8 100644 --- a/VkNet/Categories/Async/AsrCategoryAsync.cs +++ b/VkNet/Categories/Async/AsrCategoryAsync.cs @@ -1,5 +1,6 @@ using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Enums.StringEnums; using VkNet.Model; using VkNet.Utils; diff --git a/VkNet/Categories/Async/AudioCategoryAsync.cs b/VkNet/Categories/Async/AudioCategoryAsync.cs index 22ba02e18..82534e83a 100644 --- a/VkNet/Categories/Async/AudioCategoryAsync.cs +++ b/VkNet/Categories/Async/AudioCategoryAsync.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Enums; using VkNet.Enums.Filters; using VkNet.Model; diff --git a/VkNet/Categories/Async/AuthCategoryAsync.cs b/VkNet/Categories/Async/AuthCategoryAsync.cs index 6730b07db..93260ef1c 100644 --- a/VkNet/Categories/Async/AuthCategoryAsync.cs +++ b/VkNet/Categories/Async/AuthCategoryAsync.cs @@ -1,5 +1,6 @@ using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Model; using VkNet.Utils; diff --git a/VkNet/Categories/Async/BoardCategoryAsync.cs b/VkNet/Categories/Async/BoardCategoryAsync.cs index 83b22bd5c..89f903276 100644 --- a/VkNet/Categories/Async/BoardCategoryAsync.cs +++ b/VkNet/Categories/Async/BoardCategoryAsync.cs @@ -1,5 +1,6 @@ using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Model; using VkNet.Utils; diff --git a/VkNet/Categories/Async/DatabaseCategoryAsync.cs b/VkNet/Categories/Async/DatabaseCategoryAsync.cs index f25c6afaf..34ab67163 100644 --- a/VkNet/Categories/Async/DatabaseCategoryAsync.cs +++ b/VkNet/Categories/Async/DatabaseCategoryAsync.cs @@ -2,6 +2,7 @@ using System.Collections.ObjectModel; using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Enums; using VkNet.Model; using VkNet.Utils; diff --git a/VkNet/Categories/Async/DocsCategoryAsync.cs b/VkNet/Categories/Async/DocsCategoryAsync.cs index 06396b3cb..d4011c906 100644 --- a/VkNet/Categories/Async/DocsCategoryAsync.cs +++ b/VkNet/Categories/Async/DocsCategoryAsync.cs @@ -2,6 +2,7 @@ using System.Collections.ObjectModel; using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Enums; using VkNet.Enums.StringEnums; using VkNet.Model; diff --git a/VkNet/Categories/Async/FaveCategoryAsync.cs b/VkNet/Categories/Async/FaveCategoryAsync.cs index 0686f3f25..3555ff90a 100644 --- a/VkNet/Categories/Async/FaveCategoryAsync.cs +++ b/VkNet/Categories/Async/FaveCategoryAsync.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Enums.StringEnums; using VkNet.Model; using VkNet.Utils; diff --git a/VkNet/Categories/Async/FaveCategoryAsyncObsolete.cs b/VkNet/Categories/Async/FaveCategoryAsyncObsolete.cs index fe9bc3b64..8c56d0e18 100644 --- a/VkNet/Categories/Async/FaveCategoryAsyncObsolete.cs +++ b/VkNet/Categories/Async/FaveCategoryAsyncObsolete.cs @@ -1,6 +1,7 @@ using System; using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Model; using VkNet.Utils; diff --git a/VkNet/Categories/Async/FriendsCategoryAsync.cs b/VkNet/Categories/Async/FriendsCategoryAsync.cs index 62a93aff9..5050c184f 100644 --- a/VkNet/Categories/Async/FriendsCategoryAsync.cs +++ b/VkNet/Categories/Async/FriendsCategoryAsync.cs @@ -2,6 +2,7 @@ using System.Collections.ObjectModel; using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Enums; using VkNet.Enums.Filters; using VkNet.Enums.StringEnums; @@ -39,9 +40,10 @@ public Task> GetMutualAsync(FriendsGetMutualPar /// public Task> AreFriendsAsync(IEnumerable userIds, bool? needSign = null, + bool? extended = null, CancellationToken token = default) => TypeHelper.TryInvokeMethodAsync(() => - AreFriends(userIds, needSign), token); + AreFriends(userIds, needSign, extended), token); /// public Task AddListAsync(string name, diff --git a/VkNet/Categories/Async/GiftsCategoryAsync.cs b/VkNet/Categories/Async/GiftsCategoryAsync.cs index abd72d48e..ec15b2286 100644 --- a/VkNet/Categories/Async/GiftsCategoryAsync.cs +++ b/VkNet/Categories/Async/GiftsCategoryAsync.cs @@ -1,5 +1,6 @@ using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Model; using VkNet.Utils; diff --git a/VkNet/Categories/Async/GroupsCategoryAsync.cs b/VkNet/Categories/Async/GroupsCategoryAsync.cs index bc174be42..cfc305548 100644 --- a/VkNet/Categories/Async/GroupsCategoryAsync.cs +++ b/VkNet/Categories/Async/GroupsCategoryAsync.cs @@ -3,6 +3,7 @@ using System.Collections.ObjectModel; using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Enums.Filters; using VkNet.Enums.StringEnums; using VkNet.Model; diff --git a/VkNet/Categories/Async/LeadFormsCategoryAsync.cs b/VkNet/Categories/Async/LeadFormsCategoryAsync.cs index 577fea533..6e3514fe2 100644 --- a/VkNet/Categories/Async/LeadFormsCategoryAsync.cs +++ b/VkNet/Categories/Async/LeadFormsCategoryAsync.cs @@ -2,6 +2,7 @@ using System.Collections.ObjectModel; using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions.Category; using VkNet.Model; using VkNet.Utils; diff --git a/VkNet/Categories/Async/LeadsCategoryAsync.cs b/VkNet/Categories/Async/LeadsCategoryAsync.cs index bd5ba33a5..03fba65d1 100644 --- a/VkNet/Categories/Async/LeadsCategoryAsync.cs +++ b/VkNet/Categories/Async/LeadsCategoryAsync.cs @@ -1,6 +1,7 @@ using System.Collections.ObjectModel; using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Model; using VkNet.Utils; diff --git a/VkNet/Categories/Async/LikesCategoryAsync.cs b/VkNet/Categories/Async/LikesCategoryAsync.cs index 282b48025..3ef595ea6 100644 --- a/VkNet/Categories/Async/LikesCategoryAsync.cs +++ b/VkNet/Categories/Async/LikesCategoryAsync.cs @@ -1,5 +1,6 @@ using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Enums.StringEnums; using VkNet.Model; using VkNet.Utils; diff --git a/VkNet/Categories/Async/MarketsCategoryAsync.cs b/VkNet/Categories/Async/MarketsCategoryAsync.cs index 19b0ecef7..1d36390f9 100644 --- a/VkNet/Categories/Async/MarketsCategoryAsync.cs +++ b/VkNet/Categories/Async/MarketsCategoryAsync.cs @@ -1,4 +1,3 @@ -using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; diff --git a/VkNet/Categories/Async/NewsFeedCategoryAsync.cs b/VkNet/Categories/Async/NewsFeedCategoryAsync.cs index 297ecd7b4..1c7849c21 100644 --- a/VkNet/Categories/Async/NewsFeedCategoryAsync.cs +++ b/VkNet/Categories/Async/NewsFeedCategoryAsync.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Enums.Filters; using VkNet.Enums.StringEnums; using VkNet.Model; diff --git a/VkNet/Categories/Async/NotesCategoryAsync.cs b/VkNet/Categories/Async/NotesCategoryAsync.cs index 918817b47..b5b7f074b 100644 --- a/VkNet/Categories/Async/NotesCategoryAsync.cs +++ b/VkNet/Categories/Async/NotesCategoryAsync.cs @@ -1,5 +1,6 @@ using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Model; using VkNet.Utils; diff --git a/VkNet/Categories/Async/NotificationsCategoryAsync.cs b/VkNet/Categories/Async/NotificationsCategoryAsync.cs index 0d791bbf5..b21e9ddb9 100644 --- a/VkNet/Categories/Async/NotificationsCategoryAsync.cs +++ b/VkNet/Categories/Async/NotificationsCategoryAsync.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Model; using VkNet.Utils; diff --git a/VkNet/Categories/Async/OrdersCategoryAsync.cs b/VkNet/Categories/Async/OrdersCategoryAsync.cs index 5ae4edad0..ea8bba0c3 100644 --- a/VkNet/Categories/Async/OrdersCategoryAsync.cs +++ b/VkNet/Categories/Async/OrdersCategoryAsync.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Enums.StringEnums; using VkNet.Model; using VkNet.Utils; diff --git a/VkNet/Categories/Async/PagesCategoryAsync.cs b/VkNet/Categories/Async/PagesCategoryAsync.cs index 8f80b4b97..3331520ae 100644 --- a/VkNet/Categories/Async/PagesCategoryAsync.cs +++ b/VkNet/Categories/Async/PagesCategoryAsync.cs @@ -2,6 +2,7 @@ using System.Collections.ObjectModel; using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Enums; using VkNet.Model; using VkNet.Utils; diff --git a/VkNet/Categories/Async/PhotoCategoryAsync.cs b/VkNet/Categories/Async/PhotoCategoryAsync.cs index 732d85b7d..292794684 100644 --- a/VkNet/Categories/Async/PhotoCategoryAsync.cs +++ b/VkNet/Categories/Async/PhotoCategoryAsync.cs @@ -2,6 +2,7 @@ using System.Collections.ObjectModel; using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Enums; using VkNet.Model; using VkNet.Utils; diff --git a/VkNet/Categories/Async/PlacesCategoryAsync.cs b/VkNet/Categories/Async/PlacesCategoryAsync.cs index 2bd6e2550..043860f81 100644 --- a/VkNet/Categories/Async/PlacesCategoryAsync.cs +++ b/VkNet/Categories/Async/PlacesCategoryAsync.cs @@ -2,6 +2,7 @@ using System.Collections.ObjectModel; using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Model; using VkNet.Utils; diff --git a/VkNet/Categories/Async/PodcastsCategoryAsync.cs b/VkNet/Categories/Async/PodcastsCategoryAsync.cs index 9fd57e10d..6392d3c43 100644 --- a/VkNet/Categories/Async/PodcastsCategoryAsync.cs +++ b/VkNet/Categories/Async/PodcastsCategoryAsync.cs @@ -2,6 +2,7 @@ using System.Collections.ObjectModel; using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Model; using VkNet.Utils; diff --git a/VkNet/Categories/Async/PollsCategoryAsync.cs b/VkNet/Categories/Async/PollsCategoryAsync.cs index 0ac8cde08..1129c6fa3 100644 --- a/VkNet/Categories/Async/PollsCategoryAsync.cs +++ b/VkNet/Categories/Async/PollsCategoryAsync.cs @@ -1,6 +1,7 @@ using System.Collections.ObjectModel; using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Model; using VkNet.Utils; diff --git a/VkNet/Categories/Async/PrettyCardsCategoryAsync.cs b/VkNet/Categories/Async/PrettyCardsCategoryAsync.cs index 1d818a966..7b2a9528c 100644 --- a/VkNet/Categories/Async/PrettyCardsCategoryAsync.cs +++ b/VkNet/Categories/Async/PrettyCardsCategoryAsync.cs @@ -2,6 +2,7 @@ using System.Collections.ObjectModel; using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Model; using VkNet.Utils; diff --git a/VkNet/Categories/Async/SearchCategoryAsync.cs b/VkNet/Categories/Async/SearchCategoryAsync.cs index 0304e6b91..bc2428268 100644 --- a/VkNet/Categories/Async/SearchCategoryAsync.cs +++ b/VkNet/Categories/Async/SearchCategoryAsync.cs @@ -1,5 +1,6 @@ using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Model; using VkNet.Utils; diff --git a/VkNet/Categories/Async/SecureCategoryAsync.cs b/VkNet/Categories/Async/SecureCategoryAsync.cs index b34af9cfe..d9c53f288 100644 --- a/VkNet/Categories/Async/SecureCategoryAsync.cs +++ b/VkNet/Categories/Async/SecureCategoryAsync.cs @@ -3,6 +3,7 @@ using System.Collections.ObjectModel; using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Model; using VkNet.Utils; diff --git a/VkNet/Categories/Async/StatusCategoryAsync.cs b/VkNet/Categories/Async/StatusCategoryAsync.cs index 0800710cb..abe3cbd6e 100644 --- a/VkNet/Categories/Async/StatusCategoryAsync.cs +++ b/VkNet/Categories/Async/StatusCategoryAsync.cs @@ -1,5 +1,6 @@ using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Model; using VkNet.Utils; diff --git a/VkNet/Categories/Async/StorageCategory.cs b/VkNet/Categories/Async/StorageCategory.cs index 980121e30..b690a170c 100644 --- a/VkNet/Categories/Async/StorageCategory.cs +++ b/VkNet/Categories/Async/StorageCategory.cs @@ -2,6 +2,7 @@ using System.Collections.ObjectModel; using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Model; using VkNet.Utils; diff --git a/VkNet/Categories/Async/StoriesCategoryAsync.cs b/VkNet/Categories/Async/StoriesCategoryAsync.cs index 94b938bbc..2b91bf1e1 100644 --- a/VkNet/Categories/Async/StoriesCategoryAsync.cs +++ b/VkNet/Categories/Async/StoriesCategoryAsync.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Model; using VkNet.Utils; diff --git a/VkNet/Categories/Async/StreamingCategoryAsync.cs b/VkNet/Categories/Async/StreamingCategoryAsync.cs index 1fd065e0b..13b138252 100644 --- a/VkNet/Categories/Async/StreamingCategoryAsync.cs +++ b/VkNet/Categories/Async/StreamingCategoryAsync.cs @@ -2,6 +2,7 @@ using System.Collections.ObjectModel; using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Enums.StringEnums; using VkNet.Model; using VkNet.Utils; diff --git a/VkNet/Categories/Async/UsersCategoryAsync.cs b/VkNet/Categories/Async/UsersCategoryAsync.cs index 281d200d8..74aba7cd8 100644 --- a/VkNet/Categories/Async/UsersCategoryAsync.cs +++ b/VkNet/Categories/Async/UsersCategoryAsync.cs @@ -2,6 +2,7 @@ using System.Collections.ObjectModel; using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Enums.Filters; using VkNet.Enums.StringEnums; using VkNet.Model; diff --git a/VkNet/Categories/Async/UtilsCategoryAsync.cs b/VkNet/Categories/Async/UtilsCategoryAsync.cs index c929dcadd..dc730c711 100644 --- a/VkNet/Categories/Async/UtilsCategoryAsync.cs +++ b/VkNet/Categories/Async/UtilsCategoryAsync.cs @@ -1,6 +1,7 @@ using System; using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Model; using VkNet.Utils; diff --git a/VkNet/Categories/Async/VideoCategoryAsync.cs b/VkNet/Categories/Async/VideoCategoryAsync.cs index ba8b3702d..a7f3e4ea3 100644 --- a/VkNet/Categories/Async/VideoCategoryAsync.cs +++ b/VkNet/Categories/Async/VideoCategoryAsync.cs @@ -2,6 +2,7 @@ using System.Collections.ObjectModel; using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Enums; using VkNet.Enums.SafetyEnums; using VkNet.Model; diff --git a/VkNet/Categories/Async/WallCategoryAsync.cs b/VkNet/Categories/Async/WallCategoryAsync.cs index b96ea2bfd..4aa5e6996 100644 --- a/VkNet/Categories/Async/WallCategoryAsync.cs +++ b/VkNet/Categories/Async/WallCategoryAsync.cs @@ -2,6 +2,7 @@ using System.Collections.ObjectModel; using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Enums; using VkNet.Enums.Filters; using VkNet.Model; diff --git a/VkNet/Categories/Async/WidgetsCategoryAsync.cs b/VkNet/Categories/Async/WidgetsCategoryAsync.cs index f56dd43b9..67eef55dc 100644 --- a/VkNet/Categories/Async/WidgetsCategoryAsync.cs +++ b/VkNet/Categories/Async/WidgetsCategoryAsync.cs @@ -1,5 +1,6 @@ using System.Threading; using System.Threading.Tasks; +using VkNet.Abstractions; using VkNet.Model; using VkNet.Utils; diff --git a/VkNet/Categories/FaveCategoryObsolete.cs b/VkNet/Categories/FaveCategoryObsolete.cs index 64e29de68..9cc8e2062 100644 --- a/VkNet/Categories/FaveCategoryObsolete.cs +++ b/VkNet/Categories/FaveCategoryObsolete.cs @@ -1,4 +1,5 @@ using System; +using VkNet.Abstractions; using VkNet.Model; using VkNet.Utils; diff --git a/VkNet/Categories/FriendsCategory.cs b/VkNet/Categories/FriendsCategory.cs index f91ce119e..474370b8b 100644 --- a/VkNet/Categories/FriendsCategory.cs +++ b/VkNet/Categories/FriendsCategory.cs @@ -104,19 +104,14 @@ public FriendOnline GetOnline(FriendsGetOnlineParams @params) /// public ReadOnlyCollection GetMutual(FriendsGetMutualParams @params) { - if (@params.TargetUid.HasValue) - { - @params.TargetUids = new[] - { - @params.TargetUid.Value - }; - } - return _vk.Call>("friends.getMutual", new() { { "source_uid", @params.SourceUid }, + { + "target_uid", @params.TargetUid + }, { "target_uids", @params.TargetUids }, @@ -134,7 +129,7 @@ public ReadOnlyCollection GetMutual(FriendsGetMutualParams @params /// [Pure] - public ReadOnlyCollection AreFriends(IEnumerable userIds, bool? needSign = null) + public ReadOnlyCollection AreFriends(IEnumerable userIds, bool? needSign = null, bool? extended = null) { if (userIds is null) { @@ -148,6 +143,9 @@ public ReadOnlyCollection AreFriends(IEnumerable userIds }, { "need_sign", needSign + }, + { + "extended", extended } }; diff --git a/VkNet/Categories/VideoCategory.cs b/VkNet/Categories/VideoCategory.cs index 1f83ded35..62cc145b8 100644 --- a/VkNet/Categories/VideoCategory.cs +++ b/VkNet/Categories/VideoCategory.cs @@ -574,19 +574,14 @@ public bool ReorderAlbums(long albumId, long? ownerId, long? before, long? after public VkCollection AddToAlbum(long ownerId, long videoId, IEnumerable albumIds, long? targetId = null, long? albumId = null) { - if (albumIds is null && albumId.HasValue) - { - albumIds = new[] - { - albumId.Value.ToString() - }; - } - var parameters = new VkParameters { { "target_id", targetId }, + { + "album_id", albumId + }, { "album_ids", albumIds }, diff --git a/VkNet/Categories/WallCategory.cs b/VkNet/Categories/WallCategory.cs index f62e42385..d1cb89a7b 100644 --- a/VkNet/Categories/WallCategory.cs +++ b/VkNet/Categories/WallCategory.cs @@ -610,11 +610,17 @@ public bool ReportComment(long ownerId, long commentId, ReportReason? reason) { "place_id", @params.PlaceId }, + { + "link_button", @params.LinkButton + }, { "link_title", @params.LinkTitle }, { "link_image", @params.LinkImage + }, + { + "link_video", @params.LinkVideo } }); @@ -653,6 +659,9 @@ public bool ReportComment(long ownerId, long commentId, ReportReason? reason) }, { "link_button", @params.LinkButton + }, + { + "link_video", @params.LinkVideo } }); diff --git a/VkNet/Enums/DeleteFriendStatus.cs b/VkNet/Enums/DeleteFriendStatus.cs index 938190ddf..0dc9c8526 100644 --- a/VkNet/Enums/DeleteFriendStatus.cs +++ b/VkNet/Enums/DeleteFriendStatus.cs @@ -5,7 +5,7 @@ namespace VkNet.Enums; /// /// Возвращаемый статус после удаления пользователя из списка друзей /// -[VkNetIgnoreDefaultValueAttribute] +[VkNetIgnoreDefaultValue] public enum DeleteFriendStatus { /// diff --git a/VkNet/Enums/Filters/Settings.cs b/VkNet/Enums/Filters/Settings.cs index 5488d5e77..0ceae551c 100644 --- a/VkNet/Enums/Filters/Settings.cs +++ b/VkNet/Enums/Filters/Settings.cs @@ -230,11 +230,11 @@ private static Settings GetByName(string name) { var n = name.ToLower(); - if (MaskMap.ContainsKey(key: n)) + if (MaskMap.TryGetValue(n, out var value)) { return new() { - Mask = MaskMap[key: n], + Mask = value, _settings = new() { n diff --git a/VkNet/Infrastructure/Authorization/ImplicitFlow/ImplicitFlowVkAuthorization.cs b/VkNet/Infrastructure/Authorization/ImplicitFlow/ImplicitFlowVkAuthorization.cs index d7bcc6caa..5eba7c5c6 100644 --- a/VkNet/Infrastructure/Authorization/ImplicitFlow/ImplicitFlowVkAuthorization.cs +++ b/VkNet/Infrastructure/Authorization/ImplicitFlow/ImplicitFlowVkAuthorization.cs @@ -137,5 +137,5 @@ private static Dictionary GetParams(string query) => query.Split "&" }, StringSplitOptions.RemoveEmptyEntries) .Select(q => q.Split('=')) - .ToDictionary(x => x.First(), x => x.Last()); + .ToDictionary(x => x[0], x => x[x.Length - 1]); } \ No newline at end of file diff --git a/VkNet/Model/Attachments/Post.cs b/VkNet/Model/Attachments/Post.cs index 2fb592b08..6db6a64e5 100644 --- a/VkNet/Model/Attachments/Post.cs +++ b/VkNet/Model/Attachments/Post.cs @@ -224,7 +224,7 @@ public class Post : MediaAttachment /// Ключ доступа /// [JsonProperty("access_key")] - public string AccessKey { get; set; } + public new string AccessKey { get; set; } /// /// Информация о записи VK Donut. diff --git a/VkNet/Model/ClientInfo.cs b/VkNet/Model/ClientInfo.cs index 2353d50d2..2f9602e63 100644 --- a/VkNet/Model/ClientInfo.cs +++ b/VkNet/Model/ClientInfo.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using Newtonsoft.Json; using VkNet.Enums; using VkNet.Enums.StringEnums; diff --git a/VkNet/Model/GroupUpdate/PhotoComment.cs b/VkNet/Model/GroupUpdate/PhotoComment.cs index 1a7d5d90e..c25baf446 100644 --- a/VkNet/Model/GroupUpdate/PhotoComment.cs +++ b/VkNet/Model/GroupUpdate/PhotoComment.cs @@ -15,7 +15,7 @@ public class PhotoComment : Comment, IGroupUpdate /// Идентификатор фотографии /// [JsonProperty("photo_id")] - public long? PhotoId { get; set; } + public new long? PhotoId { get; set; } /// /// Идентификатор владельца фотографии diff --git a/VkNet/Model/GroupUpdate/WallReply.cs b/VkNet/Model/GroupUpdate/WallReply.cs index 108c5927a..46c4276c2 100644 --- a/VkNet/Model/GroupUpdate/WallReply.cs +++ b/VkNet/Model/GroupUpdate/WallReply.cs @@ -15,7 +15,7 @@ public class WallReplyGroupUpdate : Comment, IGroupUpdate /// Идентификатор записи /// [JsonProperty("post_id")] - public long? PostId { get; set; } + public new long? PostId { get; set; } /// /// Идентификатор владельца записи diff --git a/VkNet/Model/RequestParams/Ads/GetAdsLayoutParams.cs b/VkNet/Model/RequestParams/Ads/GetAdsLayoutParams.cs index 271611547..600fa1fb1 100644 --- a/VkNet/Model/RequestParams/Ads/GetAdsLayoutParams.cs +++ b/VkNet/Model/RequestParams/Ads/GetAdsLayoutParams.cs @@ -44,6 +44,12 @@ public class GetAdsLayoutParams [JsonProperty("include_deleted")] public bool? IncludeDeleted { get; set; } + /// + /// Флаг, задающий вывод только архивных объявлений. 0 — выводить все объявления; 1 — выводить только архивные объявления. + /// + [JsonProperty("only_deleted")] + public bool? OnlyDeleted { get; set; } + /// /// Ограничение на количество возвращаемых объявлений. Используется, только если параметр ad_ids равен null, а параметр campaign_ids содержит id только одной кампании. целое число /// diff --git a/VkNet/Model/RequestParams/Ads/GetAdsParams.cs b/VkNet/Model/RequestParams/Ads/GetAdsParams.cs index 8effcd237..29c423348 100644 --- a/VkNet/Model/RequestParams/Ads/GetAdsParams.cs +++ b/VkNet/Model/RequestParams/Ads/GetAdsParams.cs @@ -28,6 +28,12 @@ public class GetAdsParams [JsonProperty("include_deleted")] public bool? IncludeDeleted { get; set; } + /// + /// Флаг, задающий вывод только архивных объявлений. 0 — выводить все объявления; 1 — выводить только архивные объявления. + /// + [JsonProperty("only_deleted")] + public bool? OnlyDeleted { get; set; } + /// /// Фильтр по рекламным кампаниям. /// Сериализованный JSON-массив, содержащий id кампаний.Если параметр равен null, то будут выводиться рекламные объявления всех кампаний. diff --git a/VkNet/Model/RequestParams/App/AppGetParams.cs b/VkNet/Model/RequestParams/App/AppGetParams.cs index a5d442e55..9e23055f9 100644 --- a/VkNet/Model/RequestParams/App/AppGetParams.cs +++ b/VkNet/Model/RequestParams/App/AppGetParams.cs @@ -12,6 +12,14 @@ namespace VkNet.Model; [Serializable] public class AppGetParams { + /// + /// Идентификатор приложения, данные которого необходимо получить. + /// Если этот параметр и параметр app_ids не указаны, возвращается идентификатор + /// приложения, через которое выдан ключ доступа (access_token). + /// + [JsonProperty(propertyName: "app_id")] + public long AppId { get; set; } + /// /// Список идентификаторов приложений, данные которых необходимо получить. /// diff --git a/VkNet/Model/RequestParams/Market/MarketGetParams.cs b/VkNet/Model/RequestParams/Market/MarketGetParams.cs index 8ec1a5246..2b19a2117 100644 --- a/VkNet/Model/RequestParams/Market/MarketGetParams.cs +++ b/VkNet/Model/RequestParams/Market/MarketGetParams.cs @@ -1,4 +1,3 @@ -using HtmlAgilityPack; using System; namespace VkNet.Model diff --git a/VkNet/Model/RequestParams/Market/MarketSearchParams.cs b/VkNet/Model/RequestParams/Market/MarketSearchParams.cs index d72087a11..997af7326 100644 --- a/VkNet/Model/RequestParams/Market/MarketSearchParams.cs +++ b/VkNet/Model/RequestParams/Market/MarketSearchParams.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using VkNet.Enums; namespace VkNet.Model; diff --git a/VkNet/Model/RequestParams/Wall/EditAdsStealthParams.cs b/VkNet/Model/RequestParams/Wall/EditAdsStealthParams.cs index 8ab17b565..f87474ba4 100644 --- a/VkNet/Model/RequestParams/Wall/EditAdsStealthParams.cs +++ b/VkNet/Model/RequestParams/Wall/EditAdsStealthParams.cs @@ -61,6 +61,13 @@ public class EditAdsStealthParams [JsonProperty(propertyName: "place_id")] public ulong PlaceId { get; set; } + /// + /// Идентификатор кнопки, которую необходимо добавить к сниппету для ссылки. + /// Подробнее см. документацию метода wall.postAdsStealth. + /// + [JsonProperty(propertyName: "link_button")] + public string LinkButton { get; set; } + /// /// Заголовок, который должен быть использован для сниппета. /// Если не указан, будет автоматически получен с целевой ссылки. @@ -78,17 +85,10 @@ public class EditAdsStealthParams [JsonProperty(propertyName: "link_image")] public string LinkImage { get; set; } - /// - /// Идентификатор кнопки, которую необходимо добавить к сниппету для ссылки. - /// Подробнее см. документацию метода wall.postAdsStealth. - /// - [JsonProperty(propertyName: "link_button")] - public string LinkButton { get; set; } - /// /// Идентификатор видео в формате <owner_id>_<media_id>. /// Одновременно может быть указан либо параметр link_image, либо параметр link_video. - /// Кроме того, параметр link_video может быть указан только вместе с параметрами link_button, link_title.. + /// Кроме того, параметр link_video может быть указан только вместе с параметрами link_button, link_title. /// [JsonProperty(propertyName: "link_video")] public string LinkVideo { get; set; } diff --git a/VkNet/Model/RequestParams/Wall/PostAdsStealthParams.cs b/VkNet/Model/RequestParams/Wall/PostAdsStealthParams.cs index 23a289df8..64657bd5f 100644 --- a/VkNet/Model/RequestParams/Wall/PostAdsStealthParams.cs +++ b/VkNet/Model/RequestParams/Wall/PostAdsStealthParams.cs @@ -77,11 +77,21 @@ public class PostAdsStealthParams public string LinkTitle { get; set; } /// - /// ссылка на изображение, которое должно быть использовано для сниппета. - /// Минимальное разрешение: 537x240. - /// Если не указана, будет автоматически загружена с целевой ссылки. - /// Обязательно указывать в случае, если ссылка является номером телефона. + /// Ссылка на изображение, которое должно быть использовано для сниппета. + /// Минимальное разрешение: 537x240. Если не указана, будет автоматически + /// загружена с целевой ссылки. Обязательно указывать в случае, если ссылка + /// является номером телефона. Одновременно может быть указан либо + /// параметр link_image, либо параметр link_video. /// [JsonProperty(propertyName: "link_image")] public string LinkImage { get; set; } + + /// + /// Идентификатор видео в формате <owner_id>_<media_id>. + /// Одновременно может быть указан либо параметр link_image, либо + /// параметр link_video. Кроме того, параметр link_video может быть + /// указан только вместе с параметрами link_button, link_title. + /// + [JsonProperty(propertyName: "link_video")] + public string LinkVideo { get; set; } } \ No newline at end of file diff --git a/VkNet/Model/Results/Podcasts/PodcastSearchInfo.cs b/VkNet/Model/Results/Podcasts/PodcastSearchInfo.cs index e03c29c92..c9055c09d 100644 --- a/VkNet/Model/Results/Podcasts/PodcastSearchInfo.cs +++ b/VkNet/Model/Results/Podcasts/PodcastSearchInfo.cs @@ -1,9 +1,4 @@ using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using Newtonsoft.Json; namespace VkNet.Model @@ -42,6 +37,6 @@ public class PodcastSearchInfo /// Коллекция логотипов подкаста /// [JsonProperty("cover")] - public Cover Covers { get; set; } + public Cover Covers { get; set; } } } diff --git a/VkNet/Utils/JsonConverter/AttachmentJsonConverter.cs b/VkNet/Utils/JsonConverter/AttachmentJsonConverter.cs index 2c3ce58bb..950d10d49 100644 --- a/VkNet/Utils/JsonConverter/AttachmentJsonConverter.cs +++ b/VkNet/Utils/JsonConverter/AttachmentJsonConverter.cs @@ -5,7 +5,6 @@ using Newtonsoft.Json; using Newtonsoft.Json.Linq; using VkNet.Model; -using VkNet.Utils; namespace VkNet.Utils.JsonConverter; diff --git a/VkNet/Utils/JsonConverter/IgnoreUnexpectedArraysConverterBase.cs b/VkNet/Utils/JsonConverter/IgnoreUnexpectedArraysConverterBase.cs index f24120c17..122ef4238 100644 --- a/VkNet/Utils/JsonConverter/IgnoreUnexpectedArraysConverterBase.cs +++ b/VkNet/Utils/JsonConverter/IgnoreUnexpectedArraysConverterBase.cs @@ -18,38 +18,33 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist throw new JsonSerializationException(string.Format("{0} is not a JSON object", objectType)); } - do + switch (reader.TokenType) { - switch (reader.TokenType) + case JsonToken.Null: + return null; + + case JsonToken.StartArray: { - case JsonToken.Null: - return null; + var array = JArray.Load(reader); - case JsonToken.StartArray: + if (array.Count > 0) { - var array = JArray.Load(reader); - - if (array.Count > 0) - { - throw new JsonSerializationException("Array was not empty."); - } - - return null; + throw new JsonSerializationException("Array was not empty."); } - case JsonToken.StartObject: - // Prevent infinite recursion by using Populate() - existingValue ??= contract.DefaultCreator(); - serializer.Populate(reader, existingValue); + return null; + } - return existingValue; + case JsonToken.StartObject: + // Prevent infinite recursion by using Populate() + existingValue ??= contract.DefaultCreator(); + serializer.Populate(reader, existingValue); - default: - throw new JsonSerializationException($"Unexpected token {reader.TokenType}"); - } - } while (reader.Read()); + return existingValue; - throw new JsonSerializationException("Unexpected end of JSON."); + default: + throw new JsonSerializationException($"Unexpected token {reader.TokenType}"); + } } /// diff --git a/VkNet/Utils/UsersLongPoll/UsersLongPoolUpdatesHandler.cs b/VkNet/Utils/UsersLongPoll/UsersLongPoolUpdatesHandler.cs index 2c5f0cb5e..ff6356b6c 100644 --- a/VkNet/Utils/UsersLongPoll/UsersLongPoolUpdatesHandler.cs +++ b/VkNet/Utils/UsersLongPoll/UsersLongPoolUpdatesHandler.cs @@ -12,6 +12,7 @@ using Newtonsoft.Json.Linq; using VkNet.Exception; using VkNet.Model; +using VkNet.Utils.BotsLongPoll; namespace VkNet.Utils.UsersLongPoll; diff --git a/VkNet/Utils/Utilities.cs b/VkNet/Utils/Utilities.cs index 15b573ae7..87aed9257 100644 --- a/VkNet/Utils/Utilities.cs +++ b/VkNet/Utils/Utilities.cs @@ -58,7 +58,7 @@ public static T EnumFrom(int value) /// Число типа long или null public static long? GetNullableLongId(VkResponse response) => string.IsNullOrWhiteSpace(response?.ToString()) ? null - : System.Convert.ToInt64(response?.ToString()); + : System.Convert.ToInt64(response.ToString()); /// /// Объединить не пустую коллекцию.