@@ -326,6 +326,47 @@ pub mod schema_command {
326326 }
327327}
328328
329+ pub mod get_validator_info_command {
330+ use super :: * ;
331+
332+ command ! ( CommandMetadata :: build( "get-validator-info" , "Get validator info from all nodes." )
333+ . add_example( r#"ledger get-validator-info"# )
334+ . finalize( )
335+ ) ;
336+
337+ fn execute ( ctx : & CommandContext , params : & CommandParams ) -> Result < ( ) , ( ) > {
338+ trace ! ( "execute >> ctx {:?} params {:?}" , ctx, params) ;
339+
340+ let submitter_did = ensure_active_did ( & ctx) ?;
341+ let pool_handle = ensure_connected_pool_handle ( & ctx) ?;
342+ let wallet_handle = ensure_opened_wallet_handle ( & ctx) ?;
343+
344+ let response = Ledger :: build_get_validator_info_request ( & submitter_did)
345+ . and_then ( |request| Ledger :: sign_and_submit_request ( pool_handle, wallet_handle, & submitter_did, & request) )
346+ . map_err ( |err| handle_transaction_error ( err, None , None , None ) ) ?;
347+
348+ let responses = match serde_json:: from_str :: < HashMap < String , String > > ( & response) {
349+ Ok ( responses) => responses,
350+ Err ( err) => {
351+ let response = serde_json:: from_str :: < Response < serde_json:: Value > > ( & response)
352+ . map_err ( |err| println_err ! ( "Invalid data has been received: {:?}" , err) ) ?;
353+ return handle_transaction_response ( response) . map ( |result| println_succ ! ( "{}" , result) ) ;
354+ }
355+ } ;
356+
357+ for ( node, response) in responses {
358+ let response = serde_json:: from_str :: < Response < serde_json:: Value > > ( & response)
359+ . map_err ( |err| println_err ! ( "Invalid data has been received: {:?}" , err) ) ?;
360+ println_succ ! ( "Get validator info response for node {}:" , node) ;
361+ let _res = handle_transaction_response ( response) . map ( |result| println ! ( "{}" , result) ) ;
362+ }
363+ let res = Ok ( ( ) ) ;
364+
365+ trace ! ( "execute << {:?}" , res) ;
366+ res
367+ }
368+ }
369+
329370pub mod get_schema_command {
330371 use super :: * ;
331372
@@ -1950,6 +1991,30 @@ pub mod tests {
19501991 }
19511992 }
19521993
1994+ mod get_validator_info {
1995+ use super :: * ;
1996+
1997+ #[ test]
1998+ pub fn get_validator_info_works ( ) {
1999+ TestUtils :: cleanup_storage ( ) ;
2000+ let ctx = CommandContext :: new ( ) ;
2001+
2002+ create_and_open_wallet ( & ctx) ;
2003+ create_and_connect_pool ( & ctx) ;
2004+
2005+ new_did ( & ctx, SEED_TRUSTEE ) ;
2006+ use_did ( & ctx, DID_TRUSTEE ) ;
2007+ {
2008+ let cmd = get_validator_info_command:: new ( ) ;
2009+ let mut params = CommandParams :: new ( ) ;
2010+ cmd. execute ( & ctx, & params) . unwrap ( ) ;
2011+ }
2012+ close_and_delete_wallet ( & ctx) ;
2013+ disconnect_and_delete_pool ( & ctx) ;
2014+ TestUtils :: cleanup_storage ( ) ;
2015+ }
2016+ }
2017+
19532018 mod get_schema {
19542019 use super :: * ;
19552020
0 commit comments