1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
use crate::{
    model::seasonal_backgrounds_::SeasonalBackgrounds,
    request::{Pending, Request},
    routing::Route,
    Osu,
};

/// Get [`SeasonalBackgrounds`].
#[must_use = "futures do nothing unless you `.await` or poll them"]
pub struct GetSeasonalBackgrounds<'a> {
    fut: Option<Pending<'a, SeasonalBackgrounds>>,
    osu: &'a Osu,
}

impl<'a> GetSeasonalBackgrounds<'a> {
    #[inline]
    pub(crate) fn new(osu: &'a Osu) -> Self {
        Self { fut: None, osu }
    }

    fn start(&mut self) -> Pending<'a, SeasonalBackgrounds> {
        #[cfg(feature = "metrics")]
        self.osu.metrics.seasonal_backgrounds.inc();

        let req = Request::new(Route::GetSeasonalBackgrounds);

        Box::pin(self.osu.request(req))
    }
}

poll_req!(GetSeasonalBackgrounds => SeasonalBackgrounds);