Clean up lots of duplication on the weather code.
This commit is contained in:
parent
781c2806b7
commit
a356b7631d
1 changed files with 8 additions and 27 deletions
35
src/main.rs
35
src/main.rs
|
@ -123,40 +123,21 @@ fn handle_privmsg(target: &String, message_body: &String, message_obj: &Message,
|
|||
}
|
||||
|
||||
fn get_weather(api_key: &String, location_city: &String, location_area: &String) -> String {
|
||||
let client = Client::new();
|
||||
let data_type = "conditions";
|
||||
let url = &format!("{}{}/{}/q/{}/{}.json", WEATHER_API_BASE, api_key, data_type, location_area, location_city);
|
||||
println!("Attempting to fetch {}", url);
|
||||
let mut response = match client.get(url).send() {
|
||||
Ok(response) => response,
|
||||
Err(_) => panic!("Error fetching JSON!"),
|
||||
};
|
||||
let mut response_body = String::new();
|
||||
match response.read_to_string(&mut response_body) {
|
||||
Ok(_) => (),
|
||||
Err(_) => panic!("Error reading to buffer"),
|
||||
};
|
||||
let mut reply_message = String::new();
|
||||
if let Ok(parsed_response) = json::Json::from_str(&response_body) {
|
||||
if let Some(ref current_observation) = parsed_response.find("current_observation") {
|
||||
let ref display_location = current_observation.find("display_location").unwrap();
|
||||
let display_location_string = display_location.find("full").unwrap().as_string().unwrap();
|
||||
let temperature_string = current_observation.find("temperature_string").unwrap().as_string().unwrap();
|
||||
let weather = current_observation.find("weather").unwrap().as_string().unwrap();
|
||||
let wind_string = current_observation.find("wind_string").unwrap().as_string().unwrap();
|
||||
let humidity = current_observation.find("relative_humidity").unwrap().as_string().unwrap();
|
||||
let observation_time = current_observation.find("observation_time").unwrap().as_string().unwrap();
|
||||
reply_message = format!("It is {} and {} in {}. Wind: {}, Humidity: {}, {}",
|
||||
weather, temperature_string, display_location_string, wind_string, humidity, observation_time);
|
||||
}
|
||||
}
|
||||
reply_message
|
||||
|
||||
get_weather_inner(&url)
|
||||
}
|
||||
|
||||
fn get_weather_locid(api_key: &String, locid_type: &String, locid: &String) -> String {
|
||||
let client = Client::new();
|
||||
let data_type = "conditions";
|
||||
let url = &format!("{}{}/{}/q/{}:{}.json", WEATHER_API_BASE, api_key, data_type, locid_type, locid);
|
||||
|
||||
get_weather_inner(&url)
|
||||
}
|
||||
|
||||
fn get_weather_inner(url: &String) -> String {
|
||||
let client = Client::new();
|
||||
println!("Attempting to fetch {}", url);
|
||||
let mut response = match client.get(url).send() {
|
||||
Ok(response) => response,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue