rosu_v2/request/
news.rs

1use crate::{
2    model::news::News,
3    request::{Query, Request},
4    routing::Route,
5    Osu,
6};
7
8use serde::Serialize;
9
10/// Get a [`News`] struct.
11#[must_use = "requests must be configured and executed"]
12#[derive(Serialize)]
13pub struct GetNews<'a> {
14    #[serde(skip)]
15    osu: &'a Osu,
16    news: Option<()>, // TODO
17    #[serde(rename = "cursor_string")]
18    cursor: Option<&'a str>,
19}
20
21impl<'a> GetNews<'a> {
22    pub(crate) const fn new(osu: &'a Osu) -> Self {
23        Self {
24            osu,
25            news: None,
26            cursor: None,
27        }
28    }
29
30    #[inline]
31    pub(crate) const fn cursor(mut self, cursor: &'a str) -> Self {
32        self.cursor = Some(cursor);
33
34        self
35    }
36}
37
38into_future! {
39    |self: GetNews<'_>| -> News {
40        Request::with_query(
41            Route::GetNews { news: self.news },
42            Query::encode(&self),
43        )
44    }
45}