diff --git a/graphql_client_cli/src/introspect_schema.rs b/graphql_client_cli/src/introspect_schema.rs index 0791ee8a..36a0f8f5 100644 --- a/graphql_client_cli/src/introspect_schema.rs +++ b/graphql_client_cli/src/introspect_schema.rs @@ -1,3 +1,4 @@ +use crate::error::Error; use crate::CliResult; use graphql_client::GraphQLQuery; use reqwest::header::{HeaderMap, HeaderValue, ACCEPT, CONTENT_TYPE}; @@ -53,9 +54,17 @@ pub fn introspect_schema( if res.status().is_success() { // do nothing } else if res.status().is_server_error() { - println!("server error!"); + return Err(Error::message("server error!".into())); } else { - println!("Something else happened. Status: {:?}", res.status()); + let status = res.status(); + let error_message = match res.text() { + Ok(msg) => match serde_json::from_str::(&msg) { + Ok(json) => format!("HTTP {}\n{}", status, serde_json::to_string_pretty(&json)?), + Err(_) => format!("HTTP {}: {}", status, msg), + }, + Err(_) => format!("HTTP {}", status), + }; + return Err(Error::message(error_message)); } let json: serde_json::Value = res.json()?;