rvk_objects/
user.rs

1use super::*;
2
3/// <https://vk.com/dev/objects/user>
4#[derive(Deserialize, Clone, Debug)]
5pub struct User {
6    // Main fields
7    pub id: Integer,
8    pub first_name: String,
9    pub last_name: String,
10    pub deactivated: Option<String>,
11    pub is_closed: Boolean,
12    pub can_access_closed: Boolean,
13
14    // Optional fields A-L
15    pub about: Option<String>,
16    pub activities: Option<String>,
17    pub bdate: Option<String>,
18    pub blacklisted: Option<Integer>,
19    pub blacklisted_by_me: Option<Integer>,
20    pub books: Option<String>,
21    pub can_post: Option<Integer>,
22    pub can_see_all_posts: Option<Integer>,
23    pub can_see_audio: Option<Integer>,
24    pub can_send_friend_request: Option<Integer>,
25    pub can_write_private_message: Option<Integer>,
26    pub career: Option<Vec<Career>>,
27    pub city: Option<geo::City>,
28    pub common_count: Option<Integer>,
29
30    // connections
31    pub skype: Option<String>,
32    pub facebook: Option<String>,
33    pub facebook_name: Option<String>,
34    pub twitter: Option<String>,
35    pub livejournal: Option<String>,
36    pub instagram: Option<String>,
37
38    pub contacts: Option<Contacts>,
39    pub counters: Option<Counters>,
40    pub country: Option<geo::Country>,
41    pub crop_photo: Option<photo::Cropped>,
42    pub domain: Option<String>,
43
44    // education
45    pub university: Option<Integer>,
46    pub university_name: Option<String>,
47    pub faculty: Option<Integer>,
48    pub faculty_name: Option<String>,
49    pub graduation: Option<Integer>,
50
51    pub exports: Option<Exports>,
52
53    // first_name_{case}
54    pub first_name_nom: Option<String>,
55    pub first_name_gen: Option<String>,
56    pub first_name_dat: Option<String>,
57    pub first_name_acc: Option<String>,
58    pub first_name_ins: Option<String>,
59    pub first_name_abl: Option<String>,
60
61    pub followers_count: Option<Integer>,
62    pub friend_status: Option<Integer>,
63    pub games: Option<String>,
64    pub has_mobile: Option<Integer>,
65    pub has_photo: Option<Integer>,
66    pub home_town: Option<String>,
67    pub interests: Option<String>,
68    pub is_favorite: Option<Integer>,
69    pub is_friend: Option<Integer>,
70    pub is_hidden_from_feed: Option<Integer>,
71
72    // last_name_{case}
73    pub last_name_nom: Option<String>,
74    pub last_name_gen: Option<String>,
75    pub last_name_dat: Option<String>,
76    pub last_name_acc: Option<String>,
77    pub last_name_ins: Option<String>,
78    pub last_name_abl: Option<String>,
79
80    pub last_seen: Option<LastSeen>,
81    pub lists: Option<String>,
82
83    // Optional fields M-W
84    pub maiden_name: Option<String>,
85    pub military: Option<Vec<Military>>,
86    pub movies: Option<String>,
87    pub music: Option<String>,
88    pub nickname: Option<String>,
89    pub occupation: Option<Occupation>,
90
91    // online
92    pub online: Option<Integer>,
93    pub online_mobile: Option<Integer>,
94    pub online_app: Option<String>,
95
96    pub personal: Option<Personal>,
97    pub photo_50: Option<String>,
98    pub photo_100: Option<String>,
99    pub photo_200_orig: Option<String>,
100    pub photo_200: Option<String>,
101    pub photo_400_orig: Option<String>,
102    pub photo_id: Option<String>,
103    pub photo_max: Option<String>,
104    pub photo_max_orig: Option<String>,
105    pub quotes: Option<String>,
106    pub relatives: Option<Vec<Relative>>,
107
108    // relation
109    pub relation: Option<Integer>,
110    pub relation_partner: Option<Box<User>>,
111
112    pub schools: Option<Vec<School>>,
113    pub screen_name: Option<String>,
114    pub sex: Option<Integer>,
115    pub site: Option<String>,
116
117    // status
118    pub status: Option<String>,
119    pub status_audio: Option<audio::Audio>,
120
121    pub timezone: Option<Integer>,
122    pub trending: Option<Integer>,
123    pub tv: Option<String>,
124    pub universities: Option<Vec<University>>,
125    pub verified: Option<Integer>,
126    pub wall_default: Option<String>,
127}
128
129#[derive(Deserialize, Clone, Debug)]
130pub struct Career {
131    pub group_id: Option<Integer>,
132    pub company: Option<String>,
133    pub country_id: Option<Integer>,
134    pub city_id: Option<Integer>,
135    pub city_name: Option<String>,
136    pub from: Option<Integer>,
137    pub until: Option<Integer>,
138    pub position: Option<String>,
139}
140
141#[derive(Deserialize, Clone, Debug)]
142pub struct Contacts {
143    pub mobile_phone: Option<String>,
144    pub home_phone: Option<String>,
145}
146
147#[derive(Deserialize, Copy, Clone, Debug)]
148pub struct Counters {
149    pub albums: Option<Integer>,
150    pub videos: Option<Integer>,
151    pub audios: Option<Integer>,
152    pub photos: Option<Integer>,
153    pub notes: Option<Integer>,
154    pub friends: Option<Integer>,
155    pub groups: Option<Integer>,
156    pub online_friends: Option<Integer>,
157    pub mutual_friends: Option<Integer>,
158    pub user_videos: Option<Integer>,
159    pub followers: Option<Integer>,
160    pub pages: Option<Integer>,
161}
162
163#[derive(Deserialize, Copy, Clone, Debug)]
164pub struct Exports {
165    pub twitter: Option<Integer>,
166    pub facebook: Option<Integer>,
167    pub livejournal: Option<Integer>,
168    pub instagram: Option<Integer>,
169}
170
171#[derive(Deserialize, Copy, Clone, Debug)]
172pub struct LastSeen {
173    pub time: Option<Integer>,
174    pub platform: Option<Integer>,
175}
176
177#[derive(Deserialize, Clone, Debug)]
178pub struct Military {
179    pub unit: Option<String>,
180    pub unit_id: Option<Integer>,
181    pub country_id: Option<Integer>,
182    pub from: Option<Integer>,
183    pub until: Option<Integer>,
184}
185
186#[derive(Deserialize, Clone, Debug)]
187pub struct Occupation {
188    #[serde(rename = "type")]
189    pub type_: Option<String>,
190
191    pub id: Option<Integer>,
192    pub name: Option<String>,
193}
194
195#[derive(Deserialize, Clone, Debug)]
196pub struct Personal {
197    pub political: Option<Integer>,
198    pub langs: Option<Vec<String>>,
199    pub religion: Option<String>,
200    pub inspired_by: Option<String>,
201    pub people_main: Option<Integer>,
202    pub life_main: Option<Integer>,
203    pub smoking: Option<Integer>,
204    pub alcohol: Option<Integer>,
205}
206
207#[derive(Deserialize, Clone, Debug)]
208pub struct Relative {
209    pub id: Option<Integer>,
210    pub name: Option<String>,
211
212    #[serde(rename = "type")]
213    pub type_: Option<String>,
214}
215
216#[derive(Deserialize, Clone, Debug)]
217pub struct School {
218    pub id: Option<String>,
219    pub country: Option<Integer>,
220    pub city: Option<Integer>,
221    pub name: Option<String>,
222    pub year_from: Option<Integer>,
223    pub year_to: Option<Integer>,
224    pub year_graduated: Option<Integer>,
225    pub class: Option<String>,
226    pub speciality: Option<String>,
227
228    #[serde(rename = "type")]
229    pub type_: Option<Integer>,
230
231    pub type_str: Option<String>,
232}
233
234#[derive(Deserialize, Clone, Debug)]
235pub struct University {
236    pub id: Option<Integer>,
237    pub country: Option<Integer>,
238    pub city: Option<Integer>,
239    pub name: Option<String>,
240    pub faculty: Option<Integer>,
241    pub faculty_name: Option<String>,
242    pub chair: Option<Integer>,
243    pub chair_name: Option<String>,
244    pub graduation: Option<Integer>,
245    pub education_form: Option<String>,
246    pub education_status: Option<String>,
247}