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)))
}