Use internal function for encoding accounts (#22822)

* Use internal function for encoding accounts

* fix tests
This commit is contained in:
Kirill Fomichev 2022-02-02 00:10:21 +03:00 committed by GitHub
parent 65f8f43665
commit 4bc3a1195f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 32 additions and 43 deletions

View File

@ -1800,17 +1800,13 @@ impl JsonRpcRequestProcessor {
} else { } else {
keyed_accounts keyed_accounts
.into_iter() .into_iter()
.map(|(pubkey, account)| RpcKeyedAccount { .map(|(pubkey, account)| {
pubkey: pubkey.to_string(), Ok(RpcKeyedAccount {
account: UiAccount::encode( pubkey: pubkey.to_string(),
&pubkey, account: encode_account(&account, &pubkey, encoding, data_slice_config)?,
&account, })
encoding,
None,
data_slice_config,
),
}) })
.collect() .collect::<Result<Vec<_>>>()?
}; };
Ok(new_response(&bank, accounts)) Ok(new_response(&bank, accounts))
} }
@ -1857,17 +1853,13 @@ impl JsonRpcRequestProcessor {
} else { } else {
keyed_accounts keyed_accounts
.into_iter() .into_iter()
.map(|(pubkey, account)| RpcKeyedAccount { .map(|(pubkey, account)| {
pubkey: pubkey.to_string(), Ok(RpcKeyedAccount {
account: UiAccount::encode( pubkey: pubkey.to_string(),
&pubkey, account: encode_account(&account, &pubkey, encoding, data_slice_config)?,
&account, })
encoding,
None,
data_slice_config,
),
}) })
.collect() .collect::<Result<Vec<_>>>()?
}; };
Ok(new_response(&bank, accounts)) Ok(new_response(&bank, accounts))
} }
@ -3617,25 +3609,22 @@ pub mod rpc_full {
if result.is_err() { if result.is_err() {
Some(vec![None; config_accounts.addresses.len()]) Some(vec![None; config_accounts.addresses.len()])
} else { } else {
let mut accounts = vec![]; Some(
for address_str in config_accounts.addresses { config_accounts
let address = verify_pubkey(&address_str)?; .addresses
accounts.push( .iter()
post_simulation_accounts .map(|address_str| {
.iter() let address = verify_pubkey(address_str)?;
.find(|(key, _account)| key == &address) post_simulation_accounts
.map(|(pubkey, account)| { .iter()
UiAccount::encode( .find(|(key, _account)| key == &address)
pubkey, .map(|(pubkey, account)| {
account, encode_account(account, pubkey, accounts_encoding, None)
accounts_encoding, })
None, .transpose()
None, })
) .collect::<Result<Vec<_>>>()?,
}), )
);
}
Some(accounts)
} }
} else { } else {
None None
@ -7441,7 +7430,7 @@ pub mod tests {
"jsonrpc":"2.0", "jsonrpc":"2.0",
"id":1, "id":1,
"method":"getTokenAccountsByOwner", "method":"getTokenAccountsByOwner",
"params":["{}", {{"programId": "{}"}}] "params":["{}", {{"programId": "{}"}}, {{"encoding":"base64"}}]
}}"#, }}"#,
owner, owner,
spl_token_id(), spl_token_id(),
@ -7493,7 +7482,7 @@ pub mod tests {
r#"{{ r#"{{
"jsonrpc":"2.0", "jsonrpc":"2.0",
"id":1,"method":"getTokenAccountsByOwner", "id":1,"method":"getTokenAccountsByOwner",
"params":["{}", {{"mint": "{}"}}] "params":["{}", {{"mint": "{}"}}, {{"encoding":"base64"}}]
}}"#, }}"#,
owner, mint, owner, mint,
); );
@ -7558,7 +7547,7 @@ pub mod tests {
"jsonrpc":"2.0", "jsonrpc":"2.0",
"id":1, "id":1,
"method":"getTokenAccountsByDelegate", "method":"getTokenAccountsByDelegate",
"params":["{}", {{"programId": "{}"}}] "params":["{}", {{"programId": "{}"}}, {{"encoding":"base64"}}]
}}"#, }}"#,
delegate, delegate,
spl_token_id(), spl_token_id(),
@ -7576,7 +7565,7 @@ pub mod tests {
"jsonrpc":"2.0", "jsonrpc":"2.0",
"id":1,"method": "id":1,"method":
"getTokenAccountsByDelegate", "getTokenAccountsByDelegate",
"params":["{}", {{"mint": "{}"}}] "params":["{}", {{"mint": "{}"}}, {{"encoding":"base64"}}]
}}"#, }}"#,
delegate, mint, delegate, mint,
); );