vkapi2/account/methods.rs
1use crate::account::types::{
2 GetInfoOptions, ResponseBanned, ResponseInfo, SetOnlineOptions, UnregisterDeviceOptions,
3};
4use crate::error::{VkApiError, VkError};
5use crate::{send_request, ParamGrid, VkApi};
6use serde_json::Value;
7
8const API: &str = "https://api.vk.com/method/account.";
9
10pub async fn ban(api: &VkApi, owner_id: i64) -> Result<u8, VkApiError> {
11 let mut params = ParamGrid::new();
12 params.insert_if_not_exists("owner_id", owner_id);
13
14 let response_text = send_request(
15 &api.client,
16 Some(params),
17 &format!("{}ban", API),
18 &api.flow_key,
19 api.v,
20 )
21 .await?;
22
23 if let Ok(error) = serde_json::from_str::<VkError>(&response_text) {
24 return Err(VkApiError::VkError(error));
25 }
26
27 Ok(1)
28}
29
30pub async fn unban(api: &VkApi, owner_id: i64) -> Result<u8, VkApiError> {
31 let mut params = ParamGrid::new();
32 params.insert_if_not_exists("owner_id", owner_id);
33
34 let response_text = send_request(
35 &api.client,
36 Some(params),
37 &format!("{}unban", API),
38 &api.flow_key,
39 api.v,
40 )
41 .await?;
42
43 if let Ok(error) = serde_json::from_str::<VkError>(&response_text) {
44 return Err(VkApiError::VkError(error));
45 }
46
47 Ok(1)
48}
49
50pub async fn set_offline(api: &VkApi) -> Result<u8, VkApiError> {
51 let response_text = send_request(
52 &api.client,
53 None,
54 &format!("{}setOffline", API),
55 &api.flow_key,
56 api.v,
57 )
58 .await?;
59
60 if let Ok(error) = serde_json::from_str::<VkError>(&response_text) {
61 return Err(VkApiError::VkError(error));
62 }
63
64 Ok(1)
65}
66
67pub async fn set_online(api: &VkApi, options: Option<SetOnlineOptions>) -> Result<u8, VkApiError> {
68 let mut params = ParamGrid::new();
69
70 match options {
71 Some(options) => {
72 params.insert_if_not_exists(
73 "voip",
74 match options.voip {
75 true => "1".to_string(),
76 false => "0".to_string(),
77 },
78 );
79 }
80 None => (),
81 }
82
83 let response_text = send_request(
84 &api.client,
85 Some(params),
86 &format!("{}setOnline", API),
87 &api.flow_key,
88 api.v,
89 )
90 .await?;
91
92 if let Ok(error) = serde_json::from_str::<VkError>(&response_text) {
93 return Err(VkApiError::VkError(error));
94 }
95
96 Ok(1)
97}
98
99pub async fn get_info(
100 api: &VkApi,
101 options: Option<GetInfoOptions>,
102) -> Result<ResponseInfo, VkApiError> {
103 let mut params = ParamGrid::new();
104 let mut fields = String::new();
105
106 match options {
107 Some(options) => {
108 if options.country {
109 fields.push_str("country,");
110 };
111 if options.https_required {
112 fields.push_str("https_required,");
113 };
114 if options.intro {
115 fields.push_str("intro,");
116 };
117 if options.lang {
118 fields.push_str("lang,");
119 };
120 if options.no_wall_replies {
121 fields.push_str("no_wall_replies,");
122 };
123 if options.own_posts_default {
124 fields.push_str("own_posts_default,");
125 };
126 }
127 None => (),
128 };
129
130 params.insert_if_not_exists("fields", fields);
131
132 let response_text = send_request(
133 &api.client,
134 Some(params),
135 &format!("{}getInfo", API),
136 &api.flow_key,
137 api.v,
138 )
139 .await?;
140
141 if let Ok(error) = serde_json::from_str::<VkError>(&response_text) {
142 return Err(VkApiError::VkError(error));
143 } else {
144 let json: Value = serde_json::from_str(&response_text)?;
145 let data: ResponseInfo = serde_json::from_value(json["response"].clone())?;
146 return Ok(data);
147 }
148}
149
150pub async fn change_password() -> Result<(), VkApiError> {
151 // let mut params = match params {
152 // Some(params) => params,
153 // None => ParamGrid::new(),
154 // };
155
156 // params.insert_if_not_exists("v", api.v);
157
158 // let response = api
159 // .client
160 // .post(format!("{}ban", API))
161 // .header("Authorization", format!("Bearer {}", api.flow_key))
162 // .form(¶ms.data)
163 // .send()
164 // .await?;
165
166 // if let Ok(error) = response.json::<VkError>().await {
167 // return Err(VkApiError::VkError(error));
168 // };
169
170 // Ok(())
171 todo!()
172}
173
174pub async fn get_active_offers() -> Result<(), VkApiError> {
175 // let mut params = ParamGrid::new();
176
177 // params.insert_if_not_exists("offset", offset);
178 // params.insert_if_not_exists("count", count);
179
180 // let response_text = send_request(
181 // &api.client,
182 // Some(params),
183 // &format!("{}getInfo", API),
184 // &api.flow_key,
185 // api.v,
186 // )
187 // .await?;
188
189 // if let Ok(error) = serde_json::from_str::<VkError>(&response_text) {
190 // return Err(VkApiError::VkError(error));
191 // } else {
192 // let json: Value = serde_json::from_str(&response_text)?;
193 // let data: ResponseInfo = serde_json::from_value(json["response"].clone())?;
194 // return Ok(data);
195 // }
196
197 // Ok(())
198 todo!()
199}
200
201pub async fn get_app_permissions() -> Result<(), VkApiError> {
202 todo!()
203}
204
205pub async fn get_banned(
206 api: &VkApi,
207 offset: usize,
208 count: usize,
209) -> Result<ResponseBanned, VkApiError> {
210 let mut params = ParamGrid::new();
211
212 params.insert_if_not_exists("offset", offset);
213 params.insert_if_not_exists("count", count);
214
215 let response_text = send_request(
216 &api.client,
217 Some(params),
218 &format!("{}getBanned", API),
219 &api.flow_key,
220 api.v,
221 )
222 .await?;
223
224 if let Ok(error) = serde_json::from_str::<VkError>(&response_text) {
225 return Err(VkApiError::VkError(error));
226 } else {
227 let json: Value = serde_json::from_str(&response_text)?;
228 let data: ResponseBanned = serde_json::from_value(json["response"].clone())?;
229 return Ok(data);
230 }
231}
232
233pub async fn get_counters() -> Result<(), VkApiError> {
234 // let mut params = match params {
235 // Some(params) => params,
236 // None => ParamGrid::new(),
237 // };
238
239 // params.insert_if_not_exists("v", api.v);
240
241 // let response = api
242 // .client
243 // .post(format!("{}ban", API))
244 // .header("Authorization", format!("Bearer {}", api.flow_key))
245 // .form(¶ms.data)
246 // .send()
247 // .await?;
248
249 // if let Ok(error) = response.json::<VkError>().await {
250 // return Err(VkApiError::VkError(error));
251 // };
252
253 // Ok(())
254 todo!()
255}
256
257pub async fn get_profile_info() -> Result<(), VkApiError> {
258 // let mut params = match params {
259 // Some(params) => params,
260 // None => ParamGrid::new(),
261 // };
262
263 // params.insert_if_not_exists("v", api.v);
264
265 // let response = api
266 // .client
267 // .post(format!("{}ban", API))
268 // .header("Authorization", format!("Bearer {}", api.flow_key))
269 // .form(¶ms.data)
270 // .send()
271 // .await?;
272
273 // if let Ok(error) = response.json::<VkError>().await {
274 // return Err(VkApiError::VkError(error));
275 // };
276
277 // Ok(())
278 todo!()
279}
280
281pub async fn get_push_settings() -> Result<(), VkApiError> {
282 // let mut params = match params {
283 // Some(params) => params,
284 // None => ParamGrid::new(),
285 // };
286
287 // params.insert_if_not_exists("v", api.v);
288
289 // let response = api
290 // .client
291 // .post(format!("{}ban", API))
292 // .header("Authorization", format!("Bearer {}", api.flow_key))
293 // .form(¶ms.data)
294 // .send()
295 // .await?;
296
297 // if let Ok(error) = response.json::<VkError>().await {
298 // return Err(VkApiError::VkError(error));
299 // };
300
301 // Ok(())
302 todo!()
303}
304
305pub async fn lookup_contacts() -> Result<(), VkApiError> {
306 // let mut params = match params {
307 // Some(params) => params,
308 // None => ParamGrid::new(),
309 // };
310
311 // params.insert_if_not_exists("v", api.v);
312
313 // let response = api
314 // .client
315 // .post(format!("{}ban", API))
316 // .header("Authorization", format!("Bearer {}", api.flow_key))
317 // .form(¶ms.data)
318 // .send()
319 // .await?;
320
321 // if let Ok(error) = response.json::<VkError>().await {
322 // return Err(VkApiError::VkError(error));
323 // };
324
325 // Ok(())
326 todo!()
327}
328
329pub async fn register_device() -> Result<(), VkApiError> {
330 // let mut params = match params {
331 // Some(params) => params,
332 // None => ParamGrid::new(),
333 // };
334
335 // params.insert_if_not_exists("v", api.v);
336
337 // let response = api
338 // .client
339 // .post(format!("{}ban", API))
340 // .header("Authorization", format!("Bearer {}", api.flow_key))
341 // .form(¶ms.data)
342 // .send()
343 // .await?;
344
345 // if let Ok(error) = response.json::<VkError>().await {
346 // return Err(VkApiError::VkError(error));
347 // };
348
349 // Ok(())
350 todo!()
351}
352
353pub async fn save_profile_info() -> Result<(), VkApiError> {
354 // let mut params = match params {
355 // Some(params) => params,
356 // None => ParamGrid::new(),
357 // };
358
359 // params.insert_if_not_exists("v", api.v);
360
361 // let response = api
362 // .client
363 // .post(format!("{}ban", API))
364 // .header("Authorization", format!("Bearer {}", api.flow_key))
365 // .form(¶ms.data)
366 // .send()
367 // .await?;
368
369 // if let Ok(error) = response.json::<VkError>().await {
370 // return Err(VkApiError::VkError(error));
371 // };
372
373 // Ok(())
374 todo!()
375}
376
377pub async fn set_info() -> Result<(), VkApiError> {
378 // let mut params = match params {
379 // Some(params) => params,
380 // None => ParamGrid::new(),
381 // };
382
383 // params.insert_if_not_exists("v", api.v);
384
385 // let response = api
386 // .client
387 // .post(format!("{}ban", API))
388 // .header("Authorization", format!("Bearer {}", api.flow_key))
389 // .form(¶ms.data)
390 // .send()
391 // .await?;
392
393 // if let Ok(error) = response.json::<VkError>().await {
394 // return Err(VkApiError::VkError(error));
395 // };
396
397 // Ok(())
398 todo!()
399}
400
401pub async fn set_name_in_menu(api: &VkApi, user_id: usize, name: String) -> Result<u8, VkApiError> {
402 let mut params = ParamGrid::new();
403
404 params.insert_if_not_exists("user_id", user_id);
405 params.insert_if_not_exists("name", name);
406
407 let response_text = send_request(
408 &api.client,
409 Some(params),
410 &format!("{}setNameInMenu", API),
411 &api.flow_key,
412 api.v,
413 )
414 .await?;
415
416 if let Ok(error) = serde_json::from_str::<VkError>(&response_text) {
417 return Err(VkApiError::VkError(error));
418 }
419
420 Ok(1)
421}
422
423pub async fn set_push_settings() -> Result<(), VkApiError> {
424 // let mut params = match params {
425 // Some(params) => params,
426 // None => ParamGrid::new(),
427 // };
428
429 // params.insert_if_not_exists("v", api.v);
430
431 // let response = api
432 // .client
433 // .post(format!("{}ban", API))
434 // .header("Authorization", format!("Bearer {}", api.flow_key))
435 // .form(¶ms.data)
436 // .send()
437 // .await?;
438
439 // if let Ok(error) = response.json::<VkError>().await {
440 // return Err(VkApiError::VkError(error));
441 // };
442
443 // Ok(())
444 todo!()
445}
446
447pub async fn set_silence_mode() -> Result<(), VkApiError> {
448 // let mut params = match params {
449 // Some(params) => params,
450 // None => ParamGrid::new(),
451 // };
452
453 // params.insert_if_not_exists("v", api.v);
454
455 // let response = api
456 // .client
457 // .post(format!("{}ban", API))
458 // .header("Authorization", format!("Bearer {}", api.flow_key))
459 // .form(¶ms.data)
460 // .send()
461 // .await?;
462
463 // if let Ok(error) = response.json::<VkError>().await {
464 // return Err(VkApiError::VkError(error));
465 // };
466
467 // Ok(())
468 todo!()
469}
470
471pub async fn unregister_device(
472 api: &VkApi,
473 device_id: i64,
474 options: Option<UnregisterDeviceOptions>,
475) -> Result<u8, VkApiError> {
476 let mut params = ParamGrid::new();
477
478 params.insert_if_not_exists("device_id", device_id);
479
480 match options {
481 Some(options) => {
482 params.insert_if_not_exists(
483 "sandbox",
484 match options.sandbox {
485 true => "1".to_string(),
486 false => "0".to_string(),
487 },
488 );
489 }
490 None => (),
491 }
492
493 let response_text = send_request(
494 &api.client,
495 Some(params),
496 &format!("{}unregisterDevice", API),
497 &api.flow_key,
498 api.v,
499 )
500 .await?;
501
502 if let Ok(error) = serde_json::from_str::<VkError>(&response_text) {
503 return Err(VkApiError::VkError(error));
504 }
505
506 Ok(1)
507}