modio/request/user/
get_muted_users.rs1use std::future::IntoFuture;
2
3use crate::client::Client;
4use crate::request::{Filter, Output, RequestBuilder, Route};
5use crate::response::ResponseFuture;
6use crate::types::{List, User};
7use crate::util::{Paginate, Paginator};
8
9pub struct GetMutedUsers<'a> {
11 http: &'a Client,
12 filter: Option<Filter>,
13}
14
15impl<'a> GetMutedUsers<'a> {
16 pub(crate) const fn new(http: &'a Client) -> Self {
17 Self { http, filter: None }
18 }
19
20 pub fn filter(mut self, filter: Filter) -> Self {
21 self.filter = Some(filter);
22 self
23 }
24}
25
26impl IntoFuture for GetMutedUsers<'_> {
27 type Output = Output<List<User>>;
28 type IntoFuture = ResponseFuture<List<User>>;
29
30 fn into_future(self) -> Self::IntoFuture {
31 let route = Route::UserMuted;
32 let mut builder = RequestBuilder::from_route(&route);
33 if let Some(filter) = self.filter {
34 builder = builder.filter(filter);
35 }
36 match builder.empty() {
37 Ok(req) => self.http.request(req),
38 Err(err) => ResponseFuture::failed(err),
39 }
40 }
41}
42
43impl<'a> Paginate<'a> for GetMutedUsers<'a> {
44 type Output = User;
45
46 fn paged(&'a self) -> Paginator<'a, Self::Output> {
47 let route = Route::UserMuted;
48
49 Paginator::new(self.http, route, self.filter.clone())
50 }
51}