2021-10-21 11:55:27 +00:00
|
|
|
use web3::contract::{Contract, Options};
|
|
|
|
|
2022-01-25 22:17:28 +00:00
|
|
|
use crate::config::BlockchainConfig;
|
2021-10-21 11:55:27 +00:00
|
|
|
use super::api::connect;
|
2022-01-26 16:59:27 +00:00
|
|
|
use super::contracts::{ADAPTER, load_abi};
|
2021-10-21 16:51:01 +00:00
|
|
|
use super::errors::EthereumError;
|
2021-10-21 11:55:27 +00:00
|
|
|
use super::utils::parse_address;
|
|
|
|
|
|
|
|
pub async fn is_allowed_user(
|
2022-01-25 22:17:28 +00:00
|
|
|
config: &BlockchainConfig,
|
2021-10-21 11:55:27 +00:00
|
|
|
user_address: &str,
|
|
|
|
) -> Result<bool, EthereumError> {
|
2022-01-25 22:17:28 +00:00
|
|
|
let web3 = connect(&config.api_url)?;
|
2022-01-26 16:59:27 +00:00
|
|
|
let adapter_abi = load_abi(&config.contract_dir, ADAPTER)?;
|
|
|
|
let adapter_address = parse_address(&config.contract_address)?;
|
|
|
|
let adapter = Contract::from_json(
|
2021-10-21 11:55:27 +00:00
|
|
|
web3.eth(),
|
2022-01-26 16:59:27 +00:00
|
|
|
adapter_address,
|
|
|
|
&adapter_abi,
|
2021-10-21 11:55:27 +00:00
|
|
|
)?;
|
|
|
|
let user_address = parse_address(user_address)?;
|
2022-01-26 16:59:27 +00:00
|
|
|
let result: bool = adapter.query(
|
2021-10-21 11:55:27 +00:00
|
|
|
"isAllowedUser", (user_address,),
|
|
|
|
None, Options::default(), None,
|
|
|
|
).await?;
|
|
|
|
Ok(result)
|
|
|
|
}
|