modio/request/user/
get_muted_users.rs

1use 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
9/// Get all users muted by the authenticated user.
10pub 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}