use std::path::PathBuf;
use super::json::*;
use super::api::*;
pub struct EvalParameters<'l> {
pub panel: Option<&'l str>,
}
fn init_eval_request_body(p: &EvalParameters) -> JsonMap
{
let mut req = JsonMap::new();
if let Some(panel_id) = p.panel {
set_json_str_value(&mut req, "panel", panel_id);
}
req
}
fn build_eval_json_request(body: JsonMap) -> ClientRequest {
let mut req = ClientRequest::post(format!("eval"));
req.set_json_body(body);
req
}
pub fn eval_text_request(p: EvalParameters, text: &str)
-> ClientRequest
{
let mut body = init_eval_request_body(&p);
set_json_str_value(&mut body, "script", text);
build_eval_json_request(body)
}
fn build_stream_eval_request(p: EvalParameters) -> ClientRequest
{
let mut req = ClientRequest::post(format!("panels/{}/eval",
p.panel.unwrap_or("default")));
req.set_header("Content-Type", "application/javascript");
req
}
pub fn eval_file_request(p: EvalParameters, filename: &str)
-> ClientRequest
{
let mut req = build_stream_eval_request(p);
req.set_file_body(PathBuf::from(filename));
req
}
pub fn eval_stdin_request(p: EvalParameters)
-> ClientRequest
{
let mut req = build_stream_eval_request(p);
req.set_stdin_body();
req
}