Skip to content

Commit

Permalink
handling eth
Browse files Browse the repository at this point in the history
  • Loading branch information
gaetbout committed Sep 9, 2023
1 parent 955aa56 commit 860dee2
Show file tree
Hide file tree
Showing 5 changed files with 54 additions and 61 deletions.
2 changes: 1 addition & 1 deletion db/block.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"lastProcesssedBlockNumber":205800}
{ "lastProcesssedBlockNumber": 205800 }
55 changes: 22 additions & 33 deletions src/api.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use reqwest::{header, header::HeaderValue, Error, Url};
use serde::{Deserialize, Serialize};
use starknet::{
core::{
types::{BlockId, BlockTag, EventFilter, FieldElement, FunctionCall},
types::{BlockId, BlockTag, EmittedEvent, EventFilter, FieldElement, FunctionCall},
utils::get_selector_from_name,
},
providers::{
Expand Down Expand Up @@ -90,40 +90,29 @@ pub async fn fetch_events(
token: &Token,
from_block: u64,
to_block: u64,
) -> Result<(), reqwest::Error> {
let events = rpc_client
.get_events(
EventFilter {
from_block: Some(BlockId::Number(from_block)),
to_block: Some(BlockId::Number(to_block)),
address: Some(FieldElement::from_hex_be(token.address).unwrap()),
keys: Some(vec![vec![get_selector_from_name(token.selector).unwrap()]]),
},
None,
1000,
)
.await
.unwrap();
) -> Result<Vec<EmittedEvent>, reqwest::Error> {
let mut events = vec![];
let mut continuation_token = Some("0".to_string());

println!("{:?}", events.events.len());
println!(
"Cont token: {:?}",
events
.continuation_token
.unwrap_or("No continuation token".to_string())
);
println!("decimals: {:?}", token.decimals);
println!("threshold: {:?}", token.threshold);
let threshold = FieldElement::from((10_u128.pow(token.decimals.into())) * token.threshold);
let filtered_events: Vec<_> = events
.events
.iter()
.filter(|event| event.data[2] > threshold)
.collect();
// TODO Handle the data part 2?
println!("{:?}", filtered_events);
while let Some(cont_token) = continuation_token {
let event_page = rpc_client
.get_events(
EventFilter {
from_block: Some(BlockId::Number(from_block)),
to_block: Some(BlockId::Number(to_block)),
address: Some(FieldElement::from_hex_be(token.address).unwrap()),
keys: Some(vec![vec![get_selector_from_name(token.selector).unwrap()]]),
},
Some(cont_token),
1000,
)
.await
.unwrap();

Ok(())
continuation_token = event_page.continuation_token;
events.extend(event_page.events);
}
Ok(events)
}

async fn address_to_domain(
Expand Down
33 changes: 10 additions & 23 deletions src/logger.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use log::{Level, LevelFilter, Metadata, Record};
use log::{LevelFilter, Metadata, Record};

// use log::{debug, error, info, trace, warn};
pub struct SimpleLogger;
Expand All @@ -16,28 +16,15 @@ impl log::Log for SimpleLogger {

fn log(&self, record: &Record) {
if self.enabled(record.metadata()) {
match record.level() {
Level::Trace => {
println!(
"\t{} {:<10}:{} {:<6}{}",
date(),
record.file().unwrap(),
record.line().unwrap(),
record.level(),
record.args()
);
}
_ => {
println!(
"{} {:<10}:{} {:<6}{}",
date(),
record.file().unwrap(),
record.line().unwrap(),
record.level(),
record.args()
);
}
}
// println!(
// "{} {:<10}:{} {:<6}{}",
// date(),
// record.file().unwrap(),
// record.line().unwrap(),
// record.level(),
// record.args()
// );
println!("{} {:<6}{}", date(), record.level(), record.args());
}
}

Expand Down
18 changes: 15 additions & 3 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@ use api::Token;
use dotenv::dotenv;
use log::info;
use reqwest::Url;
use starknet::providers::{jsonrpc::HttpTransport, JsonRpcClient, Provider};
use starknet::{
core::types::FieldElement,
providers::{jsonrpc::HttpTransport, JsonRpcClient, Provider},
};
use std::error::Error;

use crate::api::fetch_events;
Expand All @@ -29,17 +32,26 @@ const TOKENS: &'static [Token] = &[ETH];
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
logger::init();
info!("Start");
check_valid_env();
let rpc_client = get_infura_client();
let current_block = rpc_client.block_number().await.unwrap();
info!("Current number: {}", current_block);

let events = fetch_events(rpc_client, &TOKENS[0], current_block - 2, current_block - 1)
let token = &TOKENS[0];
let events = fetch_events(rpc_client, token, current_block - 5, current_block - 1)
.await
.unwrap();
info!("Events: {:?}", events);
info!("Events len: {:?}", events.len());

let threshold = FieldElement::from((10_u128.pow(token.decimals.into())) * token.threshold);
let filtered_events: Vec<_> = events
.iter()
.filter(|event| event.data[2] > threshold)
.collect();
println!("{:?}", filtered_events);
// twitter::tweet("Someteaeazzhing".to_string()).await;
info!("End");

Ok(())
}
Expand Down
7 changes: 6 additions & 1 deletion token.example.json
Original file line number Diff line number Diff line change
@@ -1 +1,6 @@
{"access_token":"???","refresh_token":"???","expires":"2023-09-06T16:27:53.589878Z","scopes":["tweet.write","users.read","tweet.read","offline.access"]}
{
"access_token": "???",
"refresh_token": "???",
"expires": "2023-09-06T16:27:53.589878Z",
"scopes": ["tweet.write", "users.read", "tweet.read", "offline.access"]
}

0 comments on commit 860dee2

Please sign in to comment.