Skip to content

Commit f12186a

Browse files
committed
Добавлена обработка ошибки NeedValidation
1 parent 69fd6b5 commit f12186a

File tree

3 files changed

+55
-0
lines changed

3 files changed

+55
-0
lines changed
+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
namespace VkNet.Exception
2+
{
3+
using System;
4+
using System.Runtime.Serialization;
5+
6+
using Enums.Filters;
7+
8+
/// <summary>
9+
/// Исключение, которое выбрасывается в случаях,
10+
/// когда требуется дополнительная проверка пользователя,
11+
/// например при авторизации из подозрительного места
12+
///
13+
/// В этом случае необходимо открыть браузер со страницей, указанной в поле redirect_uri и ждать,
14+
/// пока пользователь будет направлен на страницу blank.html с параметром success=1 в случае успеха и fail=1
15+
/// в случае, если пользователь отменил проверку своего аккаунта.
16+
/// Для тестового вызова проверки добавьте параметр test_redirect_uri=1.
17+
///
18+
/// </summary>
19+
[Serializable]
20+
public class NeedValidationException : VkApiException
21+
{
22+
/// <summary>
23+
/// Адрес который необходимо открыть в браузере.
24+
/// </summary>
25+
public Uri redirectUri { get; private set; }
26+
27+
28+
/// <summary>
29+
/// Инициализирует новый экземпляр класса <see cref="VkApiAuthorizationException"/>.
30+
/// </summary>
31+
/// <param name="message">Описание исключения.</param>
32+
/// <param name="strRedirectUri">Адрес который необходимо открыть в браузере.</param>
33+
public NeedValidationException(string message, string strRedirectUri) : base(message)
34+
{
35+
redirectUri = new Uri(strRedirectUri);
36+
}
37+
38+
39+
/// <summary>
40+
/// Инициализирует новый экземпляр класса <see cref="AccessTokenInvalidException"/> на основе ранее сериализованных данных.
41+
/// </summary>
42+
/// <param name="info">Содержит все данные, необходимые для десериализации.</param>
43+
/// <param name="context">Описывает источник и назначение данного сериализованного потока и предоставляет дополнительный,
44+
/// определяемый вызывающим, контекст.</param>
45+
protected NeedValidationException(SerializationInfo info, StreamingContext context) : base(info, context)
46+
{
47+
}
48+
}
49+
}

VkNet/Utils/VkErrors.cs

+5
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,11 @@ public static void IfErrorThrowException(string json)
161161
var img = Convert.ToString(response["captcha_img"]);
162162
throw new CaptchaNeededException(sid, img);
163163
}
164+
case 17:
165+
{
166+
var redirectUri = Convert.ToString(response["redirect_uri"]);
167+
throw new NeedValidationException(message, redirectUri);
168+
}
164169
case 5:
165170
{
166171
throw new UserAuthorizationFailException(message, code);

VkNet/VkNet.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@
7070
<Compile Include="Enums\SafetyEnums\FeedType.cs" />
7171
<Compile Include="Enums\SafetyEnums\VideoCatalogItemType.cs" />
7272
<Compile Include="Enums\SafetyEnums\VideoCatalogType.cs" />
73+
<Compile Include="Exception\NeedValidationException.cs" />
7374
<Compile Include="Exception\OutOfLimitsException.cs" />
7475
<Compile Include="Model\AccountChangePasswordResult.cs" />
7576
<Compile Include="Model\DocumentType.cs" />

0 commit comments

Comments
 (0)