mod builder;
mod response;
mod types;
pub use builder::GetHypeTrainEventsBuilder;
pub use response::{HypeTrainResponse, HypeTrainStatusResponse};
pub use types::{
AllTimeHigh, Current, HypeTrain, HypeTrainContribution, HypeTrainEvent, HypeTrainStatus,
HypeTrainType, SharedAllTimeHigh, SharedTrainParticipant,
};
use crate::types::{
constants::{HYPE_TRAIN, STATUS},
BroadcasterId,
};
use crate::{request::TwitchAPIRequest, TwitchAPI};
pub trait HypeTrainAPI {
#[deprecated(
since = "0.2.1",
note = "Use get_hype_train_status instead. Removed by Twitch on Dec 4, 2025"
)]
fn get_hype_train_events<'a>(
&'a self,
broadcaster_id: &'a BroadcasterId,
) -> GetHypeTrainEventsBuilder<'a>;
fn get_hype_train_status(
&self,
broadcaster_id: &BroadcasterId,
) -> TwitchAPIRequest<HypeTrainStatusResponse>;
}
impl HypeTrainAPI for TwitchAPI {
fn get_hype_train_events<'a>(
&'a self,
broadcaster_id: &'a BroadcasterId,
) -> GetHypeTrainEventsBuilder<'a> {
GetHypeTrainEventsBuilder::new(self, broadcaster_id)
}
simple_endpoint!(
fn get_hype_train_status(
broadcaster_id: &BroadcasterId
) -> HypeTrainStatusResponse;
endpoint: GetHypeTrainStatus,
method: GET,
path: [HYPE_TRAIN, STATUS],
);
}