lolapi 0.5.0

Rate limited League of Legends API wrapper (WIP)
Documentation
pub mod champions;
pub mod items;
pub mod language_strings;
pub mod languages;
pub mod maps;
pub mod masteries;
pub mod profile_icons;
pub mod realms;
pub mod runes;
pub mod summoner_spells;
pub mod versions;
use std::fmt::Display;

pub struct Subclient<'a, K: 'a> {
	region: &'static str,
	key: &'a K,
	method_limits: &'a mut MethodLimits,
}
impl<'a, K: Display> Subclient<'a, K> {
	pub(super) fn new(region: &'static str, key: &'a K, method_limits: &'a mut MethodLimits) -> Self {
		Self { region: region, key: key, method_limits: method_limits }
	}

	pub fn champions(&mut self) -> champions::Subclient<K> {
		champions::Subclient::new(self.region, self.key, &mut self.method_limits.champions)
	}

	pub fn items(&mut self) -> items::Subclient<K> {
		items::Subclient::new(self.region, self.key, &mut self.method_limits.items)
	}

	pub fn language_strings(&mut self) -> language_strings::Subclient<K> {
		language_strings::Subclient::new(self.region, self.key, &mut self.method_limits.language_strings)
	}

	pub fn languages(&mut self) -> languages::Subclient<K> {
		languages::Subclient::new(self.region, self.key, &mut self.method_limits.languages)
	}

	pub fn maps(&mut self) -> maps::Subclient<K> {
		maps::Subclient::new(self.region, self.key, &mut self.method_limits.maps)
	}

	pub fn masteries(&mut self) -> masteries::Subclient<K> {
		masteries::Subclient::new(self.region, self.key, &mut self.method_limits.masteries)
	}

	pub fn profile_icons(&mut self) -> profile_icons::Subclient<K> {
		profile_icons::Subclient::new(self.region, self.key, &mut self.method_limits.profile_icons)
	}

	pub fn realms(&mut self) -> realms::Subclient<K> {
		realms::Subclient::new(self.region, self.key, &mut self.method_limits.realms)
	}

	pub fn runes(&mut self) -> runes::Subclient<K> {
		runes::Subclient::new(self.region, self.key, &mut self.method_limits.runes)
	}

	pub fn summoner_spells(&mut self) -> summoner_spells::Subclient<K> {
		summoner_spells::Subclient::new(self.region, self.key, &mut self.method_limits.summoner_spells)
	}

	pub fn versions(&mut self) -> versions::Subclient<K> {
		versions::Subclient::new(self.region, self.key, &mut self.method_limits.versions)
	}
}

pub(super) struct MethodLimits {
	champions: champions::MethodLimits,
	items: items::MethodLimits,
	language_strings: language_strings::MethodLimits,
	languages: languages::MethodLimits,
	maps: maps::MethodLimits,
	masteries: masteries::MethodLimits,
	profile_icons: profile_icons::MethodLimits,
	realms: realms::MethodLimits,
	runes: runes::MethodLimits,
	summoner_spells: summoner_spells::MethodLimits,
	versions: versions::MethodLimits,
}
impl MethodLimits {
	pub fn new() -> Self {
		Self {
			champions: champions::MethodLimits::new(),
			items: items::MethodLimits::new(),
			language_strings: language_strings::MethodLimits::new(),
			languages: languages::MethodLimits::new(),
			maps: maps::MethodLimits::new(),
			masteries: masteries::MethodLimits::new(),
			profile_icons: profile_icons::MethodLimits::new(),
			realms: realms::MethodLimits::new(),
			runes: runes::MethodLimits::new(),
			summoner_spells: summoner_spells::MethodLimits::new(),
			versions: versions::MethodLimits::new(),
		}
	}
}