apimock_server/response/
json_response.rs1use std::collections::HashMap;
2
3use hyper::HeaderMap;
4use serde_json::Value;
5
6use crate::{
7 response::error_response::internal_server_error_response, response_handler::ResponseHandler,
8 types::BoxBody,
9};
10
11pub fn json_response(
13 json_str: &str,
14 custom_headers: Option<&HashMap<String, Option<String>>>,
15 request_headers: &HeaderMap,
16 file_path: &str,
17) -> Result<hyper::Response<BoxBody>, hyper::http::Error> {
18 match json5::from_str::<Value>(json_str) {
19 Ok(content) => {
20 let body = content.to_string();
21
22 let mut response_handler = ResponseHandler::default();
23
24 if let Some(custom_headers) = custom_headers.clone() {
25 response_handler = response_handler.with_headers(custom_headers.to_owned());
26 }
27
28 response_handler
29 .with_json_body(body.as_str())
30 .into_response(request_headers)
31 }
32 _ => internal_server_error_response(
33 &format!("{}: invalid json content", file_path),
34 request_headers,
35 ),
36 }
37}