fix: examples (#2153)
* fix: abigen example * fix: gas oracle example * fix: call override example
This commit is contained in:
parent
5f08a2d931
commit
adefb6c2f6
|
@ -32,10 +32,12 @@ async fn main() -> Result<()> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn rust_file_generation() -> Result<()> {
|
fn rust_file_generation() -> Result<()> {
|
||||||
let base_dir = "./examples/contracts/examples/abi";
|
let abi_source = "./examples/contracts/examples/abi/IERC20.json";
|
||||||
Abigen::new("IERC20", format!("{base_dir}/IERC20.json"))?
|
let out_file = std::env::temp_dir().join("ierc20.rs");
|
||||||
.generate()?
|
if out_file.exists() {
|
||||||
.write_to_file(format!("{base_dir}/ierc20.rs"))?;
|
std::fs::remove_file(&out_file)?;
|
||||||
|
}
|
||||||
|
Abigen::new("IERC20", abi_source)?.generate()?.write_to_file(out_file)?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,14 +39,19 @@ async fn blocknative() {
|
||||||
|
|
||||||
async fn etherscan() {
|
async fn etherscan() {
|
||||||
let chain = Chain::Mainnet;
|
let chain = Chain::Mainnet;
|
||||||
let api_key: String = std::env::var("ETHERSCAN_API_KEY_ETHEREUM").expect("Provide an API key");
|
let client = match Client::new_from_env(chain) {
|
||||||
if let Ok(client) = Client::new(chain, api_key) {
|
Ok(client) => client,
|
||||||
|
Err(_) => Client::builder()
|
||||||
|
.chain(chain)
|
||||||
|
.expect("Mainnet is valid")
|
||||||
|
.build()
|
||||||
|
.expect("Mainnet is valid"),
|
||||||
|
};
|
||||||
let oracle = Etherscan::new(client).category(GasCategory::Fast);
|
let oracle = Etherscan::new(client).category(GasCategory::Fast);
|
||||||
match oracle.fetch().await {
|
match oracle.fetch().await {
|
||||||
Ok(gas_price) => println!("[Etherscan]: Gas price is {gas_price:?}"),
|
Ok(gas_price) => println!("[Etherscan]: Gas price is {gas_price:?}"),
|
||||||
Err(e) => panic!("[Etherscan]: Cannot estimate gas: {e:?}"),
|
Err(e) => panic!("[Etherscan]: Cannot estimate gas: {e:?}"),
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn gas_now() {
|
async fn gas_now() {
|
||||||
|
|
|
@ -10,12 +10,27 @@ use ethers::{
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
use eyre::Result;
|
use eyre::Result;
|
||||||
use std::sync::Arc;
|
use std::{
|
||||||
|
process::{Command, Stdio},
|
||||||
|
sync::Arc,
|
||||||
|
};
|
||||||
|
|
||||||
abigen!(Greeter, "ethers-contract/tests/solidity-contracts/greeter.json",);
|
abigen!(Greeter, "ethers-contract/tests/solidity-contracts/greeter.json",);
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() -> Result<()> {
|
async fn main() -> Result<()> {
|
||||||
|
match geth_version() {
|
||||||
|
e @ Ok(false) | e @ Err(_) => {
|
||||||
|
eprint!("Error spawning geth, skipping example");
|
||||||
|
if let Err(e) = e {
|
||||||
|
eprint!(": {e}");
|
||||||
|
}
|
||||||
|
eprintln!();
|
||||||
|
return Ok(())
|
||||||
|
}
|
||||||
|
Ok(true) => {}
|
||||||
|
}
|
||||||
|
|
||||||
let geth = Geth::new().spawn();
|
let geth = Geth::new().spawn();
|
||||||
let provider = Provider::<Http>::try_from(geth.endpoint()).unwrap();
|
let provider = Provider::<Http>::try_from(geth.endpoint()).unwrap();
|
||||||
let client = Arc::new(provider);
|
let client = Arc::new(provider);
|
||||||
|
@ -75,3 +90,13 @@ fn encode_string_for_storage(s: &str) -> H256 {
|
||||||
bytes.push(len as u8 * 2);
|
bytes.push(len as u8 * 2);
|
||||||
H256::from_slice(&bytes)
|
H256::from_slice(&bytes)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn geth_version() -> Result<bool> {
|
||||||
|
Command::new("geth")
|
||||||
|
.arg("version")
|
||||||
|
.stdout(Stdio::null())
|
||||||
|
.stderr(Stdio::null())
|
||||||
|
.status()
|
||||||
|
.map(|s| s.success())
|
||||||
|
.map_err(Into::into)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue