misskey_api/endpoint/blocking/
list.rs1use crate::model::{blocking::Blocking, id::Id};
2
3use serde::Serialize;
4use typed_builder::TypedBuilder;
5
6#[derive(Serialize, Default, Debug, Clone, TypedBuilder)]
7#[serde(rename_all = "camelCase")]
8#[builder(doc)]
9pub struct Request {
10 #[serde(skip_serializing_if = "Option::is_none")]
12 #[builder(default, setter(strip_option))]
13 pub limit: Option<u8>,
14 #[serde(skip_serializing_if = "Option::is_none")]
15 #[builder(default, setter(strip_option))]
16 pub since_id: Option<Id<Blocking>>,
17 #[serde(skip_serializing_if = "Option::is_none")]
18 #[builder(default, setter(strip_option))]
19 pub until_id: Option<Id<Blocking>>,
20}
21
22impl misskey_core::Request for Request {
23 type Response = Vec<Blocking>;
24 const ENDPOINT: &'static str = "blocking/list";
25}
26
27impl_pagination!(Request, Blocking);
28
29#[cfg(test)]
30mod tests {
31 use super::Request;
32 use crate::test::{ClientExt, TestClient};
33
34 #[tokio::test]
35 async fn request() {
36 let client = TestClient::new();
37 client.user.test(Request::default()).await;
38 }
39
40 #[tokio::test]
41 async fn request_with_limit() {
42 let client = TestClient::new();
43
44 client
45 .test(Request {
46 limit: Some(100),
47 since_id: None,
48 until_id: None,
49 })
50 .await;
51 }
52
53 #[tokio::test]
54 async fn request_paginate() {
55 let client = TestClient::new();
56 let (user, _) = client.admin.create_user().await;
57
58 client
59 .user
60 .test(crate::endpoint::blocking::create::Request {
61 user_id: user.id.clone(),
62 })
63 .await;
64
65 let blockings = client
66 .user
67 .test(Request {
68 limit: None,
69 since_id: None,
70 until_id: None,
71 })
72 .await;
73
74 client
75 .user
76 .test(Request {
77 limit: None,
78 since_id: Some(blockings[0].id.clone()),
79 until_id: Some(blockings[0].id.clone()),
80 })
81 .await;
82 }
83}