teo_runtime/response/
error.rs1use hyper::header::CONTENT_TYPE;
2use mime::APPLICATION_JSON;
3use teo_result::Error;
4use crate::response::Response;
5use crate::{teon, Value};
6
7impl From<Error> for Response {
8 fn from(value: Error) -> Self {
9 let code = value.code;
10 let t = value.inferred_title();
11 let msg = value.message();
12 let errors = value.errors.as_ref().map(|e| Value::Dictionary(e.iter().map(|(k ,v)| (k.clone(), Value::String(v.clone()))).collect()));
13 let mut teon_value = teon!({
14 "type": t.as_ref(),
15 "message": msg,
16 });
17 if let Some(errors) = errors {
18 teon_value["errors"] = errors;
19 }
20 let response = Response::teon(teon_value);
21 response.headers().insert(CONTENT_TYPE.as_str(), APPLICATION_JSON.essence_str()).unwrap();
22 response.set_code(code);
23 response
24 }
25}