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