Skip to main content

tmdb_rs/endpoints/
trending.rs

1use std::fmt;
2
3use crate::endpoints::movie::MovieShort;
4use crate::endpoints::person::PersonShort;
5use crate::endpoints::search::MultiResult;
6use crate::endpoints::tv::TvShort;
7use crate::{Language, Page};
8
9/// the trending time window
10#[derive(Debug, Clone, Copy, PartialEq, Eq)]
11pub enum TimeWindow {
12    Day,
13    Week,
14}
15
16impl fmt::Display for TimeWindow {
17    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
18        f.write_str(match self {
19            Self::Day => "day",
20            Self::Week => "week",
21        })
22    }
23}
24
25endpoint! {
26    /// the trending movies
27    trending_movies(window: TimeWindow): GET "/trending/movie/{window}" => Page<MovieShort> {
28        params { language: Language }
29    }
30}
31
32endpoint! {
33    /// the trending series
34    trending_tv(window: TimeWindow): GET "/trending/tv/{window}" => Page<TvShort> {
35        params { language: Language }
36    }
37}
38
39endpoint! {
40    /// the trending people
41    trending_people(window: TimeWindow): GET "/trending/person/{window}" => Page<PersonShort> {
42        params { language: Language }
43    }
44}
45
46endpoint! {
47    /// everything trending, movies, series and people mixed
48    trending_all(window: TimeWindow): GET "/trending/all/{window}" => Page<MultiResult> {
49        params { language: Language }
50    }
51}