-
-
Notifications
You must be signed in to change notification settings - Fork 221
/
Privacy.cs
147 lines (118 loc) · 3.83 KB
/
Privacy.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
using System.Text.RegularExpressions;
using Newtonsoft.Json;
using VkNet.Utils;
using VkNet.Utils.JsonConverter;
namespace VkNet.Enums.SafetyEnums;
/// <summary>
/// Уровень доступа к комментированию альбома
/// </summary>
[JsonConverter(typeof(SafetyEnumJsonConverter))]
public sealed class Privacy : SafetyEnum<Privacy>
{
/// <summary>
/// Доступно всем пользователям.
/// </summary>
[VkNetDefaultValue]
public static readonly Privacy All = RegisterPossibleValue(value: "all");
/// <summary>
/// Доступно друзьям текущего пользователя.
/// </summary>
public static readonly Privacy Friends = RegisterPossibleValue(value: "friends");
/// <summary>
/// Доступно друзьям и друзьям друзей.
/// </summary>
public static readonly Privacy FriendsOfFriends = RegisterPossibleValue(value: "friends_of_friends");
/// <summary>
/// Доступно друзьям друзей текущего пользователя.
/// </summary>
public static readonly Privacy FriendsOfFriendsOnly = RegisterPossibleValue(value: "friends_of_friends_only");
/// <summary>
/// Недоступно никому.
/// </summary>
public static readonly Privacy Nobody = RegisterPossibleValue(value: "nobody");
/// <summary>
/// Доступно только мне.
/// </summary>
public static readonly Privacy OnlyMe = RegisterPossibleValue(value: "only_me");
/// <summary>
/// Доступно для списка
/// </summary>
/// <param name="number"> Номер списка. </param>
/// <returns> Номер списка. </returns>
public static Privacy AvailableForList(long number) => RegisterPossibleValue(value: "list" + number);
/// <summary>
/// Недоступно для списка
/// </summary>
/// <param name="number"> Номер списка. </param>
/// <returns> Номер списка. </returns>
public static Privacy UnAvailableForList(long number) => RegisterPossibleValue(value: "-list" + number);
/// <summary>
/// Доступно для пользователя
/// </summary>
/// <param name="number"> Номер списка. </param>
/// <returns> Номер списка. </returns>
public static Privacy AvailableForUser(long number) => RegisterPossibleValue(value: number.ToString());
/// <summary>
/// Недоступно для пользователя
/// </summary>
/// <param name="number"> Номер списка. </param>
/// <returns> Номер списка. </returns>
public static Privacy UnAvailableForUser(long number) => RegisterPossibleValue(value: "-" + number);
/// <summary>
/// Разобрать из json.
/// </summary>
/// <param name="response"> Ответ сервера. </param>
/// <returns>
/// Уровень доступа к комментированию альбома
/// </returns>
public new static Privacy FromJson(VkResponse response)
{
switch (response.ToString())
{
case "all":
{
return All;
}
case "friends":
{
return Friends;
}
case "friends_of_friends":
{
return FriendsOfFriends;
}
case "friends_of_friends_only":
{
return FriendsOfFriendsOnly;
}
case "nobody":
{
return Nobody;
}
case "only_me":
{
return OnlyMe;
}
default:
{
var input = response.ToString();
var idPattern = new Regex(pattern: @"([\d]+)");
long id;
long.TryParse(idPattern.Match(input: input)
.Groups[groupnum: 1]
.Value, out id);
if (input.StartsWith(value: "list"))
{
return AvailableForList(number: id);
}
if (input.StartsWith(value: "-list"))
{
return UnAvailableForList(number: id);
}
return input.StartsWith(value: "-")
? UnAvailableForUser(number: id)
: AvailableForUser(number: id);
}
}
}
}