mlb_api/endpoints/sports/players/
mod.rs1mod 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 SportsPlayersEndpointUrl {
11 pub id: SportId,
12 pub season: Option<u16>,
13}
14
15impl Display for SportsPlayersEndpointUrl {
16 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
17 write!(f, "https://statsapi.mlb.com/api/v1/sports/{id}/players{params}", id = self.id, params = gen_params! { "sportId": self.id, "season"?: self.season })
18 }
19}
20
21impl Url<SportsPlayersResponse> for SportsPlayersEndpointUrl {}
22
23#[cfg(test)]
24mod tests {
25 use chrono::{Datelike, Local};
26 use crate::endpoints::sports::SportId;
27 use crate::endpoints::Url;
28 use super::*;
29
30 #[tokio::test]
31 async fn parse_all_players() {
32 for season in 1876..=Local::now().year() as _ {
33 let _response = SportsPlayersEndpointUrl { id: SportId::MLB, season: Some(season) }.get().await.unwrap();
34 }
35 }
36}