@@ -666,6 +666,17 @@ impl<S: Read + Write> RawClient<S> {
666666}
667667
668668impl < T : Read + Write > ElectrumApi for RawClient < T > {
669+ fn raw_call ( & self , call : & Call ) -> Result < serde_json:: Value , Error > {
670+ let req = Request :: new_id (
671+ self . last_id . fetch_add ( 1 , Ordering :: SeqCst ) ,
672+ & call. 0 ,
673+ call. 1 . to_vec ( ) ,
674+ ) ;
675+ let result = self . call ( req) ?;
676+
677+ Ok ( result)
678+ }
679+
669680 fn batch_call ( & self , batch : & Batch ) -> Result < Vec < serde_json:: Value > , Error > {
670681 let mut raw = Vec :: new ( ) ;
671682
@@ -1283,4 +1294,35 @@ mod test {
12831294 assert ! ( client. transaction_broadcast_raw( & [ 0x00 ] ) . is_err( ) ) ;
12841295 assert ! ( client. server_features( ) . is_ok( ) ) ;
12851296 }
1297+
1298+ #[ test]
1299+ fn test_raw_call ( ) {
1300+ use types:: Param ;
1301+
1302+ let client = RawClient :: new ( get_test_server ( ) , None ) . unwrap ( ) ;
1303+
1304+ let params = vec ! [
1305+ Param :: String (
1306+ "cc2ca076fd04c2aeed6d02151c447ced3d09be6fb4d4ef36cb5ed4e7a3260566" . to_string( ) ,
1307+ ) ,
1308+ Param :: Bool ( false ) ,
1309+ ] ;
1310+ let call = ( "blockchain.transaction.get" . to_string ( ) , params) ;
1311+
1312+ let resp = client. raw_call ( & call) . unwrap ( ) ;
1313+
1314+ assert_eq ! (
1315+ resp,
1316+ "01000000000101000000000000000000000000000000000000000000000000000\
1317+ 0000000000000ffffffff5403f09c091b4d696e656420627920416e74506f6f6c3\
1318+ 13139ae006f20074d6528fabe6d6d2ab1948d50b3d991e2a0821df74358ed9c255\
1319+ 3af00c7a61f97771ca0acee106e0400000000000000cbec00802461f905fffffff\
1320+ f0354ceac2a000000001976a91411dbe48cc6b617f9c6adaf4d9ed5f625b1c7cb5\
1321+ 988ac0000000000000000266a24aa21a9ed2e578bce2ca6c6bc9359377345d8e98\
1322+ 5dd5f90c78421ffa6efa5eb60428e698c0000000000000000266a24b9e11b6d2f6\
1323+ 21d7ec3f45a5eca89d3ea6a294cdf3a042e973009584470a12916111e2caa01200\
1324+ 000000000000000000000000000000000000000000000000000000000000000000\
1325+ 00000"
1326+ )
1327+ }
12861328}
0 commit comments