1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
#[macro_use] extern crate log; extern crate reqwest; #[macro_use] extern crate serde; use model::{Ability, Gear, Ship, Unit}; mod model; const BASE_API_URL: &str = "https://swgoh.gg/api/"; pub fn get_abilities() -> reqwest::Result<Vec<Ability>> { let request_url = format!("{}{}", BASE_API_URL, "abilities/"); debug!("Request url: {}", request_url); Ok(reqwest::get(&request_url)?.json()?) } pub fn get_gears() -> reqwest::Result<Vec<Gear>> { let request_url = format!("{}{}", BASE_API_URL, "gear/"); debug!("Request url: {}", request_url); Ok(reqwest::get(&request_url)?.json()?) } pub fn get_ships() -> reqwest::Result<Vec<Ship>> { let request_url = format!("{}{}", BASE_API_URL, "ships/"); debug!("Request url: {}", request_url); Ok(reqwest::get(&request_url)?.json()?) } pub fn get_units() -> reqwest::Result<Vec<Unit>> { let request_url = format!("{}{}", BASE_API_URL, "characters/"); debug!("Request url: {}", request_url); Ok(reqwest::get(&request_url)?.json()?) } #[cfg(test)] mod tests { use super::*; #[test] fn ability_works() { get_abilities().unwrap(); } #[test] fn gears_works() { get_gears().unwrap(); } #[test] fn ships_works() { get_ships().unwrap(); } #[test] fn unit_works() { let units = get_units().unwrap(); let mt: Vec<&Unit> = units.iter().filter(|u| u.pk == 200).collect(); assert_eq!(mt.len(), 1); assert_eq!(&mt[0].name, "Darth Vader"); } }