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