Skip to main content

mlb_api/requests/jobs/
datacasters.rs

1use crate::MLB_API_DATE_FORMAT;
2use bon::Builder;
3use chrono::NaiveDate;
4use std::fmt::{Display, Formatter};
5use crate::jobs::JobsResponse;
6use crate::request::{RequestURL, RequestURLBuilderExt};
7use crate::sport::SportId;
8
9/// Returns [`JobsResponse`]
10///
11/// This request can be replicated with [`JobsRequest`](super::JobsRequest) and a datacaster job type.
12///
13/// Example: <http://statsapi.mlb.com/api/v1/jobs/datacasters>
14#[derive(Builder)]
15#[builder(derive(Into))]
16pub struct JobsDatacastersRequest {
17    #[builder(into, default)]
18    sport_id: SportId,
19    date: Option<NaiveDate>,
20}
21
22impl Display for JobsDatacastersRequest {
23    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
24        write!(f, "http://statsapi.mlb.com/api/v1/jobs/datacasters{}", gen_params! { "sportId": self.sport_id, "date"?: self.date.as_ref().map(|date| date.format(MLB_API_DATE_FORMAT)) })
25    }
26}
27
28impl RequestURL for JobsDatacastersRequest {
29    type Response = JobsResponse;
30}
31
32impl<S: jobs_datacasters_request_builder::State + jobs_datacasters_request_builder::IsComplete> RequestURLBuilderExt for JobsDatacastersRequestBuilder<S> {
33    type Built = JobsDatacastersRequest;
34}