use std::collections::HashMap;
use std::fmt::Write;
use ::constants::API_URL;
use ::Result;
#[inline]
pub fn uri(token: &str, lat: f64, long: f64) -> String {
format!("{}/forecast/{}/{},{}?units=auto", API_URL, token, lat, long)
}
#[inline]
pub fn uri_optioned(
token: &str,
lat: f64,
long: f64,
time: Option<String>,
options: HashMap<&'static str, String>,
) -> Result<String> {
let mut uri = String::new();
uri.push_str(API_URL);
uri.push_str("/forecast/");
uri.push_str(token);
uri.push('/');
write!(uri, "{}", lat)?;
uri.push(',');
write!(uri, "{}", long)?;
if let Some(time) = time {
uri.push(',');
write!(uri, "{}", time)?;
}
uri.push('?');
for (k, v) in options {
uri.push_str(k);
uri.push('=');
{
let v_bytes = v.into_bytes();
unsafe {
let bytes = uri.as_mut_vec();
bytes.extend(v_bytes);
}
}
uri.push('&');
}
Ok(uri)
}