KB: remove mapping class
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
c7826d868b
commit
3906d6cc42
5 changed files with 30 additions and 51 deletions
|
@ -108,7 +108,7 @@ impl DataSource for CGGDataSource {
|
||||||
fn get_champs_with_positions_and_patch(
|
fn get_champs_with_positions_and_patch(
|
||||||
&self,
|
&self,
|
||||||
client: &ureq::Agent,
|
client: &ureq::Agent,
|
||||||
) -> (IndexMap<String, Vec<String>>, String) {
|
) -> (IndexMap<u32, Vec<String>>, String) {
|
||||||
let req = client.get("https://champion.gg").call().unwrap();
|
let req = client.get("https://champion.gg").call().unwrap();
|
||||||
let page = &req.into_string().unwrap();
|
let page = &req.into_string().unwrap();
|
||||||
|
|
||||||
|
@ -126,9 +126,9 @@ impl DataSource for CGGDataSource {
|
||||||
}
|
}
|
||||||
let patch = datas.lol.champions_report[0].patch.to_owned();
|
let patch = datas.lol.champions_report[0].patch.to_owned();
|
||||||
|
|
||||||
let mut champions: IndexMap<String, Vec<String>> = IndexMap::new();
|
let mut champions: IndexMap<u32, Vec<String>> = IndexMap::new();
|
||||||
for champ in &datas.lol.champions_report {
|
for champ in &datas.lol.champions_report {
|
||||||
let id = champ.champion_id.to_string();
|
let id = champ.champion_id;
|
||||||
if champions.contains_key(&id) {
|
if champions.contains_key(&id) {
|
||||||
let mut roles = champions.get(&id).unwrap().to_owned();
|
let mut roles = champions.get(&id).unwrap().to_owned();
|
||||||
roles.push(champ.role.to_owned());
|
roles.push(champ.role.to_owned());
|
||||||
|
|
|
@ -47,7 +47,7 @@ pub trait DataSource {
|
||||||
fn get_champs_with_positions_and_patch(
|
fn get_champs_with_positions_and_patch(
|
||||||
&self,
|
&self,
|
||||||
client: &ureq::Agent,
|
client: &ureq::Agent,
|
||||||
) -> (IndexMap<String, Vec<String>>, String);
|
) -> (IndexMap<u32, Vec<String>>, String);
|
||||||
|
|
||||||
fn get_champ_data_with_win_pourcentage(
|
fn get_champ_data_with_win_pourcentage(
|
||||||
&self,
|
&self,
|
||||||
|
|
|
@ -91,7 +91,6 @@ struct Summoner {
|
||||||
|
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
static ref TOKEN: Mutex<Option<String>> = Mutex::new(None);
|
static ref TOKEN: Mutex<Option<String>> = Mutex::new(None);
|
||||||
static ref INTERNAL_CLASSNAME_MAPPING: Mutex<IndexMap<String, String>> = Mutex::new(IndexMap::new());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl KBDataSource {
|
impl KBDataSource {
|
||||||
|
@ -120,16 +119,6 @@ impl KBDataSource {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_classname_mapping(&self, client: &ureq::Agent) -> IndexMap<String, String> {
|
|
||||||
let mut mapping = IndexMap::new();
|
|
||||||
if let Some(data) = self.get_champion_response(client) {
|
|
||||||
for champ in data.champions {
|
|
||||||
mapping.insert(champ.classname, champ.name);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
mapping
|
|
||||||
}
|
|
||||||
|
|
||||||
fn get_champion_response(&self, client: &ureq::Agent) -> Option<ChampionResponse> {
|
fn get_champion_response(&self, client: &ureq::Agent) -> Option<ChampionResponse> {
|
||||||
if let Some(token) = TOKEN.lock().unwrap().as_ref() {
|
if let Some(token) = TOKEN.lock().unwrap().as_ref() {
|
||||||
return match client
|
return match client
|
||||||
|
@ -291,10 +280,6 @@ impl DataSource for KBDataSource {
|
||||||
if let Some(t) = self.get_auth_token(client) {
|
if let Some(t) = self.get_auth_token(client) {
|
||||||
TOKEN.lock().unwrap().replace(t);
|
TOKEN.lock().unwrap().replace(t);
|
||||||
}
|
}
|
||||||
|
|
||||||
for v in self.get_classname_mapping(client) {
|
|
||||||
INTERNAL_CLASSNAME_MAPPING.lock().unwrap().insert(v.0, v.1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_alias(&self) -> &str {
|
fn get_alias(&self) -> &str {
|
||||||
|
@ -308,7 +293,7 @@ impl DataSource for KBDataSource {
|
||||||
fn get_champs_with_positions_and_patch(
|
fn get_champs_with_positions_and_patch(
|
||||||
&self,
|
&self,
|
||||||
client: &ureq::Agent,
|
client: &ureq::Agent,
|
||||||
) -> (IndexMap<String, Vec<String>>, String) {
|
) -> (IndexMap<u32, Vec<String>>, String) {
|
||||||
let mut champions = IndexMap::new();
|
let mut champions = IndexMap::new();
|
||||||
let data: ChampionResponse = match self.get_champion_response(client) {
|
let data: ChampionResponse = match self.get_champion_response(client) {
|
||||||
Some(val) => val,
|
Some(val) => val,
|
||||||
|
@ -321,7 +306,7 @@ impl DataSource for KBDataSource {
|
||||||
None => return (champions, String::new()),
|
None => return (champions, String::new()),
|
||||||
};
|
};
|
||||||
for champ in data.champions {
|
for champ in data.champions {
|
||||||
champions.insert(champ.classname, KBDataSource::get_positions(champ.builds));
|
champions.insert(champ.id, KBDataSource::get_positions(champ.builds));
|
||||||
}
|
}
|
||||||
(champions, patch)
|
(champions, patch)
|
||||||
}
|
}
|
||||||
|
@ -334,11 +319,10 @@ impl DataSource for KBDataSource {
|
||||||
) -> Vec<(String, Vec<Value>, Stat)> {
|
) -> Vec<(String, Vec<Value>, Stat)> {
|
||||||
let mut champ_data = vec![];
|
let mut champ_data = vec![];
|
||||||
if let Some(token) = TOKEN.lock().unwrap().as_ref() {
|
if let Some(token) = TOKEN.lock().unwrap().as_ref() {
|
||||||
if let Some(map_id) = INTERNAL_CLASSNAME_MAPPING.lock().unwrap().get(&champ.id) {
|
|
||||||
let data: BuildResponse = match client
|
let data: BuildResponse = match client
|
||||||
.get(&format!(
|
.get(&format!(
|
||||||
"https://api.koreanbuilds.net/builds?chmpname={}&patchid=-2&position=COMPOSITE",
|
"https://api.koreanbuilds.net/builds?chmpname={}&patchid=-2&position=COMPOSITE",
|
||||||
map_id
|
champ.id
|
||||||
))
|
))
|
||||||
.set("Accept", "application/json")
|
.set("Accept", "application/json")
|
||||||
.set("Authorization", token.as_str())
|
.set("Authorization", token.as_str())
|
||||||
|
@ -369,7 +353,6 @@ impl DataSource for KBDataSource {
|
||||||
champ_data.push(self.get_build(&b));
|
champ_data.push(self.get_build(&b));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
champ_data
|
champ_data
|
||||||
}
|
}
|
||||||
|
@ -396,7 +379,8 @@ mod tests {
|
||||||
let client = ureq::AgentBuilder::new()
|
let client = ureq::AgentBuilder::new()
|
||||||
.timeout(Duration::from_secs(10))
|
.timeout(Duration::from_secs(10))
|
||||||
.build();
|
.build();
|
||||||
let datasource = KBDataSource::new(&client);
|
let datasource = KBDataSource;
|
||||||
|
datasource.init(&client);
|
||||||
let champs_with_positions_and_patch =
|
let champs_with_positions_and_patch =
|
||||||
datasource.get_champs_with_positions_and_patch(&client);
|
datasource.get_champs_with_positions_and_patch(&client);
|
||||||
assert!(champs_with_positions_and_patch.0.len() > 0);
|
assert!(champs_with_positions_and_patch.0.len() > 0);
|
||||||
|
@ -407,15 +391,16 @@ mod tests {
|
||||||
let client = ureq::AgentBuilder::new()
|
let client = ureq::AgentBuilder::new()
|
||||||
.timeout(Duration::from_secs(10))
|
.timeout(Duration::from_secs(10))
|
||||||
.build();
|
.build();
|
||||||
let datasource = KBDataSource::new(&client);
|
let datasource = KBDataSource;
|
||||||
|
datasource.init(&client);
|
||||||
let champ = ChampInfo {
|
let champ = ChampInfo {
|
||||||
id: String::from("Aatrox"),
|
id: String::from("Annie"),
|
||||||
name: String::from("Aatrox"),
|
name: String::from("Annie"),
|
||||||
key: String::from("1"),
|
key: String::from("1"),
|
||||||
};
|
};
|
||||||
let result = datasource.get_champ_data_with_win_pourcentage(
|
let result = datasource.get_champ_data_with_win_pourcentage(
|
||||||
&champ,
|
&champ,
|
||||||
&vec!["TOP".to_string()],
|
&vec!["MID".to_string()],
|
||||||
&client,
|
&client,
|
||||||
);
|
);
|
||||||
assert!(!result.is_empty());
|
assert!(!result.is_empty());
|
||||||
|
|
36
src/main.rs
36
src/main.rs
|
@ -118,9 +118,9 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_champ_from_key(champs: &Champion, key: &str) -> Option<String> {
|
fn get_champ_from_key(champs: &Champion, key: u32) -> Option<String> {
|
||||||
for champ in champs.data.values() {
|
for champ in champs.data.values() {
|
||||||
if key == champ.key {
|
if key.to_string() == champ.key {
|
||||||
return Some(champ.id.to_owned());
|
return Some(champ.id.to_owned());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -152,7 +152,7 @@ fn execute_data_source(
|
||||||
champion,
|
champion,
|
||||||
lol_champs_dir,
|
lol_champs_dir,
|
||||||
&patch,
|
&patch,
|
||||||
id,
|
*id,
|
||||||
positions,
|
positions,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -164,7 +164,7 @@ fn execute_data_source(
|
||||||
champion,
|
champion,
|
||||||
lol_champs_dir,
|
lol_champs_dir,
|
||||||
&patch,
|
&patch,
|
||||||
id,
|
*id,
|
||||||
positions,
|
positions,
|
||||||
);
|
);
|
||||||
thread::sleep(Duration::from_millis(data_source.get_timeout()));
|
thread::sleep(Duration::from_millis(data_source.get_timeout()));
|
||||||
|
@ -178,27 +178,21 @@ fn get_and_write_item_set(
|
||||||
champion: &Champion,
|
champion: &Champion,
|
||||||
lol_champs_dir: &PathBuf,
|
lol_champs_dir: &PathBuf,
|
||||||
patch: &str,
|
patch: &str,
|
||||||
id: &str,
|
id: u32,
|
||||||
positions: &[String],
|
positions: &[String],
|
||||||
) {
|
) {
|
||||||
let mut champ_id: String = id.to_owned();
|
if let Some(champ_id) = get_champ_from_key(&champion, id) {
|
||||||
|
if let Some(champ) = champion.data.get(&champ_id) {
|
||||||
if id.parse::<u32>().is_ok() {
|
if positions.is_empty() {
|
||||||
if let Some(c_id) = get_champ_from_key(&champion, &champ_id) {
|
error!("{}: {} empty positions", data_source.get_alias(), &champ_id);
|
||||||
champ_id = c_id;
|
} else {
|
||||||
}
|
let path = lol_champs_dir.join(&champ_id).join("Recommended");
|
||||||
}
|
fs::create_dir_all(&path).unwrap();
|
||||||
|
data_source.write_item_set(&champ, &positions, &patch, &path, &client);
|
||||||
if let Some(champ) = champion.data.get(&champ_id) {
|
}
|
||||||
if positions.is_empty() {
|
|
||||||
error!("{}: {} empty positions", data_source.get_alias(), &champ_id);
|
|
||||||
} else {
|
} else {
|
||||||
let path = lol_champs_dir.join(&champ_id).join("Recommended");
|
error!("{} not found in LoL champs", &champ_id);
|
||||||
fs::create_dir_all(&path).unwrap();
|
|
||||||
data_source.write_item_set(&champ, &positions, &patch, &path, &client);
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
error!("{} not found in LoL champs", &champ_id);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ impl DataSource for PBDataSource {
|
||||||
fn get_champs_with_positions_and_patch(
|
fn get_champs_with_positions_and_patch(
|
||||||
&self,
|
&self,
|
||||||
_client: &ureq::Agent,
|
_client: &ureq::Agent,
|
||||||
) -> (IndexMap<String, Vec<String>>, String) {
|
) -> (IndexMap<u32, Vec<String>>, String) {
|
||||||
(IndexMap::new(), String::new())
|
(IndexMap::new(), String::new())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue