Include non-JSON response from Monero node in error

This commit is contained in:
Luke Parker
2023-11-15 22:50:24 -05:00
parent a03a1edbff
commit 30a77d863f
3 changed files with 17 additions and 19 deletions

View File

@@ -131,23 +131,21 @@ impl<R: RpcConnection> Rpc<R> {
route: &str,
params: Option<Params>,
) -> Result<Response, RpcError> {
serde_json::from_str(
std_shims::str::from_utf8(
&self
.0
.post(
route,
if let Some(params) = params {
serde_json::to_string(&params).unwrap().into_bytes()
} else {
vec![]
},
)
.await?,
let res = self
.0
.post(
route,
if let Some(params) = params {
serde_json::to_string(&params).unwrap().into_bytes()
} else {
vec![]
},
)
.map_err(|_| RpcError::InvalidNode("response wasn't utf-8"))?,
)
.map_err(|_| RpcError::InvalidNode("response wasn't json"))
.await?;
let res_str = std_shims::str::from_utf8(&res)
.map_err(|_| RpcError::InvalidNode("response wasn't utf-8"))?;
serde_json::from_str(res_str)
.map_err(|_| RpcError::InvalidNode("response wasn't json: {res_str}"))
}
/// Perform a JSON-RPC call with the specified method with the provided parameters