libedgegrid 0.1.1

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

#[cfg(feature = "serde_macros")]
include!("req.rs.in");

#[cfg(not(feature = "serde_macros"))]
include!(concat!(env!("OUT_DIR"), "/ccu/req.rs"));

impl PurgeArls {
    pub fn new(arls: Vec<String>) -> PurgeArls {
        PurgeArls { objects: arls }
    }
}

impl PurgeCPCodes {
    pub fn new(cpcodes: Vec<String>) -> PurgeCPCodes {
        let mut codes: Vec<usize> = Vec::new();

        for code in cpcodes.iter() {
            match usize::from_str(code) {
                Ok(c) => {
                    codes.push(c);
                }
                Err(e) => {
                    error!("{:?}", e);
                }
            }
        }

        PurgeCPCodes {
            objects: codes,
            action: String::from("remove"),
            purge_type: String::from("cpcode"),
        }
    }
}

const BASE_URL: &'static str = "/ccu/v2/";

fn purge(edge_grid_auth: &EdgeGridAuth, queue_name: &str, json: &str) -> ::EdgeGridResponse {
    let relurl = &format!("{}queues/{}", BASE_URL, queue_name)[..];
    Ok(try!(request::request(edge_grid_auth, relurl, Some(json), POST)))
}

pub fn purge_by_arl(edge_grid_auth: &EdgeGridAuth,
                    queue_name: &str,
                    body: PurgeArls)
                    -> ::EdgeGridResponse {
    let json = &try!(serde_json::to_string(&body))[..];
    purge(edge_grid_auth, queue_name, json)
}

pub fn purge_by_cpcode(edge_grid_auth: &EdgeGridAuth,
                       queue_name: &str,
                       body: PurgeCPCodes)
                       -> ::EdgeGridResponse {
    let json = &try!(serde_json::to_string(&body))[..];
    purge(edge_grid_auth, queue_name, json)
}

pub fn purge_status(edge_grid_auth: &EdgeGridAuth, purge_id: &str) -> ::EdgeGridResponse {
    let relurl = &format!("{}purges/{}", BASE_URL, purge_id)[..];
    Ok(try!(request::request(edge_grid_auth, relurl, None, GET)))
}

pub fn queue_length(edge_grid_auth: &EdgeGridAuth, queue_name: &str) -> ::EdgeGridResponse {
    let relurl = &format!("{}queues/{}", BASE_URL, queue_name)[..];
    Ok(try!(request::request(edge_grid_auth, relurl, None, GET)))
}