use crate::request::*;
#[derive(Default)]
pub struct UpcomingRequestBuilder {
top_tier: bool,
events: Vec<u32>,
event_filter: EventTypeFilter,
}
pub fn upcoming() -> UpcomingRequestBuilder {
UpcomingRequestBuilder::default()
}
impl UpcomingRequestBuilder {
#[must_use]
pub fn top_tier(mut self) -> Self {
self.top_tier = true;
self
}
#[must_use]
pub fn events(mut self, event_ids: Vec<u32>) -> Self {
self.events = event_ids;
self
}
#[must_use]
pub fn event_type(mut self, event_filter: EventTypeFilter) -> Self {
self.event_filter = event_filter;
self
}
#[must_use]
pub fn build(self) -> Request<Vec<UpcomingMatch>> {
let query = self.query();
Request {
url: format!("{}{}", HLTV_ROOT, query),
_m: PhantomData,
}
}
fn query(self) -> String {
if self.top_tier {
return "matches?predefinedFilter=top_tier".to_string();
}
let mut result = String::from("matches?");
result += &format!("eventType={}", self.event_filter);
for &ev in self.events.iter() {
result += &format!("&event={}", ev);
}
result
}
}