use futures::{Future as StdFuture, stream, Stream as StdStream};
use hyper::client::Connect;
use ::Client;
use super::Stream;
#[derive(Debug)]
pub struct LeagueRules<C>
where C: Clone + Connect
{
client: Client<C>,
}
impl<C: Clone + Connect> LeagueRules<C> {
#[inline]
pub(crate) fn new(client: Client<C>) -> Self {
LeagueRules { client }
}
}
impl<C: Clone + Connect> LeagueRules<C> {
#[inline]
pub fn all(&self) -> Stream<LeagueRule> {
self.get_league_rules_stream()
}
fn get_league_rules_stream(&self) -> Stream<LeagueRule> {
Box::new(
self.client.get(LEAGUE_RULES_URL)
.map(|resp: LeagueRulesResponse| stream::iter_ok(resp))
.into_stream()
.flatten()
)
}
}
const LEAGUE_RULES_URL: &str = "/league-rules";
#[derive(Debug, Deserialize)]
pub struct LeagueRule {
pub id: u64,
pub name: String,
pub description: String,
}
type LeagueRulesResponse = Vec<LeagueRule>;