From 4bc3a1195fbdb2ec31f48f82d28e644ce881f6aa Mon Sep 17 00:00:00 2001 From: Kirill Fomichev Date: Wed, 2 Feb 2022 00:10:21 +0300 Subject: [PATCH] Use internal function for encoding accounts (#22822) * Use internal function for encoding accounts * fix tests --- rpc/src/rpc.rs | 75 +++++++++++++++++++++----------------------------- 1 file changed, 32 insertions(+), 43 deletions(-) diff --git a/rpc/src/rpc.rs b/rpc/src/rpc.rs index 6c8ad50790..2afba27b5a 100644 --- a/rpc/src/rpc.rs +++ b/rpc/src/rpc.rs @@ -1800,17 +1800,13 @@ impl JsonRpcRequestProcessor { } else { keyed_accounts .into_iter() - .map(|(pubkey, account)| RpcKeyedAccount { - pubkey: pubkey.to_string(), - account: UiAccount::encode( - &pubkey, - &account, - encoding, - None, - data_slice_config, - ), + .map(|(pubkey, account)| { + Ok(RpcKeyedAccount { + pubkey: pubkey.to_string(), + account: encode_account(&account, &pubkey, encoding, data_slice_config)?, + }) }) - .collect() + .collect::>>()? }; Ok(new_response(&bank, accounts)) } @@ -1857,17 +1853,13 @@ impl JsonRpcRequestProcessor { } else { keyed_accounts .into_iter() - .map(|(pubkey, account)| RpcKeyedAccount { - pubkey: pubkey.to_string(), - account: UiAccount::encode( - &pubkey, - &account, - encoding, - None, - data_slice_config, - ), + .map(|(pubkey, account)| { + Ok(RpcKeyedAccount { + pubkey: pubkey.to_string(), + account: encode_account(&account, &pubkey, encoding, data_slice_config)?, + }) }) - .collect() + .collect::>>()? }; Ok(new_response(&bank, accounts)) } @@ -3617,25 +3609,22 @@ pub mod rpc_full { if result.is_err() { Some(vec![None; config_accounts.addresses.len()]) } else { - let mut accounts = vec![]; - for address_str in config_accounts.addresses { - let address = verify_pubkey(&address_str)?; - accounts.push( - post_simulation_accounts - .iter() - .find(|(key, _account)| key == &address) - .map(|(pubkey, account)| { - UiAccount::encode( - pubkey, - account, - accounts_encoding, - None, - None, - ) - }), - ); - } - Some(accounts) + Some( + config_accounts + .addresses + .iter() + .map(|address_str| { + let address = verify_pubkey(address_str)?; + post_simulation_accounts + .iter() + .find(|(key, _account)| key == &address) + .map(|(pubkey, account)| { + encode_account(account, pubkey, accounts_encoding, None) + }) + .transpose() + }) + .collect::>>()?, + ) } } else { None @@ -7441,7 +7430,7 @@ pub mod tests { "jsonrpc":"2.0", "id":1, "method":"getTokenAccountsByOwner", - "params":["{}", {{"programId": "{}"}}] + "params":["{}", {{"programId": "{}"}}, {{"encoding":"base64"}}] }}"#, owner, spl_token_id(), @@ -7493,7 +7482,7 @@ pub mod tests { r#"{{ "jsonrpc":"2.0", "id":1,"method":"getTokenAccountsByOwner", - "params":["{}", {{"mint": "{}"}}] + "params":["{}", {{"mint": "{}"}}, {{"encoding":"base64"}}] }}"#, owner, mint, ); @@ -7558,7 +7547,7 @@ pub mod tests { "jsonrpc":"2.0", "id":1, "method":"getTokenAccountsByDelegate", - "params":["{}", {{"programId": "{}"}}] + "params":["{}", {{"programId": "{}"}}, {{"encoding":"base64"}}] }}"#, delegate, spl_token_id(), @@ -7576,7 +7565,7 @@ pub mod tests { "jsonrpc":"2.0", "id":1,"method": "getTokenAccountsByDelegate", - "params":["{}", {{"mint": "{}"}}] + "params":["{}", {{"mint": "{}"}}, {{"encoding":"base64"}}] }}"#, delegate, mint, );