extern crate env_logger;
extern crate ezomyte;
extern crate futures;
#[macro_use] extern crate log;
extern crate tokio_core;
use std::env;
use std::process::exit;
use futures::Stream;
use tokio_core::reactor::Core;
const USER_AGENT: &str = "ezomyte example:mod_values";
fn main() {
env_logger::init();
let args: Vec<_> = env::args().skip(1).collect();
if args.len() != 2 {
error!("Expected two arguments, got {}", args.len());
exit(2);
}
let query = &args[0];
let threshold: u64 = args[1].parse().unwrap();
let mut core = Core::new().unwrap();
let client = ezomyte::Client::new(USER_AGENT, &core.handle());
core.run(
client.stashes().all().for_each(|stash| {
for item in &stash.items {
let mut matches = false;
for mod_ in item.mods() {
if !mod_.as_str().contains(query) {
continue;
}
if let Some(ref vs) = mod_.values() {
assert!(vs.len() > 0);
let avg = vs.iter().sum::<f64>() / vs.len() as f64;
if avg >= threshold as f64 {
matches = true;
break;
}
}
}
if matches {
println!("{:?}", item);
}
}
Ok(())
})
).unwrap();
}