@@ -73,14 +73,13 @@ pub mod nym_command {
7373 . map_err ( |err| println_err ! ( "Invalid data has been received: {:?}" , err) ) ?;
7474
7575 if let Some ( result) = response. result . as_mut ( ) {
76+ result[ "txn" ] [ "data" ] [ "role" ] = get_role_title ( & result[ "txn" ] [ "data" ] [ "role" ] ) ;
7677 result[ "role" ] = get_role_title ( & result[ "role" ] ) ;
7778 }
7879
7980 let res = handle_transaction_response ( response)
8081 . map ( |result| print_transaction_response ( result,
8182 "Nym request has been sent to Ledger." ,
82- & [ ( "reqId" , "Request ID" ) ,
83- ( "txnTime" , "Transaction time" ) ] ,
8483 None ,
8584 & mut vec ! [ ( "dest" , "Did" ) ,
8685 ( "verkey" , "Verkey" ) ,
@@ -128,9 +127,6 @@ pub mod get_nym_command {
128127 let res = handle_transaction_response ( response)
129128 . map ( |result| print_transaction_response ( result,
130129 "Following NYM has been received." ,
131- & [ ( "seqNo" , "Sequence Number" ) ,
132- ( "reqId" , "Request ID" ) ,
133- ( "txnTime" , "Transaction time" ) ] ,
134130 Some ( "data" ) ,
135131 & [ ( "identifier" , "Identifier" ) ,
136132 ( "dest" , "Dest" ) ,
@@ -194,10 +190,6 @@ pub mod attrib_command {
194190 let res = handle_transaction_response ( response)
195191 . map ( |result| print_transaction_response ( result,
196192 "Attrib request has been sent to Ledger." ,
197- & [ ( "dest" , "Dest" ) ,
198- ( "seqNo" , "Sequence Number" ) ,
199- ( "reqId" , "Request ID" ) ,
200- ( "txnTime" , "Transaction time" ) ] ,
201193 None ,
202194 & [ attribute] ) ) ;
203195
@@ -249,10 +241,6 @@ pub mod get_attrib_command {
249241 let res = handle_transaction_response ( response)
250242 . map ( |result| print_transaction_response ( result,
251243 "Following ATTRIB has been received." ,
252- & [ ( "dest" , "Did" ) ,
253- ( "seqNo" , "Sequence Number" ) ,
254- ( "reqId" , "Request ID" ) ,
255- ( "txnTime" , "Transaction time" ) ] ,
256244 None ,
257245 & [ ( "data" , "Data" ) ] ) ) ;
258246 trace ! ( "execute << {:?}" , res) ;
@@ -313,10 +301,6 @@ pub mod schema_command {
313301 let res = handle_transaction_response ( response)
314302 . map ( |result| print_transaction_response ( result,
315303 "Schema request has been sent to Ledger." ,
316- & [ ( "identifier" , "Identifier" ) ,
317- ( "seqNo" , "Sequence Number" ) ,
318- ( "reqId" , "Request ID" ) ,
319- ( "txnTime" , "Transaction time" ) ] ,
320304 Some ( "data" ) ,
321305 & [ ( "name" , "Name" ) ,
322306 ( "version" , "Version" ) ,
@@ -406,10 +390,6 @@ pub mod get_schema_command {
406390 let res = handle_transaction_response ( response)
407391 . map ( |result| print_transaction_response ( result,
408392 "Following Schema has been received." ,
409- & [ ( "dest" , "Did" ) ,
410- ( "seqNo" , "Sequence Number" ) ,
411- ( "reqId" , "Request ID" ) ,
412- ( "txnTime" , "Transaction time" ) ] ,
413393 Some ( "data" ) ,
414394 & [ ( "name" , "Name" ) ,
415395 ( "version" , "Version" ) ,
@@ -481,10 +461,6 @@ pub mod cred_def_command {
481461 let res = handle_transaction_response ( response)
482462 . map ( |result| print_transaction_response ( result,
483463 "NodeConfig request has been sent to Ledger." ,
484- & [ ( "identifier" , "Identifier" ) ,
485- ( "seqNo" , "Sequence Number" ) ,
486- ( "reqId" , "Request ID" ) ,
487- ( "txnTime" , "Transaction time" ) ] ,
488464 Some ( "data" ) ,
489465 & [ ( "primary" , "Primary Key" ) ,
490466 ( "revocation" , "Revocation Key" ) ] ) ) ;
@@ -532,10 +508,6 @@ pub mod get_cred_def_command {
532508 let res = handle_transaction_response ( response)
533509 . map ( |result| print_transaction_response ( result,
534510 "Following Credential Definition has been received." ,
535- & [ ( "identifier" , "Identifier" ) ,
536- ( "seqNo" , "Sequence Number" ) ,
537- ( "reqId" , "Request ID" ) ,
538- ( "txnTime" , "Transaction time" ) ] ,
539511 Some ( "data" ) ,
540512 & [ ( "primary" , "Primary Key" ) ,
541513 ( "revocation" , "Revocation Key" ) ] ) ) ;
@@ -601,10 +573,6 @@ pub mod node_command {
601573 let res = handle_transaction_response ( response)
602574 . map ( |result| print_transaction_response ( result,
603575 "NodeConfig request has been sent to Ledger." ,
604- & [ ( "identifier" , "Identifier" ) ,
605- ( "seqNo" , "Sequence Number" ) ,
606- ( "reqId" , "Request ID" ) ,
607- ( "txnTime" , "Transaction time" ) ] ,
608576 Some ( "data" ) ,
609577 & [ ( "alias" , "Alias" ) ,
610578 ( "node_ip" , "Node Ip" ) ,
@@ -649,10 +617,6 @@ pub mod pool_config_command {
649617 let res = handle_transaction_response ( response)
650618 . map ( |result| print_transaction_response ( result,
651619 "NodeConfig request has been sent to Ledger." ,
652- & [ ( "identifier" , "Identifier" ) ,
653- ( "seqNo" , "Sequence Number" ) ,
654- ( "reqId" , "Request ID" ) ,
655- ( "txnTime" , "Transaction time" ) ] ,
656620 None ,
657621 & [ ( "writes" , "Writes" ) ,
658622 ( "force" , "Force Apply" ) ] ) ) ;
@@ -692,9 +656,6 @@ pub mod pool_restart_command {
692656 let res = handle_transaction_response ( response)
693657 . map ( |result| print_transaction_response ( result,
694658 "Restart pool request has been sent to Ledger." ,
695- & [
696- ( "identifier" , "Identifier" ) ,
697- ( "reqId" , "Request ID" ) ] ,
698659 None ,
699660 & [
700661 ( "isSuccess" , "IsSuccess" ) ,
@@ -769,10 +730,6 @@ pub mod pool_upgrade_command {
769730 let res = handle_transaction_response ( response)
770731 . map ( |result| print_transaction_response ( result,
771732 "NodeConfig request has been sent to Ledger." ,
772- & [ ( "identifier" , "Identifier" ) ,
773- ( "seqNo" , "Sequence Number" ) ,
774- ( "reqId" , "Request ID" ) ,
775- ( "txnTime" , "Transaction time" ) ] ,
776733 None ,
777734 & [ ( "name" , "Name" ) ,
778735 ( "action" , "Action" ) ,
@@ -1171,25 +1128,63 @@ fn parse_payment_fees(fees: &Vec<&str>) -> Result<String, ()> {
11711128}
11721129
11731130fn print_transaction_response ( mut result : serde_json:: Value , title : & str ,
1174- metadata_headers : & [ ( & str , & str ) ] ,
1175- data_field : Option < & str > ,
1131+ data_sub_field : Option < & str > ,
11761132 data_headers : & [ ( & str , & str ) ] ) {
1177- if let Some ( txn_time) = result[ "txnTime" ] . as_i64 ( ) {
1178- result[ "txnTime" ] = serde_json:: Value :: String ( timestamp_to_datetime ( txn_time) )
1179- }
1180-
11811133 println_succ ! ( "{}" , title) ;
1134+
1135+ let ( metadata_headers, metadata, data) = match result[ "ver" ] . clone ( ) . as_str ( ) {
1136+ None => parse_transaction_response_v0 ( & mut result) ,
1137+ Some ( "1" ) => parse_transaction_response_v1 ( & mut result) ,
1138+ ver @ _ => return println_err ! ( "Unsupported transaction response format: {:?}" , ver)
1139+ } ;
1140+
11821141 println_succ ! ( "Metadata:" ) ;
1183- print_table ( & result, metadata_headers) ;
1184- println_succ ! ( "Data:" ) ;
1142+ print_table ( & metadata, & metadata_headers) ;
11851143
1186- let data = if data_field . is_some ( ) { & result [ data_field . unwrap ( ) ] } else { & result } ;
1144+ let data = if data_sub_field . is_some ( ) { & data [ data_sub_field . unwrap ( ) ] } else { & data } ;
11871145 let mut data_headers = data_headers. to_vec ( ) ;
11881146 data_headers. retain ( |& ( ref key, _) | !data[ key] . is_null ( ) ) ;
11891147
1148+ println_succ ! ( "Data:" ) ;
11901149 print_table ( data, & data_headers) ;
11911150}
11921151
1152+ fn parse_transaction_response_v0 ( result : & mut serde_json:: Value ) -> ( [ ( & ' static str , & ' static str ) ; 4 ] , serde_json:: Value , serde_json:: Value ) {
1153+ if let Some ( txn_time) = result[ "txnTime" ] . as_i64 ( ) {
1154+ result[ "txnTime" ] = serde_json:: Value :: String ( timestamp_to_datetime ( txn_time) )
1155+ }
1156+
1157+ let metadata_headers = [
1158+ ( "identifier" , "Identifier" ) ,
1159+ ( "seqNo" , "Sequence Number" ) ,
1160+ ( "reqId" , "Request ID" ) ,
1161+ ( "txnTime" , "Transaction time" ) ] ;
1162+
1163+ ( metadata_headers, result. clone ( ) , result. clone ( ) )
1164+ }
1165+
1166+ fn parse_transaction_response_v1 ( result : & mut serde_json:: Value ) -> ( [ ( & ' static str , & ' static str ) ; 4 ] , serde_json:: Value , serde_json:: Value ) {
1167+ if let Some ( txn_time) = result[ "txnMetadata" ] [ "txnTime" ] . as_i64 ( ) {
1168+ result[ "txnMetadata" ] [ "txnTime" ] = serde_json:: Value :: String ( timestamp_to_datetime ( txn_time) )
1169+ }
1170+
1171+ let metadata_headers = [
1172+ ( "from" , "From" ) ,
1173+ ( "seqNo" , "Sequence Number" ) ,
1174+ ( "reqId" , "Request ID" ) ,
1175+ ( "txnTime" , "Transaction time" ) ] ;
1176+
1177+ let mut metadata_obj = result[ "txnMetadata" ] . as_object ( ) . unwrap ( ) . clone ( ) ;
1178+
1179+ metadata_obj. insert ( "reqId" . to_string ( ) , result[ "txn" ] [ "metadata" ] [ "reqId" ] . clone ( ) ) ;
1180+ metadata_obj. insert ( "from" . to_string ( ) , result[ "txn" ] [ "metadata" ] [ "from" ] . clone ( ) ) ;
1181+
1182+ let metadata = serde_json:: Value :: Object ( metadata_obj) ;
1183+ let data = result[ "txn" ] [ "data" ] . clone ( ) ;
1184+
1185+ ( metadata_headers, metadata, data)
1186+ }
1187+
11931188pub fn handle_transaction_response ( response : Response < serde_json:: Value > ) -> Result < serde_json:: Value , ( ) > {
11941189 match response {
11951190 Response { op : ResponseType :: REPLY , result : Some ( result) , reason : None } => Ok ( result) ,
@@ -3526,7 +3521,7 @@ pub mod tests {
35263521 let schema_request = Ledger :: build_schema_request ( & did, schema_data) . unwrap ( ) ;
35273522 let schema_response = Ledger :: sign_and_submit_request ( pool_handle, wallet_handle, & did, & schema_request) . unwrap ( ) ;
35283523 let schema: serde_json:: Value = serde_json:: from_str ( & schema_response) . unwrap ( ) ;
3529- let seq_no = schema[ "result" ] [ "seqNo" ] . as_i64 ( ) . unwrap ( ) ;
3524+ let seq_no = schema[ "result" ] [ "txnMetadata" ] [ " seqNo"] . as_i64 ( ) . unwrap ( ) ;
35303525 seq_no. to_string ( )
35313526 }
35323527
0 commit comments