rl_lang/interpreter/stdlib/http/
common.rs1use 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}