Skip to content

Commit ff7b4a8

Browse files
authored
🚸 Prettify JSON response body (#38)
GH-5
1 parent cf0629a commit ff7b4a8

File tree

4 files changed

+38
-7
lines changed

4 files changed

+38
-7
lines changed

‎.travis.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ branches:
5656
only:
5757
# release tags
5858
- /^v\d+\.\d+\.\d+.*$/
59-
- master
6059

6160
notifications:
6261
email:

‎appveyor.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ branches:
5959
only:
6060
# Release tags
6161
- /^v\d+\.\d+\.\d+.*$/
62-
- master
6362

6463
notifications:
6564
- provider: Email

‎src/response_handler/mod.rs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,11 +97,26 @@ impl DefaultOutputter {
9797
}
9898
}
9999

100+
fn prettify_response_body(body: &str) -> String {
101+
match serde_json::from_str(body) {
102+
Ok(serde_json::Value::Object(response_body)) => {
103+
serde_json::to_string_pretty(&response_body).unwrap()
104+
}
105+
_ => String::from(body),
106+
}
107+
}
108+
100109
impl Outputter for DefaultOutputter {
101110
type Response = DefaultResponse;
102111

103112
fn output_response(&mut self, response: &Self::Response) -> Result<(), Error> {
104113
println!("{}", response);
114+
115+
let DefaultResponse(Response { body, .. }) = response;
116+
117+
let body = prettify_response_body(body.as_str());
118+
println!("\n{}", body);
119+
105120
Ok(())
106121
}
107122

@@ -153,12 +168,10 @@ impl Display for DefaultResponse {
153168
.collect();
154169
formatter.write_fmt(format_args!(
155170
"{http_version} {status}\
156-
{headers}
157-
{body}",
171+
{headers}",
158172
http_version = response.version,
159173
status = response.status,
160-
headers = headers,
161-
body = format!("\n{}", response.body),
174+
headers = headers
162175
))
163176
}
164177
}

‎src/response_handler/tests.rs

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
use crate::model::{Response, Version};
22
use crate::response_handler::boa::DefaultResponseHandler;
3-
use crate::response_handler::{DefaultResponse, ResponseHandler, ScriptResponse};
3+
use crate::response_handler::{
4+
prettify_response_body, DefaultResponse, ResponseHandler, ScriptResponse,
5+
};
46
use crate::script_engine::boa::BoaScriptEngine;
57
use crate::script_engine::{Script, ScriptEngine};
68
use serde_json::{Map, Value};
@@ -39,6 +41,24 @@ fn test_headers_available_in_response() {
3941
assert_eq!("SomeTokenValue", result);
4042
}
4143

44+
#[test]
45+
fn test_output_is_prettified() {
46+
let pretty_body = prettify_response_body("simple");
47+
48+
assert_eq!("simple", pretty_body);
49+
50+
let pretty_body = prettify_response_body("{\"stuff\": \"andThings\"}");
51+
52+
assert_eq!(
53+
"\
54+
{
55+
\"stuff\": \"andThings\"
56+
}\
57+
",
58+
pretty_body
59+
);
60+
}
61+
4262
#[test]
4363
fn test_headers_for_script_response() {
4464
let response = DefaultResponse(Response {

0 commit comments

Comments
 (0)