libedgegrid 0.1.0

This library implements an Authentication handler for the Akamai OPEN EdgeGrid Authentication scheme in Rust
use auth::EdgeGridAuth;
use request;
use request::HttpRequestVerb::*;

#[derive(Debug)]
pub enum DigQueryType {
    A,
    CNAME,
    MX,
}

impl <'a> From<&'a str> for DigQueryType {
    fn from(qt: &'a str) -> DigQueryType {
        match qt {
            "A"     => DigQueryType::A,
            "CNAME" => DigQueryType::CNAME,
            "MX"    => DigQueryType::MX,
            _       => panic!("Unknown query type!"),
        }
    }
}

pub fn dig(
    edge_grid_auth: &EdgeGridAuth,
    host: &str,
    loc: &str,
    query_type: &str
) -> ::EdgeGridResponse{
    let qt = DigQueryType::from(query_type);
    let mut relurl = String::from("/diagnostic-tools/v1/dig");
    relurl.push_str("?");
    relurl.push_str(&format!("hostname={}&", host)[..]);
    relurl.push_str(&format!("location={}&", loc)[..]);
    relurl.push_str(&format!("queryType={:?}", qt)[..]);
    Ok(try!(request::request(edge_grid_auth, &relurl[..], None, GET)))
}

pub fn error_translate(
    edge_grid_auth: &EdgeGridAuth,
    error_code: &str
) -> ::EdgeGridResponse {
    let mut relurl = String::from("/diagnostic-tools/v1/errortranslator");
    relurl.push_str(&format!("?errorCode={}", error_code)[..]);
    Ok(try!(request::request(edge_grid_auth, &relurl[..], None, GET)))
}

pub fn geo(edge_grid_auth: &EdgeGridAuth, ip: &str) -> ::EdgeGridResponse {
    let mut relurl = String::from("/diagnostic-tools/v1/ipgeolocator");
    relurl.push_str(&format!("?ip={}", ip)[..]);
    Ok(try!(request::request(edge_grid_auth, &relurl[..], None, GET)))
}

pub fn locations(edge_grid_auth: &EdgeGridAuth) -> ::EdgeGridResponse {
    let relurl = "/diagnostic-tools/v1/locations";
    Ok(try!(request::request(edge_grid_auth, relurl, None, GET)))
}

pub fn mtr(
    edge_grid_auth: &EdgeGridAuth,
    dest: &str,
    loc: &str
) -> ::EdgeGridResponse {
    let mut relurl = String::from("/diagnostic-tools/v1/mtr");
    relurl.push_str("?");
    relurl.push_str(&format!("destinationDomain={}&", dest)[..]);
    relurl.push_str(&format!("location={}", loc)[..]);
    Ok(try!(request::request(edge_grid_auth, &relurl[..], None, GET)))
}

pub fn translate(
    edge_grid_auth: &EdgeGridAuth,
    url: &str
) -> ::EdgeGridResponse {
    let mut relurl = String::from("/diagnostic-tools/v1/akamaitranslator");
    relurl.push_str(&format!("?hostname={}", url)[..]);
    Ok(try!(request::request(edge_grid_auth, &relurl[..], None, GET)))
}

pub fn verify(
    edge_grid_auth: &EdgeGridAuth,
    ip: &str
) -> ::EdgeGridResponse {
    let mut relurl = String::from("/diagnostic-tools/v1/verifycdnip");
    relurl.push_str(&format!("?ip={}", ip)[..]);
    Ok(try!(request::request(edge_grid_auth, &relurl[..], None, GET)))
}