summaryrefslogtreecommitdiff
path: root/src/datatype/json_rpc.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/datatype/json_rpc.rs')
-rw-r--r--src/datatype/json_rpc.rs10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/datatype/json_rpc.rs b/src/datatype/json_rpc.rs
index 3eed9a2..e3a046a 100644
--- a/src/datatype/json_rpc.rs
+++ b/src/datatype/json_rpc.rs
@@ -1,7 +1,7 @@
use rustc_serialize::{json, Decodable, Encodable};
use time;
-use http::{AuthClient, Client};
+use http::{AuthClient, Client, Response};
use super::Url;
@@ -32,8 +32,12 @@ impl<E: Encodable> RpcRequest<E> {
let body = json::encode(self).expect("couldn't encode RpcRequest");
let resp_rx = client.post(url, Some(body.into_bytes()));
let resp = resp_rx.recv().expect("no RpcRequest response received");
- let data = try!(resp.map_err(|err| format!("{}", err)));
- String::from_utf8(data).map_err(|err| format!("{}", err))
+
+ match resp {
+ Response::Success(data) => String::from_utf8(data.body).or_else(|err| Err(format!("{}", err))),
+ Response::Failed(data) => Err(format!("{}", data)),
+ Response::Error(err) => Err(format!("{}", err))
+ }
}
}