1use crate::{
2 model::news::News,
3 request::{Query, Request},
4 routing::Route,
5 Osu,
6};
7
8use serde::Serialize;
9
10#[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<()>, #[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}