mlb_api/endpoints/venue/
mod.rs

1mod types;
2pub use types::*;
3
4use std::fmt::{Display, Formatter};
5use crate::endpoints::sports::SportId;
6use crate::endpoints::Url;
7use crate::gen_params;
8
9#[derive(Default)]
10pub struct VenuesEndpointUrl {
11    pub id: Option<SportId>,
12    pub season: Option<u16>,
13}
14
15impl Display for VenuesEndpointUrl {
16    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
17        write!(f, "https://statsapi.mlb.com/api/v1/venues{id}{params}", id = self.id.map_or(String::new(), |id| format!("/{id}")), params = gen_params! { "season"?: self.season })
18    }
19}
20
21impl Url<VenuesResponse> for VenuesEndpointUrl {}
22
23#[cfg(test)]
24mod tests {
25    use chrono::{Datelike, Local};
26    use crate::endpoints::Url;
27    use crate::endpoints::venue::VenuesEndpointUrl;
28
29    #[tokio::test]
30    async fn parse_all_venues() {
31        for season in 1876..=Local::now().year() as _ {
32            let _response = VenuesEndpointUrl { id: None, season: Some(season) }.get().await.unwrap();
33        }
34    }
35}