use super::super::{BrowserSession, access};
use crate::browser::{BrowserError, BrowserOutput, request::AxiosRequest};
use std::time::Duration;
const EVAL_TIMEOUT: Duration = Duration::from_secs(60);
pub async fn axios(
session: &BrowserSession,
request: AxiosRequest,
) -> Result<BrowserOutput, BrowserError> {
let page = access::current_page(session).await?;
let script = super::axios_tmpl::build_script(request)?;
let result = tokio::time::timeout(EVAL_TIMEOUT, page.evaluate_expression(script))
.await
.map_err(|_| BrowserError::EvaluationTimeout)??;
let value = result
.object()
.value
.clone()
.unwrap_or(serde_json::json!({"ok": false, "status": 0, "error": "no value"}));
Ok(BrowserOutput::Json(value))
}