roblox_api/api/user_blocking/
v1.rs1use serde::{Deserialize, Serialize};
2
3use crate::{Error, client::Client};
4
5pub const URL: &str = "https://apis.roblox.com/user-blocking-api/v1";
6
7#[derive(Clone, Debug, Deserialize, PartialEq, Eq)]
8pub struct UserBlockStatus {
9 #[serde(rename = "userId")]
10 pub id: u64,
11 #[serde(rename = "isBlocked")]
12 pub is_blocked: bool,
13 #[serde(rename = "isBlockingViewer")]
14 pub is_blocking_viewer: bool,
15}
16
17pub async fn is_blocked(client: &mut Client, id: u64) -> Result<bool, Error> {
18 let result = client
19 .requestor
20 .client
21 .get(format!("{URL}/users/{id}/is-blocked"))
22 .headers(client.requestor.default_headers.clone())
23 .send()
24 .await;
25
26 let response = client.validate_response(result).await?;
27 client.requestor.parse_json::<bool>(response).await
28}
29
30pub async fn batch_check_reciprocal_block(
31 client: &mut Client,
32 requester_id: u64,
33 ids: &[u64],
34) -> Result<Vec<UserBlockStatus>, Error> {
35 #[derive(Debug, Serialize)]
36 struct Request<'a> {
37 #[serde(rename = "requesterUserId")]
38 requester_id: u64,
39 #[serde(rename = "userIds")]
40 ids: &'a [u64],
41 }
42
43 let result = client
44 .requestor
45 .client
46 .post(format!("{URL}/users/batch-check-reciprocal-block"))
47 .json(&Request { requester_id, ids })
48 .headers(client.requestor.default_headers.clone())
49 .send()
50 .await;
51
52 #[derive(Debug, Deserialize)]
53 struct Response {
54 users: Vec<UserBlockStatus>,
55 }
56
57 let response = client.validate_response(result).await?;
58 Ok(client
59 .requestor
60 .parse_json::<Response>(response)
61 .await?
62 .users)
63}