Skip to main content

rl_lang/interpreter/stdlib/http/
common.rs

1use crate::interpreter::{
2    evaluator::Evaluator,
3    stdlib::{
4        common::{verr, vi, vok, vs},
5        http::HttpHandle,
6    },
7    values::Value,
8};
9
10pub fn ureq_result_to_value(url: &str, result: Result<ureq::Response, ureq::Error>) -> Value {
11    match result {
12        Ok(response) => {
13            let status = response.status() as i64;
14            let body = response.into_string().unwrap_or_default();
15            vok!(Value::Tuple(vec![vi!(status), vs!(body)]))
16        }
17        Err(ureq::Error::Status(code, response)) => {
18            let body = response.into_string().unwrap_or_default();
19            vok!(Value::Tuple(vec![vi!(code as i64), vs!(body)]))
20        }
21        Err(e) => {
22            verr!(vs!(format!("{}: {}", url, e)))
23        }
24    }
25}
26
27pub fn insert_handle(eval: &mut Evaluator, handle: HttpHandle) -> i64 {
28    let id = eval.http_next_handle;
29    eval.http_next_handle += 1;
30    eval.http_handles.insert(id, handle);
31    id
32}